Alexandre Julliard
603130cc38
winebuild: Align raw data size instead of virtual size in PE sections.
...
Use the aligned size to set code/data sizes.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 10:54:10 +01:00
Alexandre Julliard
8a3064899a
winebuild: Add support for building apiset data.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 22:10:20 +01:00
Alexandre Julliard
39f6ab55a9
winebuild: Add support for generating data-only DLLs.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-16 22:05:33 +01:00
Alexandre Julliard
b53773cff2
tools: Move the output buffer functions to the common header.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-10 22:00:17 +01:00
Alexandre Julliard
d969d02e21
tools: Move target CPU and platform handling to the common tools.h header.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-18 11:50:30 +01:00
Alexandre Julliard
61e210f196
winebuild: Get rid of PowerPC support.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-18 11:16:19 +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
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
Alexandre Julliard
2f0401c783
winebuild: Add a more generic way to create directories and sections in fake dlls.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-21 14:03:54 +02:00
Alexandre Julliard
f9ee0d2f05
tools: Avoid using wine/port.h.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 18:03:11 +02:00
Alexandre Julliard
c878a0a4c0
winebuild: Use strarrays for the argument lists.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 14:45:39 +02:00
Alexandre Julliard
d6d5a21721
winebuild: Unify the strarray implementation with the one from makedep.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 14:45:39 +02:00
Martin Storsjö
5de4766475
winebuild: Fix building for arm with older versions of binutils.
...
Use an explicit "movw" instead of a plain "mov", as the immediates
might not fit in a narrow thumb mov instruction. Newer versions
of binutils deduces this implicitly.
Signed-off-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 23:41:05 +02:00
Alexandre Julliard
abf4747ba7
winebuild: Simplify constant loading on ARM.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-24 22:01:42 +01:00
Alexandre Julliard
b1fe783ade
winebuild: Fix relay entry points for Thumb mode.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-24 22:01:42 +01:00
Alexandre Julliard
ad43872669
winebuild: Add a --prefer-native option to set a Wine-specific flag in the PE header.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 11:06:06 +01:00
Jacek Caban
ea5e89a545
winebuild: Make mingw a separated platform from msvc.
...
Based on winegcc.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 09:02:04 +01:00
Alexandre Julliard
7c48d8d44b
winebuild: Support non-PIC mode for ARM targets.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-19 09:42:30 +01:00
Alexandre Julliard
c1a700f018
winebuild: Generate Thumb2-compatible assembly code on ARM.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-19 09:42:26 +01:00
Kevin Puetz
bf5893f489
winebuild: Find main/wmain in static libraries.
...
Have the winebuild -spec.o include an undefined .globl referencing
symbols we know the winecrt0 entry point will eventually reference,
so ld knows about that need while scanning library archives.
Signed-off-by: Kevin Puetz <PuetzKevinA@JohnDeere.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-30 22:18:21 +01:00
Alexandre Julliard
d5c089f5fa
winebuild: Set PE timestamps to a hash of the file name.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44061
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-29 22:23:08 +01:00
Martin Storsjo
849d08b0ae
winebuild: Use the right arm64 page/pageoff relocation syntax for darwin.
...
Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-18 22:32:25 +02:00
Alexandre Julliard
b2d09cbb21
winebuild: Add generation of system call thunks.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-07 13:07:23 +02:00
Alexandre Julliard
66fb3802d3
winebuild: Allow specifying a spec file also for Unix libraries.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-06 16:17:24 +02:00
Paul Gofman
19aa67d170
winebuild: Correct hotpatching prologue in import thunks for x86_64.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48938
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-26 20:58:50 +02:00
Alexandre Julliard
7193243431
winebuild: Don't use a constructor for dll modules either.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-21 11:27:33 +02:00
Alexandre Julliard
6c4046fef1
winebuild: Add --fixup-ctors option to allow intercepting constructors in .so files.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:03 +02:00
Alexandre Julliard
a4677fa23a
winebuild: Only generate a constructor for dll modules.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-15 20:03:30 +02:00
Alexandre Julliard
9dc348a071
winebuild: Add a --builtin option to mark PE files as builtins.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-18 21:13:13 +01:00
Alexandre Julliard
0fd3b1eab9
Revert "winebuild: Quote stdcall decored symbols."
...
This reverts commit a3e1fe936e
.
It breaks with older binutils.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-27 10:41:20 +02:00
Jacek Caban
a3e1fe936e
winebuild: Quote stdcall decored symbols.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-26 17:41:15 +02:00
Jacek Caban
dd1a83c20a
winebuild: Don't include aliases in importlib .def files.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-26 17:41:11 +02:00
Alexandre Julliard
cf619dd419
winebuild: Add -import entry point flag to generate hotpatchable import thunks.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 22:51:55 +02:00
Alexandre Julliard
ded2e82f16
winebuild: Don't even try to resolve imports for PE builds.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 19:23:11 +02:00
Alexandre Julliard
6c41cc6152
winebuild: Support relay debugging for PE builtin dlls.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 22:55:50 +02:00
Alexandre Julliard
e755ea2374
winebuild: Support Windows-style name mangling for fastcall functions.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 14:07:15 +02:00
Alexandre Julliard
32b365c9c5
winebuild: List stubs in the import library .def files.
...
This way we have the full list of names to compute ordinal hints.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-20 12:33:14 +01:00
Alexandre Julliard
265366c1e7
winebuild: Use proper RVAs for the export table on Windows.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 10:05:24 +01:00
Huw Davies
b2585d98b2
winebuild: Use the correct section label on macOS.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-13 10:59:13 +01:00
Alexandre Julliard
e4b9a501a3
winebuild: Support generating a .spec.o file for Windows platforms.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-12 10:02:04 +01:00
Alexandre Julliard
7d41cde73f
winebuild: Add a helper for generating data directories.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 18:28:19 +01:00
Alexandre Julliard
7555fd57e3
winebuild: Add a helper for generating RVA pointers.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 18:28:19 +01:00
Alexandre Julliard
ef9bda4c96
winebuild: Add a helper for decorating stdcall function names.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 18:28:19 +01:00
Alexandre Julliard
a3229faf59
winebuild: Output the module filename along with the stub data.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 18:28:19 +01:00
Alexandre Julliard
0cdab409ad
winebuild: Rename BuildSpec32File() for consistency.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 18:28:17 +01:00
Alexandre Julliard
aa0572f0a2
winebuild: Open the output file only when needed.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 14:49:02 +01:00
Alexandre Julliard
9d0ba368da
winebuild: Make relay entry points hot-patchable.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-01 17:48:26 +01:00
Alexandre Julliard
26bbbb7b73
winebuild: Use stdcall for fastcall wrappers.
...
This allows catching mismatched argument lists.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-01 17:48:26 +01:00
Alexandre Julliard
84a7a7ea07
winebuild: Add support for fastcall entry points.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-27 23:01:29 +01:00
Alexandre Julliard
28debd82fc
winebuild: Make thiscall an entry point flag instead of a function type.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-27 23:00:56 +01:00