On Sun, 29 Dec 2024, Pali Rohár wrote:

On Sunday 29 December 2024 17:35:03 Martin Storsjö wrote:
On Sat, 14 Dec 2024, Pali Rohár wrote:

This allows to define in lib-common/*.def.in files symbols with I386
stdcall @<num> suffixes and therefore have one common def file for all
platforms.
---
mingw-w64-crt/Makefile.am | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 27c18eebd774..2bbc26adb364 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -4263,13 +4263,13 @@ lib32/%.def: lib-common/%.def.in
        $(MKDIR_P) $(@D) && $(CPP) -x c $< -Wp,-w -undef -P 
-I$(top_srcdir)/def-include -DDEF_I386 > $@

lib64/%.def: lib-common/%.def.in
-       $(MKDIR_P) $(@D) && $(CPP) -x c $< -Wp,-w -undef -P 
-I$(top_srcdir)/def-include -DDEF_X64 > $@
+       $(MKDIR_P) $(@D) && $(CPP) -x c $< -Wp,-w -undef -P 
-I$(top_srcdir)/def-include -DDEF_X64 | sed -E 's/^([^ ]+)@[0-9]+( |$$)/\1\2/' > $@

What's the purpose of the second group, ( |$$), here - why can't we just
leave it out and skip the \2 bit in the replacement?

In case the @ character is in the middle of the symbol name (e.g.
fastcall mangling or msvc c++ mangling) then it must not be dropped as
it is not stdcall suffix.

Basically symbol name starts at the beginning of line (there can be
leading spaces) and after it is either end of line or space separator.

So the point of "( |$$)" is to match separator.

Ah, right.

I think it would be good to include examples of the various def file lines that we have taken into account, in the commit message, as a clear example/reminder to the reader about all these cases (i.e. also mention the @ordinal case).

// Martin

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to