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