[PATCH] winegcc: Align sections in PE files to page size.
Martin Storsjö
martin at martin.st
Mon Jul 13 10:33:16 CDT 2020
On Mon, 13 Jul 2020, Rémi Bernon wrote:
> This makes sure it will be possible to mmap the section directly instead
> of having to copy them. It then also makes perf able to figure the code
> origin for Wine modules.
>
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
>
> I'm resending just this one as I am now trying to upstream PE support
> directly in Linux perf. This should still be useful to avoid copying
> sections when Wine modules are loaded.
>
> tools/winegcc/winegcc.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
> index 29c1b0549d3..24da839fd83 100644
> --- a/tools/winegcc/winegcc.c
> +++ b/tools/winegcc/winegcc.c
> @@ -547,6 +547,9 @@ static strarray *get_link_args( struct options *opts, const char *output_name )
> else if (!opts->strip)
> strarray_add(link_args, "-Wl,-debug:dwarf");
>
> + if (!try_link( opts->prefix, link_args, "-Wl,--file-alignment:0x1000"))
> + strarray_add( link_args, "-Wl,--file-alignment:0x1000" );
> +
Am I reading this correctly that it checks whether the linker supports the
option, and only uses it in that case?
The LLD mingw frontend doesn't support this option at the moment I
believe, but it shouldn't be hard to add support for it.
The option format seems a bit confusing though.
The section the option is added into, for PLATFORM_WINDOWS, is for
building with MSVC tools (or clang in MSVC mode) with a link.exe style
linker (in practice, lld-link).
In that case, the option should be "-filealign:<n>" (passed via a compiler
driver, so "-Wl,-filealign:<n>"), while the mingw style linker option (for
the section further up) would be "-Wl,--file-alignment,<n>".
And even if it actually would work, with the argument separated with a
colon, instead of as a separate argument (separated with a comma when
using -Wl), I'd prefer if you'd use the more standard form without colons,
as the LLD mingw frontend at least doesn't handle using colons as
separator there.
// Martin
More information about the wine-devel
mailing list