powerpc64 dot-sym cleanup

Alan Modra amodra@bigpond.net.au
Sat Mar 5 11:43:00 GMT 2005


The other day I noticed that new ABI objects linked against old
libraries result in lots of dynamic undefined dot-symbols in
executables.  They aren't needed, so tweak func_desc_adjust to
force them local.  The other change in update_plt_info is really just
cosmetic since it doesn't correct any known failures.

	* elf64-ppc.c (update_plt_info): Don't mark new ABI call syms
	with is_func.
	(func_desc_adjust): Force dot-syms local in executables as well
	as shared libs.

Index: bfd/elf64-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
retrieving revision 1.193
diff -u -p -r1.193 elf64-ppc.c
--- bfd/elf64-ppc.c	28 Feb 2005 23:00:40 -0000	1.193
+++ bfd/elf64-ppc.c	5 Mar 2005 11:38:05 -0000
@@ -4213,7 +4213,9 @@ update_plt_info (bfd *abfd, struct ppc_l
     }
   ent->plt.refcount += 1;
   eh->elf.needs_plt = 1;
-  eh->is_func = 1;
+  if (eh->elf.root.root.string[0] == '.'
+      && eh->elf.root.root.string[1] != '\0')
+    eh->is_func = 1;
   return TRUE;
 }
 
@@ -5486,12 +5488,10 @@ func_desc_adjust (struct elf_link_hash_e
      been imported from another library.  Function code syms that
      are really in the library we must leave global to prevent the
      linker dragging in a definition from a static library.  */
-  force_local
-    = (info->shared
-       && (!fh->elf.def_regular
-	   || fdh == NULL
-	   || !fdh->elf.def_regular
-	   || fdh->elf.forced_local));
+  force_local = (!fh->elf.def_regular
+		 || fdh == NULL
+		 || !fdh->elf.def_regular
+		 || fdh->elf.forced_local);
   _bfd_elf_link_hash_hide_symbol (info, &fh->elf, force_local);
 
   return TRUE;

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Binutils mailing list