Commit Graph

6066 Commits

Author SHA1 Message Date
Alexandre Julliard 414e1c8ad5 winebuild: Avoid resolving standard C functions with static importlibs.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:19:33 +01:00
Alexandre Julliard a7074ea2a3 winegcc: Don't link directly to ntdll or ntoskrnl import libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:19:33 +01:00
Alexandre Julliard a9b5bb326a makefiles: Use static importlibs on all platforms.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-16 17:44:42 +01:00
Alexandre Julliard 32cfdb5496 winebuild: Escape invalid characters in the dll name for static import libraries.
This is necessary for things like vulkan-1.dll.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-16 16:44:19 +01:00
Alexandre Julliard 04d8725080 makefiles: Directly generate resources also for non-registered typelibs.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-16 10:22:51 +01:00
Eric Pouech 25d2c954ad winedump: Define and dump POGO codeview record.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-15 20:01:04 +01:00
Eric Pouech 95c96399d8 winedump: Setup a context in symbol_dumper for S_SEPCODE.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-15 20:00:57 +01:00
Alexandre Julliard 665ebe2a7a makefiles: Do not install external libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-15 12:07:44 +01:00
Alexandre Julliard 9248dbaf0d makefiles: Always use winebuild to build static libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-14 21:19:48 +01:00
Alexandre Julliard b78ef40ab1 makefiles: Don't copy the source makefile into the sub-directory stub makefiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-14 12:29:24 +01:00
Alexandre Julliard b9f6d1be00 tools: Upgrade the config.guess/config.sub scripts.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-14 12:29:24 +01:00
Alexandre Julliard ef8b871e12 makefiles: Make importlib dependencies point to their respective dll.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-12 22:42:51 +01:00
Alexandre Julliard c94f44f9b4 widl: Search for imported typelibs in the library search path.
Add a -L option to specify that path.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-12 22:42:51 +01:00
Alexandre Julliard ae44ba97b0 widl: Support loading typelibs stored inside PE files.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49803
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-12 15:49:50 +01:00
Alexandre Julliard 4f0bb2e45f wrc: Support only single directories with the -I option.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-12 11:40:15 +01:00
Alexandre Julliard ad53edfab9 widl: Windows file formats are always little-endian.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 17:50:24 +01:00
Alexandre Julliard af046fe636 wmc: Windows file formats are always little-endian.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 17:50:24 +01:00
Alexandre Julliard 923461f3d8 wrc: Windows file formats are always little-endian.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 17:36:17 +01:00
Alexandre Julliard 7c5761ed40 wrc: Ignore the target option.
Nothing in resource files depends on the pointer size.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 17:30:41 +01:00
Alexandre Julliard 6ebcc54a5c makefiles: Explicitly import all the needed libraries.
Don't rely on winegcc adding any default libraries.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 13:28:19 +01:00
Eric Pouech 8de547d3e6 winedump: Better handle display of nested symbol entries.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:16:04 +01:00
Eric Pouech 2447b0131b winedump: Properly indent multi lines symbol records.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:15:35 +01:00
Eric Pouech cdcf5b6f08 winedump: No longer print current function.
It's not really relevant when inline sites are present.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:15:27 +01:00
Eric Pouech c77db0064a winedump: Pass start offset when dumping symbols.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:15:17 +01:00
Eric Pouech f1e0753cdd winedump: Add some more codeview entries.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:14:51 +01:00
Eric Pouech 97c3c41732 winedump: Better detect whether IPI stream is present.
Old version of PDB files can have a stream #4 which is not an IPI stream
Available documentation isn't 100% clear about when IPI has been
introduced.
So decide that IPI is present when header of stream looks like a type
stream header.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 20:14:26 +01:00
Jacek Caban c41059bcba winebuild: Use find_clang_tool for ld and nm tools.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 18:58:32 +01:00
Alexandre Julliard 37c0f5c690 makefiles: Substitute all defined variables in the main makefile.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 13:44:44 +01:00
Martin Storsjö 77e9095435 ntdll: Remove stack gap in syscalls on arm.
Store the original stack pointer (on entry to the syscall dispatcher)
in syscall_frame; the stack pointer itself is incremented by
"pop {r0-r3}" right before calling the syscall itself.

This fixes unwinding from functions set up by syscalls, like
KiUserExceptionDispatcher.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 22:02:56 +01:00
Martin Storsjö aa256deedd winedump: Rewrite dumping of packed ARM unwind info.
This differs slightly from the official docs (which is clear in some
places, vague in others, and contradictory in some places), based
on actual observed behaviour.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 22:02:56 +01:00
Martin Storsjö ae7979a42d winedump: Fix printing of the prologue version of the "ldr lr, [sp], #offset" opcode.
This isn't mentioned in the documentation (which only writes out the
instruction that is executed while unwinding, i.e. the mirror form of
it), but a prologue version of this instruction would look like this.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 22:02:55 +01:00
Martin Storsjö 22d2b61a64 winedump: Distinguish between 16 and 32 bit nop opcodes in ARM unwind data.
Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 22:02:55 +01:00
Martin Storsjö 825e8d8105 winedump: Print the whole multibyte unwind opcode for arm.
Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 22:02:55 +01:00
Eric Pouech 27b7a96d9b winedump: Fix computation of signed integers in codeview symbol's annotations.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 21:00:57 +01:00
Martin Storsjö 9e9509f307 winebuild: Fix relay entry points in Thumb mode with binutils/ELF and LLVM/PE.
b1fe783ade fixed relay entry points
in Thumb mode when assembled with Clang/LLVM in ELF mode, but broke
them when assembled with binutils as (and PE mode with LLVM didn't
work either before or after).

When/where the thumb bit is applied on symbols varies a lot between
assemblers; this is a notoriously vague and undocumented area.

After a .thumb_func directive, binutils as considers the next
non-local symbol as a thumb symbol, to have the thumb bit set.
LLVM's built-in assembler considers the next symbol, local or not,
to be a thumb symbol. (Just noting for reference for possible
solutions, this particular difference didn't play a role so far.)

Secondly, in a symbol difference expression like this:

    .long symbol1 - symbol2

Binutils as ignores the potential thumb state for both symbols and
just calculates the raw distance. LLVM does include the thumb bit
in symbol1 but ignores it in symbol2.

Finally, for PE targets, the linker sets the thumb bit on all
absolute addresses pointing to the text section, regardless of any
.thumb_func directives at assembly time. (I.e., the
__wine_spec_relay_entry_points entry in .L__wine_spec_relay_descr
gets the bit set even if it wasn't marked as .thumb_func.)

Therefore, mark __wine_spec_relay_entry_points as .thumb_func, as
the absolute address to it will end up with the thumb bit set in
PE builds in any case.

Don't mark the individual relay entry pointers as thumb functions
(the code still is generated as thumb as there hasn't been any
mode switch back to arm mode); this makes the differences calculated
correctly (both LLVM and binutils ignore the thumb state of the
subtracted label).

If desired, one could change __wine_spec_relay_entry_point_%d into
local labels with a .L prefix, just as before
b1fe783ade again, it doesn't make
any difference in this form.

Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-05 11:58:42 +01:00
Eric Pouech d33ff5d888 mscvpdb.h: Update some line number oriented definitions.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech 23fe1ad987 winedump: Also dump library name for a module.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech f64c6e611b winedump: Dump index leaves (TPI).
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech fd959ef060 mscvpdb.h: Add definition for friend function v3.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech 1131b32685 winedump: Add some missing next record computation for type leaf.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Eric Pouech f0b8518333 mscvpdb.h: Update symbol header for linetab2's block size.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 20:32:51 +01:00
Huw Davies be59553410 wmc: Remove struct and enum typedefs.
This has the side effect of fixing the build on macOS after
commit 2c1b815363.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-26 10:39:34 +02:00
Alistair Leslie-Hughes d09d4d97e0 cng.sys: New dll.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48981
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 18:53:31 +02:00
Damjan Jovanovic f01b028d58 wrc: Use sysctl instead of /proc/curproc/file on FreeBSD.
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 18:50:59 +02:00
Damjan Jovanovic 2c1b815363 wmc: Use sysctl instead of /proc/curproc/file on FreeBSD.
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 18:50:59 +02:00
Damjan Jovanovic c1e83ae9fb winegcc: Use sysctl instead of /proc/curproc/file on FreeBSD.
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 18:50:59 +02:00
Damjan Jovanovic 6d67748154 widl: Use sysctl instead of /proc/curproc/file on FreeBSD.
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 18:50:59 +02:00
Alexandre Julliard 30fb17bda0 makefiles: Add support for importing PE system libraries using the -l option.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 11:05:07 +02:00
Alexandre Julliard d1248c8a0c makefiles: Don't try to link a library to itself.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-25 11:04:11 +02:00
Alexandre Julliard 5a8f7d1f74 winebuild: Wrap 16-bit fake dlls in a PE module.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51564
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-21 14:53:32 +02:00