From b3e71ad1bcce2a2fe4d8800805b05efb6cadc45b Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 4 Sep 2012 13:34:49 +0000 Subject: [PATCH] bfd/ 2012-08-05 Maciej W. Rozycki * elf32-vax.c (elf_vax_adjust_dynamic_symbol): Don't allocate PLT slots for local symbols. ld/ 2012-08-05 Maciej W. Rozycki * ld-vax-elf: New directory. * ld-vax-elf/plt-local-lib.dd: New test. * ld-vax-elf/plt-local-lib.ld: New test linker script. * ld-vax-elf/plt-local-lib.s: New test source. * ld-vax-elf/plt-local.dd: New test. * ld-vax-elf/plt-local.ld: New test linker script. * ld-vax-elf/plt-local.s: New test source. * ld-vax-elf/plt-local-hidden-pic.s: New test source. * ld-vax-elf/plt-local-rehidden-pic.s: New test source. * ld-vax-elf/vax-elf.exp: New test script. --- bfd/ChangeLog | 5 +++++ bfd/elf32-vax.c | 32 +++++++------------------------- ld/testsuite/ChangeLog | 13 +++++++++++++ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 20622bfbf11..9d65fce1f80 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2012-08-05 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_adjust_dynamic_symbol): Don't allocate + PLT slots for local symbols. + 2012-08-28 Matthew Gretton-Dann Apply from mainline diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c index 84ec972563f..6258d960975 100644 --- a/bfd/elf32-vax.c +++ b/bfd/elf32-vax.c @@ -933,39 +933,21 @@ elf_vax_adjust_dynamic_symbol (info, h) if (h->type == STT_FUNC || h->needs_plt) { - if (! info->shared - && !h->def_dynamic - && !h->ref_dynamic - /* We must always create the plt entry if it was referenced - by a PLTxxO relocation. In this case we already recorded - it as a dynamic symbol. */ - && h->dynindx == -1) + if (h->plt.refcount <= 0 + || SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)) { /* This case can occur if we saw a PLTxx reloc in an input file, but the symbol was never referred to by a dynamic - object. In such a case, we don't actually need to build - a procedure linkage table, and we can just do a PCxx - reloc instead. */ - BFD_ASSERT (h->needs_plt); + object, or if all references were garbage collected. In + such a case, we don't actually need to build a procedure + linkage table, and we can just do a PCxx reloc instead. */ h->plt.offset = (bfd_vma) -1; - return TRUE; - } - - /* GC may have rendered this entry unused. */ - if (h->plt.refcount <= 0) - { h->needs_plt = 0; - h->plt.offset = (bfd_vma) -1; return TRUE; } - /* Make sure this symbol is output as a dynamic symbol. */ - if (h->dynindx == -1) - { - if (! bfd_elf_link_record_dynamic_symbol (info, h)) - return FALSE; - } - s = bfd_get_linker_section (dynobj, ".plt"); BFD_ASSERT (s != NULL); diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8407cb47eb8..48ce92e5a11 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2012-08-05 Maciej W. Rozycki + + * ld-vax-elf: New directory. + * ld-vax-elf/plt-local-lib.dd: New test. + * ld-vax-elf/plt-local-lib.ld: New test linker script. + * ld-vax-elf/plt-local-lib.s: New test source. + * ld-vax-elf/plt-local.dd: New test. + * ld-vax-elf/plt-local.ld: New test linker script. + * ld-vax-elf/plt-local.s: New test source. + * ld-vax-elf/plt-local-hidden-pic.s: New test source. + * ld-vax-elf/plt-local-rehidden-pic.s: New test source. + * ld-vax-elf/vax-elf.exp: New test script. + 2012-08-28 Matthew Gretton-Dann Apply mainline patches -- 2.47.2