[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