https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69917
--- Comment #9 from Ilya Enkovich <ienkovich at gcc dot gnu.org> --- Looking through Solaris configs I see two places where transparent aliases are not followed. This patch should fix this. Any help with testing is very appreciated. diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index e56e554..368c2d2 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -137,8 +137,9 @@ along with GCC; see the file COPYING3. If not see /* The Solaris assembler wants a .local for non-exported aliases. */ #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \ do { \ - const char *declname = \ - IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \ + tree id = DECL_ASSEMBLER_NAME (DECL); \ + ultimate_transparent_alias_target (&id); \ + const char *declname = IDENTIFIER_POINTER (id); \ ASM_OUTPUT_DEF ((FILE), declname, \ IDENTIFIER_POINTER (TARGET)); \ if (! TREE_PUBLIC (DECL)) \ diff --git a/gcc/config/sol2.c b/gcc/config/sol2.c index 560a07b..47b41fd 100644 --- a/gcc/config/sol2.c +++ b/gcc/config/sol2.c @@ -142,8 +142,11 @@ solaris_assemble_visibility (tree decl, int vis ATTRIBUTE_UNUSED) }; const char *name, *type; + tree id = DECL_ASSEMBLER_NAME (decl); - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); + while (IDENTIFIER_TRANSPARENT_ALIAS (id)) + id = TREE_CHAIN (id); + name = IDENTIFIER_POINTER (id); type = visibility_types[vis]; fprintf (asm_out_file, "\t.%s\t", type);