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@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.