Also hide symbols without PLT nor GOT references.

bfd/

2011-09-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/13177
	* elflink.c (elf_gc_sweep_symbol): Also hide symbols without PLT
	nor GOT references.

ld/testsuite/

2011-09-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/13177
	* ld-elf/pr13177.d: New.
	* ld-elf/pr13177.s: Likewise.
This commit is contained in:
H.J. Lu 2011-09-16 01:17:16 +00:00
parent fd91d41947
commit 1a766c6843
5 changed files with 42 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13177
* elflink.c (elf_gc_sweep_symbol): Also hide symbols without PLT
nor GOT references.
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975

View File

@ -11689,13 +11689,18 @@ struct elf_gc_sweep_symbol_info
static bfd_boolean
elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data)
{
if ((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
&& !h->root.u.def.section->gc_mark
&& !(h->root.u.def.section->owner->flags & DYNAMIC))
if (((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
&& !h->root.u.def.section->gc_mark
&& (!(h->root.u.def.section->owner->flags & DYNAMIC)
|| (h->plt.refcount <= 0
&& h->got.refcount <= 0)))
|| (h->root.type == bfd_link_hash_undefined
&& h->plt.refcount <= 0
&& h->got.refcount <= 0))
{
struct elf_gc_sweep_symbol_info *inf =
(struct elf_gc_sweep_symbol_info *) data;
(struct elf_gc_sweep_symbol_info *) data;
(*inf->hide_symbol) (inf->info, h, TRUE);
}

View File

@ -1,3 +1,9 @@
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13177
* ld-elf/pr13177.d: New.
* ld-elf/pr13177.s: Likewise.
2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12975

View File

@ -0,0 +1,11 @@
#source: pr13177.s
#ld: --gc-sections -shared
#readelf: -s -D --wide
#notarget: arc-*-* d30v-*-* dlx-*-* i960-*-* or32-*-* pj*-*-*
#notarget: hppa64-*-* i370-*-* i860-*-* ia64-*-* mep-*-* mn10200-*-*
# generic linker targets don't support --gc-sections, nor do a bunch of others
#failif
#...
.*: 0+0 +0 +NOTYPE +GLOBAL +DEFAULT +UND bar
#...

View File

@ -0,0 +1,9 @@
.section .text.foo,"ax",%progbits
.globl foo
.type foo, %function
foo:
.byte 0
.section .text.opt_out,"ax",%progbits
.type opt_out, %function
opt_out:
.dc.a bar