From 712cd1d4a93a5937b149707cbe132ab96995415b Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sun, 7 Nov 2004 10:51:45 +0000 Subject: [PATCH] * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL and check for undefweak symbols with non-default visibility. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-m68k.c | 21 +++++++-------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d411ed7d8..849761eda 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2004-11-07 Andreas Schwab + + * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Use + SYMBOL_CALLS_LOCAL and check for undefweak symbols with + non-default visibility. + 2004-11-01 Mark Mitchell * elf32-arm.c (elf32_arm_symbian_begin_write_processing): Clear diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index 42a3764d9..44863f2d5 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -936,9 +936,10 @@ elf_m68k_adjust_dynamic_symbol (info, h) if (h->type == STT_FUNC || h->needs_plt) { - if (! info->shared - && !h->def_dynamic - && !h->ref_dynamic + if ((h->plt.refcount <= 0 + || SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)) /* 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. */ @@ -946,19 +947,11 @@ elf_m68k_adjust_dynamic_symbol (info, h) { /* 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; } -- 2.11.4.GIT