Hi!

Rainer pointed out that __PFX__ and __FIXPTPFX__ prefix replacement is done
solely for libgcc-std.ver.in and not for the *.ver files in config.
I've used the __PFX__ prefix even in config/i386/libgcc-glibc.ver because it
was used for similar symbols in libgcc-std.ver.in, and that results in those
symbols being STB_LOCAL in libgcc_s.so.1.  Tests still work because gcc by
default uses -static-libgcc when linking (unlike g++ etc.), but would
have failed when using -shared-libgcc (but I see nothing in the testsuite
actually testing with -shared-libgcc, so am not adding tests).

With the patch, libgcc_s.so.1 now exports
__fixtfbitint@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__fixxfbitint@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitintbf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitinthf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitinttf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
__floatbitintxf@@GCC_14.0.0 FUNC GLOBAL DEFAULT
on x86_64-linux which it wasn't before.

Tested on x86_64-linux, committed to trunk as obvious.

2024-02-02  Jakub Jelinek  <ja...@redhat.com>

        PR target/113700
        * config/i386/libgcc-glibc.ver (GCC_14.0.0): Remove __PFX prefixes
        from symbol names.

--- libgcc/config/i386/libgcc-glibc.ver.jj      2024-01-03 22:33:38.380691216 
+0100
+++ libgcc/config/i386/libgcc-glibc.ver 2024-02-02 11:39:59.374523748 +0100
@@ -229,10 +229,10 @@ GCC_13.0.0 {
 
 %inherit GCC_14.0.0 GCC_13.0.0
 GCC_14.0.0 {
-  __PFX__fixxfbitint
-  __PFX__fixtfbitint
-  __PFX__floatbitintbf
-  __PFX__floatbitinthf
-  __PFX__floatbitintxf
-  __PFX__floatbitinttf
+  __fixxfbitint
+  __fixtfbitint
+  __floatbitintbf
+  __floatbitinthf
+  __floatbitintxf
+  __floatbitinttf
 }

        Jakub

Reply via email to