From 2516a1ee84e4ca7604bf7d9da5cc3a4aaa95fba5 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 23 Dec 2008 10:23:53 +0000 Subject: [PATCH] * elf32-m68k.c (elf_m68k_discard_copies): Use SYMBOL_CALLS_LOCAL. (elf_m68k_relocate_section): Use SYMBOL_CALLS_LOCAL and SYMBOL_REFERENCES_LOCAL. (elf_m68k_relocate_section): Likewise. --- bfd/ChangeLog | 19 +++++++++++++------ bfd/elf32-m68k.c | 32 +++++++++----------------------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 02ae371ad13..07e101768c4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2008-12-23 Andreas Schwab + + * elf32-m68k.c (elf_m68k_discard_copies): Use SYMBOL_CALLS_LOCAL. + (elf_m68k_relocate_section): Use SYMBOL_CALLS_LOCAL and + SYMBOL_REFERENCES_LOCAL. + (elf_m68k_relocate_section): Likewise. + 2008-12-23 Nick Clifton * elf-bfd.h (struct bfd_elf_section_data): Remove indirect_relocs @@ -126,7 +133,7 @@ * cpu-avr.c (compatible): Makes avr-6 compatible only with itself. 2008-12-04 Andreas Krebbel - + * elf64-s390.c (elf_s390_check_relocs): Initialize htab->elf.dynobj if necessary. @@ -323,7 +330,7 @@ relocs. For overflow, emit additional messages for the new 16-bit relocs as well as R_CRIS_16_GOTPLT and R_CRIS_16_GOT. (elf_cris_finish_dynamic_symbol): Use elf_cris_finish_dynamic_symbol - instead of plain casts. Check new hash entry member + instead of plain casts. Check new hash entry member reg_got_refcount when checking whether to emit a GOT entry. (elf_cris_finish_dynamic_sections): Update head comment to warn about emitting relocs here. Use a temporary variable when testing @@ -376,7 +383,7 @@ Leave addend zero on LD DTPMOD dynamic reloc. 2008-11-19 Bob Wilson - + * xtensa-modules.c (sysregs): Add MMID, VECBASE, EPC5, EPC6, EPC7, EXCSAVE5, EXCSAVE6, EXCSAVE7, EPS5, EPS6, EPS7, CPENABLE, SCOMPARE1, and THREADPTR registers. @@ -439,7 +446,7 @@ (Slot_inst16b_get_field_fns, Slot_inst16b_set_field_fns): Likewise. (xtensa_modules): Update number of fields, operands, iclasses and opcodes. - + 2008-11-19 Nix * elf.c (swap_out_syms) [USE_STT_COMMON]: Fix syntax error. @@ -457,7 +464,7 @@ * elf32-arm.c (elf32_arm_merge_eabi_attributes): Merge half-precision attributes. (elf32_arm_copy_one_eabi_other_attribute): New. - (elf32_arm_copy_other_attribute_list): New. + (elf32_arm_copy_other_attribute_list): New. 2008-11-18 Nick Clifton @@ -492,7 +499,7 @@ 2008-11-14 Tristan Gingold - * configure.com: Handle bfd_default_target_size, BFD_HOST_LONG_LONG, + * configure.com: Handle bfd_default_target_size, BFD_HOST_LONG_LONG, BFD_HOST_64BIT_LONG_LONG, BFD_HOSTPTR_T, bfd_file_ptr. Generate bfdver.h. * vms-hdr.c (_bfd_vms_write_hdr): Use strdup/free instead of alloca. diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index adf401a91ac..cb7eb5e47d2 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -2980,9 +2980,7 @@ elf_m68k_discard_copies (h, inf) if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; - if (!h->def_regular - || (!info->symbolic - && !h->forced_local)) + if (!SYMBOL_CALLS_LOCAL (info, h)) { if ((info->flags & DF_TEXTREL) == 0) { @@ -3205,10 +3203,9 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section, dyn = elf_hash_table (info)->dynamic_sections_created; if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) || (info->shared - && (info->symbolic - || h->dynindx == -1 - || h->forced_local) - && h->def_regular)) + && SYMBOL_REFERENCES_LOCAL (info, h)) + || (ELF_ST_VISIBILITY (h->other) + && h->root.type == bfd_link_hash_undefweak)) { /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined @@ -3348,17 +3345,12 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section, break; - case R_68K_PC8: - case R_68K_PC16: - case R_68K_PC32: - if (h == NULL - || (info->shared - && h->forced_local)) - break; - /* Fall through. */ case R_68K_8: case R_68K_16: case R_68K_32: + case R_68K_PC8: + case R_68K_PC16: + case R_68K_PC32: if (info->shared && r_symndx != 0 && (input_section->flags & SEC_ALLOC) != 0 @@ -3368,10 +3360,7 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section, && ((r_type != R_68K_PC8 && r_type != R_68K_PC16 && r_type != R_68K_PC32) - || (h != NULL - && h->dynindx != -1 - && (!info->symbolic - || !h->def_regular)))) + || !SYMBOL_CALLS_LOCAL (info, h))) { Elf_Internal_Rela outrel; bfd_byte *loc; @@ -3675,10 +3664,7 @@ elf_m68k_finish_dynamic_symbol (output_bfd, info, h, sym) The entry in the global offset table will already have been initialized in the relocate_section function. */ if (info->shared - && (info->symbolic - || h->dynindx == -1 - || h->forced_local) - && h->def_regular) + && SYMBOL_REFERENCES_LOCAL (info, h)) { rela.r_info = ELF32_R_INFO (0, R_68K_RELATIVE); rela.r_addend = bfd_get_signed_32 (output_bfd, -- 2.30.2