This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Don't strip section defining _SDA_BASE_


Prior to 93d1b056 _SDA_BASE_ used to be defined in a linker script
output section.  Now _SDA_BASE_ is defined in an input section that is
subject to being stripped.  If the section is stripped we don't output
the symbol, which results in --emit-relocs trying to emit relocs with
dangling references to _SDA_BASE_.

	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Arrange to keep
	.sdata/.sdata2 when _SDA_BASE_/_SDA2_BASE_ should be output
	for --emit-relocs.

diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index bc793d7..c4a9543 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -6304,6 +6304,16 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
       sda->root.u.def.section = htab->elf.hgot->root.u.def.section;
       sda->root.u.def.value = htab->elf.hgot->root.u.def.value;
     }
+  if (info->emitrelocations)
+    {
+      struct elf_link_hash_entry *sda = htab->sdata[0].sym;
+
+      if (sda != NULL && sda->ref_regular)
+	sda->root.u.def.section->flags |= SEC_KEEP;
+      sda = htab->sdata[1].sym;
+      if (sda != NULL && sda->ref_regular)
+	sda->root.u.def.section->flags |= SEC_KEEP;
+    }
 
   if (htab->glink != NULL
       && htab->glink->size != 0
@@ -6396,12 +6406,15 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
 	       || s == htab->sgotplt
 	       || s == htab->sbss
 	       || s == htab->dynbss
-	       || s == htab->dynsbss
-	       || s == htab->sdata[0].section
-	       || s == htab->sdata[1].section)
+	       || s == htab->dynsbss)
 	{
 	  /* Strip these too.  */
 	}
+      else if (s == htab->sdata[0].section
+	       || s == htab->sdata[1].section)
+	{
+	  strip_section = (s->flags & SEC_KEEP) == 0;
+	}
       else if (CONST_STRNEQ (bfd_get_section_name (htab->elf.dynobj, s),
 			     ".rela"))
 	{

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]