Check relocations in note sections for --gc-sections.

bfd/

2011-06-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/12851
	* elflink.c (elf_gc_sweep): Don't check SHT_NOTE sections here.
	(bfd_elf_gc_sections): Also check SHT_NOTE sections.

ld/testsuite/

2011-06-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/12851
	* ld-elf/pr12851.d: New.
	* ld-elf/pr12851.s: Likewise.
This commit is contained in:
H.J. Lu 2011-06-09 04:52:15 +00:00
parent 6122085426
commit 2400775011
5 changed files with 38 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2011-06-08 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12851
* elflink.c (elf_gc_sweep): Don't check SHT_NOTE sections here.
(bfd_elf_gc_sections): Also check SHT_NOTE sections.
2011-06-08 Tristan Gingold <gingold@adacore.com>
* makefile.vms (OBJS): Add elfxx-ia64.obj

View File

@ -11728,10 +11728,9 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
o->gc_mark = first->gc_mark;
}
else if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
|| (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0
|| elf_section_data (o)->this_hdr.sh_type == SHT_NOTE)
|| (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
{
/* Keep debug, special and SHT_NOTE sections. */
/* Keep debug and special sections. */
o->gc_mark = 1;
}
@ -12013,8 +12012,12 @@ bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
continue;
/* Also keep SHT_NOTE sections. */
for (o = sub->sections; o != NULL; o = o->next)
if ((o->flags & (SEC_EXCLUDE | SEC_KEEP)) == SEC_KEEP && !o->gc_mark)
if ((o->flags & SEC_EXCLUDE) == 0
&& ((o->flags & SEC_KEEP) != 0
|| elf_section_data (o)->this_hdr.sh_type == SHT_NOTE)
&& !o->gc_mark)
if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
return FALSE;
}

View File

@ -1,3 +1,9 @@
2011-06-08 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12851
* ld-elf/pr12851.d: New.
* ld-elf/pr12851.s: Likewise.
2011-06-07 H.J. Lu <hongjiu.lu@intel.com>
* ld-elf/elf.exp: Build symbol3.a and symbol3w.a.

View File

@ -0,0 +1,14 @@
#source: pr12851.s
#source: start.s
#ld: --gc-sections
#readelf: -s --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: alpha-*-* hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
#xfail: cr16-*-* crx-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
#...
+.* _.stapsdt.base
#pass

View File

@ -0,0 +1,5 @@
.section .note.stapsdt,"?","note"
.dc.a _.stapsdt.base
.section .stapsdt.base,"a","progbits"
_.stapsdt.base: .space 1
.size _.stapsdt.base,1