[PATCH] winegcc: Align sections in PE files to page size.

Rémi Bernon rbernon at codeweavers.com
Mon Jul 13 10:39:30 CDT 2020


On 2020-07-13 17:33, Martin Storsjö wrote:
> 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

Yes sorry, I'll move that to the PLATFORM_MINGW part, with comma as 
separator. I don't think the PLATFORM_WINDOWS case matters much as it's 
not supposed to be loaded with the Wine loader IIRC.
-- 
Rémi Bernon <rbernon at codeweavers.com>



More information about the wine-devel mailing list