OSDN Git Service

bfd/
authorbwilson <bwilson>
Thu, 12 Apr 2007 15:52:00 +0000 (15:52 +0000)
committerbwilson <bwilson>
Thu, 12 Apr 2007 15:52:00 +0000 (15:52 +0000)
* elf32-xtensa.c (elf_xtensa_gc_mark_hook): Don't follow references
from Xtensa property sections.
ld/
* emulparams/elf32xtensa.sh (OTHER_SECTIONS): KEEP property sections.

bfd/ChangeLog
bfd/elf32-xtensa.c
ld/ChangeLog
ld/emulparams/elf32xtensa.sh

index 26a6f4d..6934c30 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-12  Bob Wilson  <bob.wilson@acm.org>
+       
+       * elf32-xtensa.c (elf_xtensa_gc_mark_hook): Don't follow references
+       from Xtensa property sections.
+       
 2007-04-12  Alan Modra  <amodra@bigpond.net.au>
 
        * elf32-spu.c (needs_ovl_stub): Test that spu_elf_section_data
index 1d6fb42..10e00aa 100644 (file)
@@ -969,6 +969,19 @@ elf_xtensa_gc_mark_hook (asection *sec,
                         struct elf_link_hash_entry *h,
                         Elf_Internal_Sym *sym)
 {
+  /* Property sections are marked "KEEP" in the linker scripts, but they
+     should not cause other sections to be marked.  (This approach relies
+     on elf_xtensa_discard_info to remove property table entries that
+     describe discarded sections.  Alternatively, it might be more
+     efficient to avoid using "KEEP" in the linker scripts and instead use
+     the gc_mark_extra_sections hook to mark only the property sections
+     that describe marked sections.  That alternative does not work well
+     with the current property table sections, which do not correspond
+     one-to-one with the sections they describe, but that should be fixed
+     someday.) */
+  if (xtensa_is_property_section (sec))
+    return NULL;
+
   if (h != NULL)
     switch (ELF32_R_TYPE (rel->r_info))
       {
index e38237f..5ea8cac 100644 (file)
@@ -1,3 +1,7 @@
+2007-04-12  Bob Wilson  <bob.wilson@acm.org>
+       
+       * emulparams/elf32xtensa.sh (OTHER_SECTIONS): KEEP property sections.
+       
 2007-04-10  Richard Henderson  <rth@redhat.com>
 
        * ldlang.c (relax_sections): Initialize and increment
index f342433..216d761 100644 (file)
@@ -36,7 +36,7 @@ OTHER_SDATA_SECTIONS="
   }
 "
 OTHER_SECTIONS="
-  .xt.lit       0 : { *(.xt.lit${RELOCATING+ .xt.lit.* .gnu.linkonce.p.*}) }
-  .xt.insn      0 : { *(.xt.insn${RELOCATING+ .gnu.linkonce.x.*}) }
-  .xt.prop      0 : { *(.xt.prop${RELOCATING+ .xt.prop.* .gnu.linkonce.prop.*}) }
+  .xt.lit       0 : { KEEP (*(.xt.lit${RELOCATING+ .xt.lit.* .gnu.linkonce.p.*})) }
+  .xt.insn      0 : { KEEP (*(.xt.insn${RELOCATING+ .gnu.linkonce.x.*})) }
+  .xt.prop      0 : { KEEP (*(.xt.prop${RELOCATING+ .xt.prop.* .gnu.linkonce.prop.*})) }
 "