On Wed, 2011-11-02 at 13:18 -0400, David Edelsohn wrote: > The two new functions have mistakes because I did not realize the > semantics of HAVE_GAS_HIDDEN. HAVE_GAS_HIDDEN is not a macro to be > tested at runtime, but a macro tested at compile time.
I'm sorry, I didn't realize that either. Does the following fix your problem? Peter * config/rs6000/rs6000.c (USE_HIDDEN_LINKONCE): New define. (get_ppc476_thunk_name): Use it. (rs6000_code_end): Likewise. Index: config/rs6000/rs6000.c =================================================================== --- config/rs6000/rs6000.c (revision 180786) +++ config/rs6000/rs6000.c (working copy) @@ -27949,6 +27949,12 @@ rs6000_save_toc_in_prologue_p (void) return (cfun && cfun->machine && cfun->machine->save_toc_in_prologue); } +#ifdef HAVE_GAS_HIDDEN +# define USE_HIDDEN_LINKONCE 1 +#else +# define USE_HIDDEN_LINKONCE 0 +#endif + /* Fills in the label name that should be used for a 476 link stack thunk. */ void @@ -27956,7 +27962,7 @@ get_ppc476_thunk_name (char name[32]) { gcc_assert (TARGET_LINK_STACK); - if (HAVE_GAS_HIDDEN) + if (USE_HIDDEN_LINKONCE) sprintf (name, "__ppc476.get_thunk"); else ASM_GENERATE_INTERNAL_LABEL (name, "LPPC476_", 0); @@ -27983,7 +27989,7 @@ rs6000_code_end (void) TREE_PUBLIC (decl) = 1; TREE_STATIC (decl) = 1; - if (HAVE_GAS_HIDDEN) + if (USE_HIDDEN_LINKONCE) { DECL_COMDAT_GROUP (decl) = DECL_ASSEMBLER_NAME (decl); targetm.asm_out.unique_section (decl, 0);