diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2004-10-21 15:28:33 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2004-10-21 15:28:33 +0000 |
commit | dfeffb9fe1d18c568b06be976da294b928753821 (patch) | |
tree | a9a545e8f649638c4037871759a0197c809e8a97 /ld/ldmain.c | |
parent | dc4f76f8692f3a67a06f0d39d555ccc368166021 (diff) | |
download | gdb-dfeffb9fe1d18c568b06be976da294b928753821.zip gdb-dfeffb9fe1d18c568b06be976da294b928753821.tar.gz gdb-dfeffb9fe1d18c568b06be976da294b928753821.tar.bz2 |
bfd/
2004-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR 463
* aoutx.h (aout_link_input_section_std): Pass proper hash entry
to linker reloc_overflow callback.
(aout_link_input_section_ext): Likewise.
(aout_link_reloc_link_order): Likewise.
* coff-a29k.c (coff_a29k_relocate_section): Likewise.
* coff-alpha.c (alpha_ecoff_get_relocated_section_contents):
Likewise.
(alpha_relocate_section): Likewise.
* coff-arm.c (coff_arm_relocate_section): Likewise.
* coff-h8300.c (h8300_reloc16_extra_cases): Likewise.
* coff-h8500.c (extra_case): Likewise.
* coff-i960.c (coff_i960_relocate_section): Likewise.
* coff-mcore.c (coff_mcore_relocate_section): Likewise.
* coff-mips.c (mips_relocate_section): Likewise.
* coff-or32.c (coff_or32_relocate_section): Likewise.
* coff-ppc.c (coff_ppc_relocate_section): Likewise.
* coff-rs6000.c (xcoff_ppc_relocate_section): Likewise.
* coff-sh.c (sh_relocate_section): Likewise.
* coff-tic80.c (coff_tic80_relocate_section): Likewise.
* coff-w65.c (w65_reloc16_extra_cases): Likewise.
* coff-z8k.c (extra_case): Likewise.
* coff64-rs6000.c (xcoff64_ppc_relocate_section): Likewise.
* cofflink.c (_bfd_coff_reloc_link_order): Likewise.
(_bfd_coff_generic_relocate_section): Likewise.
* ecoff.c (ecoff_reloc_link_order): Likewise.
* elf-hppa.h (elf_hppa_relocate_section): Likewise.
* elf-m10200.c (mn10200_elf_relocate_section): Likewise.
* elf-m10300.c (mn10300_elf_relocate_section): Likewise.
* elf32-arm.h (elf32_arm_relocate_section): Likewise.
* elf32-avr.c (elf32_avr_relocate_section): Likewise.
* elf32-cr16c.c (elf32_cr16c_relocate_section): Likewise.
* elf32-cris.c (cris_elf_relocate_section): Likewise.
* elf32-crx.c (elf32_crx_relocate_section): Likewise.
* elf32-d10v.c (elf32_d10v_relocate_section): Likewise.
* elf32-fr30.c (fr30_elf_relocate_section): Likewise.
* elf32-frv.c (elf32_frv_relocate_section): Likewise.
* elf32-h8300.c (elf32_h8_relocate_section): Likewise.
* elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
* elf32-i370.c (i370_elf_relocate_section): Likewise.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-i860.c (elf32_i860_relocate_section): Likewise.
* elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
* elf32-iq2000.c (iq2000_elf_relocate_section): Likewise.
* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
* elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-mcore.c (mcore_elf_relocate_section): Likewise.
* elf32-msp430.c (elf32_msp430_relocate_section): Likewise.
* elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elf32-sh.c (sh_elf_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
* elf32-v850.c (v850_elf_relocate_section): Likewise.
* elf32-vax.c (elf_vax_relocate_section): Likewise.
* elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
* elf64-mmix.c (mmix_elf_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* elf64-s390.c (elf_s390_relocate_section): Likewise.
* elf64-sh64.c (sh_elf64_relocate_section): Likewise.
* elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
* elflink.c (elf_reloc_link_order): Likewise.
* elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
* elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise.
(_bfd_elf_mips_get_relocated_section_contents): Likewise.
* linker.c (_bfd_generic_reloc_link_order): Likewise.
* pdp11.c (pdp11_aout_link_input_section): Likewise.
(aout_link_reloc_link_order): Likewise.
* reloc.c (bfd_generic_get_relocated_section_contents):
Likewise.
* xcofflink.c (xcoff_reloc_link_order): Likewise.
* simple.c (simple_dummy_reloc_overflow): Updated.
include/
2004-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR 463
* bfdlink.h (bfd_link_callbacks): Add a pointer to struct
bfd_link_hash_entry to reloc_overflow.
ld/
2004-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR 463
* ldmain.c (reloc_overflow): Accept a pointer to struct
bfd_link_hash_entry. Report symbol location for relocation
overflow.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r-- | ld/ldmain.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c index dc2efa2..7344da2 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -137,8 +137,8 @@ static bfd_boolean undefined_symbol (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma, bfd_boolean); static bfd_boolean reloc_overflow - (struct bfd_link_info *, const char *, const char *, bfd_vma, - bfd *, asection *, bfd_vma); + (struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, + const char *, bfd_vma, bfd *, asection *, bfd_vma); static bfd_boolean reloc_dangerous (struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma); static bfd_boolean unattached_reloc @@ -1386,6 +1386,7 @@ int overflow_cutoff_limit = 10; static bfd_boolean reloc_overflow (struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry *entry, const char *name, const char *reloc_name, bfd_vma addend, @@ -1408,7 +1409,32 @@ reloc_overflow (struct bfd_link_info *info ATTRIBUTE_UNUSED, return TRUE; } - einfo (_(" relocation truncated to fit: %s %T"), reloc_name, name); + if (entry) + { + while (entry->type == bfd_link_hash_indirect + || entry->type == bfd_link_hash_warning) + entry = entry->u.i.link; + switch (entry->type) + { + case bfd_link_hash_undefined: + case bfd_link_hash_undefweak: + einfo (_(" relocation truncated to fit: %s against undefined symbol `%T'"), + reloc_name, entry->root.string); + break; + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + einfo (_(" relocation truncated to fit: %s against symbol `%T' defined in %A section in %B"), + reloc_name, entry->root.string, + entry->u.def.section, entry->u.def.section->owner); + break; + default: + abort (); + break; + } + } + else + einfo (_(" relocation truncated to fit: %s against `%T'"), + reloc_name, name); if (addend != 0) einfo ("+%v", addend); einfo ("\n"); |