bfd/
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 21 Oct 2004 15:28:33 +0000 (15:28 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 21 Oct 2004 15:28:33 +0000 (15:28 +0000)
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.

70 files changed:
bfd/ChangeLog
bfd/aoutx.h
bfd/coff-a29k.c
bfd/coff-alpha.c
bfd/coff-arm.c
bfd/coff-h8300.c
bfd/coff-h8500.c
bfd/coff-i960.c
bfd/coff-mcore.c
bfd/coff-mips.c
bfd/coff-or32.c
bfd/coff-ppc.c
bfd/coff-rs6000.c
bfd/coff-sh.c
bfd/coff-tic80.c
bfd/coff-w65.c
bfd/coff-z8k.c
bfd/coff64-rs6000.c
bfd/cofflink.c
bfd/ecoff.c
bfd/elf-hppa.h
bfd/elf-m10200.c
bfd/elf-m10300.c
bfd/elf32-arm.h
bfd/elf32-avr.c
bfd/elf32-cr16c.c
bfd/elf32-cris.c
bfd/elf32-crx.c
bfd/elf32-d10v.c
bfd/elf32-fr30.c
bfd/elf32-frv.c
bfd/elf32-h8300.c
bfd/elf32-hppa.c
bfd/elf32-i370.c
bfd/elf32-i386.c
bfd/elf32-i860.c
bfd/elf32-ip2k.c
bfd/elf32-iq2000.c
bfd/elf32-m32r.c
bfd/elf32-m68hc1x.c
bfd/elf32-m68k.c
bfd/elf32-mcore.c
bfd/elf32-msp430.c
bfd/elf32-openrisc.c
bfd/elf32-ppc.c
bfd/elf32-s390.c
bfd/elf32-sh.c
bfd/elf32-sparc.c
bfd/elf32-v850.c
bfd/elf32-vax.c
bfd/elf32-xstormy16.c
bfd/elf64-alpha.c
bfd/elf64-mmix.c
bfd/elf64-ppc.c
bfd/elf64-s390.c
bfd/elf64-sh64.c
bfd/elf64-sparc.c
bfd/elf64-x86-64.c
bfd/elflink.c
bfd/elfxx-ia64.c
bfd/elfxx-mips.c
bfd/linker.c
bfd/pdp11.c
bfd/reloc.c
bfd/simple.c
bfd/xcofflink.c
include/ChangeLog
include/bfdlink.h
ld/ChangeLog
ld/ldmain.c

index b640031e1f528fadd78ed9e2c8bd0a769c66c625..f561ab98fca304a168717ff9652244b183a5c7e5 100644 (file)
@@ -1,3 +1,81 @@
+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.
+
 2004-10-20  Andreas Schwab  <schwab@suse.de>
 
        * elf32-m68k.c (elf_m68k_plt_sym_val): New function.
index 4fa529cf5076889996d9d2e3565a1d64c2f59666..d629d80d466e172038cdc00e176846843091a19c 100644 (file)
@@ -5158,7 +5158,7 @@ aout_link_input_section_std (finfo, input_bfd, input_section, relocs,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else if (r_extern)
                  name = strings + GET_WORD (input_bfd,
                                             syms[r_index].e_strx);
@@ -5170,8 +5170,9 @@ aout_link_input_section_std (finfo, input_bfd, input_section, relocs,
                    name = bfd_section_name (input_bfd, s);
                  }
                if (! ((*finfo->info->callbacks->reloc_overflow)
-                      (finfo->info, name, howto->name,
-                       (bfd_vma) 0, input_bfd, input_section, r_addr)))
+                      (finfo->info, (h ? &h->root : NULL), name,
+                       howto->name, (bfd_vma) 0, input_bfd,
+                       input_section, r_addr)))
                  return FALSE;
              }
              break;
@@ -5569,7 +5570,7 @@ aout_link_input_section_ext (finfo, input_bfd, input_section, relocs,
                    const char *name;
 
                    if (h != NULL)
-                     name = h->root.root.string;
+                     name = NULL;
                    else if (r_extern
                             || r_type == (unsigned int) RELOC_BASE10
                             || r_type == (unsigned int) RELOC_BASE13
@@ -5584,7 +5585,8 @@ aout_link_input_section_ext (finfo, input_bfd, input_section, relocs,
                        name = bfd_section_name (input_bfd, s);
                      }
                    if (! ((*finfo->info->callbacks->reloc_overflow)
-                          (finfo->info, name, howto_table_ext[r_type].name,
+                          (finfo->info, (h ? &h->root : NULL), name,
+                           howto_table_ext[r_type].name,
                            r_addend, input_bfd, input_section, r_addr)))
                      return FALSE;
                  }
@@ -5753,7 +5755,7 @@ aout_link_reloc_link_order (finfo, o, p)
              abort ();
            case bfd_reloc_overflow:
              if (! ((*finfo->info->callbacks->reloc_overflow)
-                    (finfo->info,
+                    (finfo->info, NULL,
                      (p->type == bfd_section_reloc_link_order
                       ? bfd_section_name (finfo->output_bfd,
                                           pr->u.section)
index 444dbc2a775d382dabc9f9f08b07fd70b5eb1cf8..a78eb9339a68a8d11a8183ee2e5035154795bf66 100644 (file)
@@ -532,7 +532,7 @@ coff_a29k_relocate_section (output_bfd, info, input_bfd, input_section,
          if (symndx == -1)
            name = "*ABS*";
          else if (h != NULL)
-           name = h->root.root.string;
+           name = NULL;
          else if (sym == NULL)
            name = "*unknown*";
          else if (sym->_n._n_n._n_zeroes == 0
@@ -546,9 +546,9 @@ coff_a29k_relocate_section (output_bfd, info, input_bfd, input_section,
            }
 
          if (! ((*info->callbacks->reloc_overflow)
-                (info, name, howto_table[rel->r_type].name, (bfd_vma) 0,
-                 input_bfd, input_section,
-                 rel->r_vaddr - input_section->vma)))
+                (info, (h ? &h->root : NULL), name,
+                 howto_table[rel->r_type].name, (bfd_vma) 0, input_bfd,
+                 input_section, rel->r_vaddr - input_section->vma)))
            return FALSE;
        }
     }
index 2acb800cb5f63c5700dbe7b447ee8279f1126135..68dd76527860ce06b0619cacddd0c8934d32253a 100644 (file)
@@ -1145,7 +1145,8 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
              break;
            case bfd_reloc_overflow:
              if (! ((*link_info->callbacks->reloc_overflow)
-                    (link_info, bfd_asymbol_name (*rel->sym_ptr_ptr),
+                    (link_info, NULL,
+                     bfd_asymbol_name (*rel->sym_ptr_ptr),
                      rel->howto->name, rel->addend, input_bfd,
                      input_section, rel->address)))
                goto error_return;
@@ -1960,7 +1961,8 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
                      name = bfd_section_name (input_bfd,
                                               symndx_to_section[r_symndx]);
                    if (! ((*info->callbacks->reloc_overflow)
-                          (info, name, alpha_howto_table[r_type].name,
+                          (info, NULL, name,
+                           alpha_howto_table[r_type].name,
                            (bfd_vma) 0, input_bfd, input_section,
                            r_vaddr - input_section->vma)))
                      return FALSE;
index 1c3a7e3c39521e898c5d5c804cc9b771e6972a9a..05229caeabc23eec4faa95fa61f1a14a0c52c84b 100644 (file)
@@ -1795,7 +1795,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.string;
+             name = NULL;
            else
              {
                name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
@@ -1804,8 +1804,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0, input_bfd,
-                   input_section, rel->r_vaddr - input_section->vma)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_vaddr - input_section->vma)))
              return FALSE;
          }
        }
index 4cd8829f9a29d8544df3c6d03377cdd31acf6806..0e07fb1673e2e33ad6805561e1406726a694bc89 100644 (file)
@@ -685,7 +685,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       if (gap < -128 || gap > 126)
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -716,7 +717,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       if (gap > 32766 || gap < -32768)
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -805,7 +807,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       else
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -828,7 +831,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       if (gap < -128 || gap > 126)
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -874,7 +878,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       if (gap < -128 || gap > 126)
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -1073,7 +1078,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
       if (gap < -128 || gap > 126)
        {
          if (! ((*link_info->callbacks->reloc_overflow)
-                (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                (link_info, NULL,
+                 bfd_asymbol_name (*reloc->sym_ptr_ptr),
                  reloc->howto->name, reloc->addend, input_section->owner,
                  input_section, reloc->address)))
            abort ();
@@ -1155,7 +1161,8 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
            else
              {
                if (! ((*link_info->callbacks->reloc_overflow)
-                      (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                      (link_info, NULL,
+                       bfd_asymbol_name (*reloc->sym_ptr_ptr),
                        reloc->howto->name, reloc->addend, input_section->owner,
                        input_section, reloc->address)))
                  abort ();
index a94e4a30ec6343c8aabb2d104cffb001fc7824fc..3c5cf2295b23ad9160d25062abd5b13136db22c4 100644 (file)
@@ -254,7 +254,8 @@ extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
        if (gap > 128 || gap < -128)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
@@ -277,7 +278,8 @@ extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
        if (gap > 32767 || gap < -32768)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
index 3a04753dcd446373ecee370cd7f926b9ae7f3d35..62b8a92af110b7a77514becb4563d46d0dcec59a 100644 (file)
@@ -555,7 +555,7 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.string;
+             name = NULL;
            else
              {
                name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
@@ -564,8 +564,9 @@ coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0, input_bfd,
-                   input_section, rel->r_vaddr - input_section->vma)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_vaddr - input_section->vma)))
              return FALSE;
          }
        }
index 7e0b28c5b7891553eb0fe865f4b9d1a8f6a5d68c..865e3980a72e758a73ece6d111119cdf4b65bdc5 100644 (file)
@@ -556,7 +556,7 @@ coff_mcore_relocate_section (output_bfd, info, input_bfd, input_section,
 
        case bfd_reloc_overflow:
          if (! ((*info->callbacks->reloc_overflow)
-                (info, my_name, howto->name,
+                (info, (h ? &h->root : NULL), my_name, howto->name,
                  (bfd_vma) 0, input_bfd,
                  input_section, rel->r_vaddr - input_section->vma)))
            return FALSE;
index 39f7f22b8fa725700b5d09c745455a8830d2c4ef..d89db54c3b96bfbc3a35d6ffd6067960ddedad2b 100644 (file)
@@ -1261,12 +1261,12 @@ mips_relocate_section (output_bfd, info, input_bfd, input_section,
                const char *name;
 
                if (int_rel.r_extern)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  name = bfd_section_name (input_bfd, s);
                if (! ((*info->callbacks->reloc_overflow)
-                      (info, name, howto->name, (bfd_vma) 0,
-                       input_bfd, input_section,
+                      (info, (h ? &h->root : NULL), name, howto->name,
+                       (bfd_vma) 0, input_bfd, input_section,
                        int_rel.r_vaddr - input_section->vma)))
                  return FALSE;
              }
index b21cdf3f4ade1fe5d20818569442e3bdefccd830..af30afdb7f009e0eaa8c1049722cd5640b259aee 100644 (file)
@@ -545,7 +545,7 @@ coff_or32_relocate_section (output_bfd, info, input_bfd, input_section,
           if (symndx == -1)
             name = "*ABS*";
           else if (h != NULL)
-            name = h->root.root.string;
+            name = NULL;
           else if (sym == NULL)
             name = "*unknown*";
           else if (sym->_n._n_n._n_zeroes == 0
@@ -559,9 +559,9 @@ coff_or32_relocate_section (output_bfd, info, input_bfd, input_section,
             }
 
           if (! ((*info->callbacks->reloc_overflow)
-                 (info, name, howto_table[rel->r_type].name, (bfd_vma) 0,
-                  input_bfd, input_section,
-                  rel->r_vaddr - input_section->vma)))
+                 (info, (h ? &h->root : NULL), name,
+                 howto_table[rel->r_type].name, (bfd_vma) 0, input_bfd,
+                 input_section, rel->r_vaddr - input_section->vma)))
             return FALSE;
         }
     }
index 38d0099748c74983bebcd146fc9b2e3e09063f51..28d7985bfea182168a50d782f6b9e46ab9e69bea 100644 (file)
@@ -1563,7 +1563,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.root.string;
+             name = NULL;
            else if (sym == NULL)
              name = "*unknown*";
            else if (sym->_n._n_n._n_zeroes == 0
@@ -1577,7 +1577,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name,
+                  (info, (h ? &h->root.root : NULL), name, howto->name,
                    (bfd_vma) 0, input_bfd,
                    input_section, rel->r_vaddr - input_section->vma)))
              return FALSE;
index d1df0a2d4256582b1a75190a1855a3c28068ed12..1257fbb143614d9322cf6ac19cd81769ea1427ea 100644 (file)
@@ -3481,7 +3481,7 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
            }
          else if (h != NULL)
            {
-             name = h->root.root.string;
+             name = NULL;
            }
          else
            {
@@ -3492,8 +3492,9 @@ xcoff_ppc_relocate_section (output_bfd, info, input_bfd,
          sprintf (reloc_type_name, "0x%02x", rel->r_type);
 
          if (! ((*info->callbacks->reloc_overflow)
-                (info, name, reloc_type_name, (bfd_vma) 0, input_bfd,
-                 input_section, rel->r_vaddr - input_section->vma)))
+                (info, (h ? &h->root : NULL), name, reloc_type_name,
+                 (bfd_vma) 0, input_bfd, input_section,
+                 rel->r_vaddr - input_section->vma)))
            return FALSE;
        }
 
index ce9ae94aa1bb9bcf834d67ddaf8d8b3853dc178f..93d0da1df8e4e3f4a5c765d2c064fb725eeb0e08 100644 (file)
@@ -2946,7 +2946,7 @@ sh_relocate_section (output_bfd, info, input_bfd, input_section, contents,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.string;
+             name = NULL;
            else if (sym->_n._n_n._n_zeroes == 0
                     && sym->_n._n_n._n_offset != 0)
              name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
@@ -2958,8 +2958,9 @@ sh_relocate_section (output_bfd, info, input_bfd, input_section, contents,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0, input_bfd,
-                   input_section, rel->r_vaddr - input_section->vma)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_vaddr - input_section->vma)))
              return FALSE;
          }
        }
index 50f43041ecf17a1f10b377e6c30c2c5a12d09895..30da206f371ba856ffadcb19345639ac75c21352 100644 (file)
@@ -695,7 +695,7 @@ coff_tic80_relocate_section (output_bfd, info, input_bfd,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.string;
+             name = NULL;
            else
              {
                name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
@@ -704,8 +704,9 @@ coff_tic80_relocate_section (output_bfd, info, input_bfd,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0, input_bfd,
-                   input_section, rel->r_vaddr - input_section->vma)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_vaddr - input_section->vma)))
              return FALSE;
          }
        }
index 63634b70e93ed334629c95428fec7a61a841d32c..cbc21795068bdcc91106fc599c8f6c1504da6167 100644 (file)
@@ -324,7 +324,8 @@ w65_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
        if (gap < -128 || gap > 127)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
@@ -348,7 +349,8 @@ w65_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
        if ((gap & 0xf0000) != (dot & 0xf0000))
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
index cf4da77c299cac146fa2270e6e3b1f1faf6df61a..5fd09e0457c2a808034afa5c088fa92080af115e 100644 (file)
@@ -233,7 +233,8 @@ extra_case (bfd *in_abfd,
        if (gap > 128 || gap < -128)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
@@ -261,7 +262,8 @@ extra_case (bfd *in_abfd,
        if (gap > 0 || gap < -127)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
@@ -288,7 +290,8 @@ extra_case (bfd *in_abfd,
        if (gap > 4096 || gap < -4095)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
@@ -314,7 +317,8 @@ extra_case (bfd *in_abfd,
        if (gap > 32767 || gap < -32768)
          {
            if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+                  (link_info, NULL,
+                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
                    reloc->howto->name, reloc->addend, input_section->owner,
                    input_section, reloc->address)))
              abort ();
index b33658a885441ecd4b3f3c64f7bfdf6ebd667957..c4dd1d8e15ab67401b708e26a04b5c9858bd6148 100644 (file)
@@ -1335,7 +1335,7 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
            }
          else if (h != NULL)
            {
-             name = h->root.root.string;
+             name = NULL;
            }
          else
            {
@@ -1346,8 +1346,9 @@ xcoff64_ppc_relocate_section (output_bfd, info, input_bfd,
          sprintf (reloc_type_name, "0x%02x", rel->r_type);
 
          if (! ((*info->callbacks->reloc_overflow)
-                (info, name, reloc_type_name, (bfd_vma) 0, input_bfd,
-                 input_section, rel->r_vaddr - input_section->vma)))
+                (info, (h ? &h->root : NULL), name, reloc_type_name,
+                 (bfd_vma) 0, input_bfd, input_section,
+                 rel->r_vaddr - input_section->vma)))
            return FALSE;
        }
 
index ca144cc4929345f8709c94140625b66429b89422..c277b85800f9b95067173f3b2106f663ef0a97c1 100644 (file)
@@ -2735,7 +2735,7 @@ _bfd_coff_reloc_link_order (bfd *output_bfd,
          abort ();
        case bfd_reloc_overflow:
          if (! ((*finfo->info->callbacks->reloc_overflow)
-                (finfo->info,
+                (finfo->info, NULL,
                  (link_order->type == bfd_section_reloc_link_order
                   ? bfd_section_name (output_bfd,
                                       link_order->u.reloc.p->u.section)
@@ -3016,7 +3016,7 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
            if (symndx == -1)
              name = "*ABS*";
            else if (h != NULL)
-             name = h->root.root.string;
+             name = NULL;
            else
              {
                name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
@@ -3025,8 +3025,9 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
              }
 
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0, input_bfd,
-                   input_section, rel->r_vaddr - input_section->vma)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_vaddr - input_section->vma)))
              return FALSE;
          }
        }
index b94de12abb7548aeeb3f79e4bb863d2a739fe761..74306f1ad1701cc25fe3e58e6b92a5fce69c178c 100644 (file)
@@ -4697,7 +4697,7 @@ ecoff_reloc_link_order (output_bfd, info, output_section, link_order)
          abort ();
        case bfd_reloc_overflow:
          if (! ((*info->callbacks->reloc_overflow)
-                (info,
+                (info, NULL,
                  (link_order->type == bfd_section_reloc_link_order
                   ? bfd_section_name (output_bfd, section)
                   : link_order->u.reloc.p->u.name),
index a6d3d691f131953827b482533eca0baf3f8cc0c5..415ad30ada7c1f9d18de9b762b782f170a92bb42 100644 (file)
@@ -1338,7 +1338,6 @@ elf_hppa_relocate_section (bfd *output_bfd,
       asection *sym_sec;
       bfd_vma relocation;
       bfd_reloc_status_type r;
-      const char *sym_name;
       const char *dyn_name;
       char *dynh_buf = NULL;
       size_t dynh_buflen = 0;
@@ -1463,19 +1462,6 @@ elf_hppa_relocate_section (bfd *output_bfd,
            }
        }
 
-      if (h != NULL)
-       sym_name = h->root.root.string;
-      else
-       {
-         sym_name = bfd_elf_string_from_elf_section (input_bfd,
-                                                     symtab_hdr->sh_link,
-                                                     sym->st_name);
-         if (sym_name == NULL)
-           return FALSE;
-         if (*sym_name == '\0')
-           sym_name = bfd_section_name (input_bfd, sym_sec);
-       }
-
       r = elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
                                        input_section, contents,
                                        relocation, info, sym_sec,
@@ -1489,9 +1475,25 @@ elf_hppa_relocate_section (bfd *output_bfd,
              abort ();
            case bfd_reloc_overflow:
              {
+               const char *sym_name;
+               
+               if (h != NULL)
+                 sym_name = NULL;
+               else
+                 {
+                   sym_name = bfd_elf_string_from_elf_section (input_bfd,
+                                                               symtab_hdr->sh_link,
+                                                               sym->st_name);
+                   if (sym_name == NULL)
+                     return FALSE;
+                   if (*sym_name == '\0')
+                     sym_name = bfd_section_name (input_bfd, sym_sec);
+                 }
+
                if (!((*info->callbacks->reloc_overflow)
-                     (info, sym_name, howto->name, (bfd_vma) 0,
-                       input_bfd, input_section, rel->r_offset)))
+                     (info, (h ? &h->root : NULL), sym_name,
+                      howto->name, (bfd_vma) 0, input_bfd,
+                      input_section, rel->r_offset)))
                  return FALSE;
              }
              break;
index c9e32be10202749739a29b13d9cfe12a0e126e04..7fb44754dd795106dd64e7b74297a3616f90f92b 100644 (file)
@@ -410,8 +410,9 @@ mn10200_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
              break;
 
index d882eb4f775f6223dadf0ac691fc7a13e543ad19..4470387890e5d6f4d70e0227300cb459e694a6ad 100644 (file)
@@ -1510,8 +1510,9 @@ mn10300_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root.root : NULL), name,
+                     howto->name, (bfd_vma) 0, input_bfd,
+                     input_section, rel->r_offset)))
                return FALSE;
              break;
 
index 88636d2c055334a5d1427ec6de418f6aa35bb5db..0d9ae49ca30a90bea1e453ef38e039349e0324af 100644 (file)
@@ -2265,8 +2265,9 @@ elf32_arm_relocate_section (bfd *                  output_bfd,
              if ((! h ||
                   h->root.type != bfd_link_hash_undefined)
                  && (!((*info->callbacks->reloc_overflow)
-                       (info, name, howto->name, (bfd_vma) 0,
-                        input_bfd, input_section, rel->r_offset))))
+                       (info, (h ? &h->root : NULL), name, howto->name,
+                        (bfd_vma) 0, input_bfd, input_section,
+                        rel->r_offset))))
                  return FALSE;
              break;
 
index 06e398b542d8256a52194e48b497665b7a03b66b..1026bfb15c8d93b3f9bfc6b15402a63b0f3435fd 100644 (file)
@@ -736,7 +736,7 @@ elf32_avr_relocate_section (output_bfd, info, input_bfd, input_section,
       struct elf_link_hash_entry * h;
       bfd_vma                      relocation;
       bfd_reloc_status_type        r;
-      const char *                 name = NULL;
+      const char *                 name;
       int                          r_type;
 
       /* This is a final link.  */
@@ -765,6 +765,8 @@ elf32_avr_relocate_section (output_bfd, info, input_bfd, input_section,
                                   r_symndx, symtab_hdr, sym_hashes,
                                   h, sec, relocation,
                                   unresolved_reloc, warned);
+
+         name = h->root.root.string;
        }
 
       r = avr_final_link_relocate (howto, input_bfd, input_section,
@@ -778,7 +780,8 @@ elf32_avr_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
+               (info, (h ? &h->root : NULL),
+                name, howto->name, (bfd_vma) 0,
                 input_bfd, input_section, rel->r_offset);
              break;
 
index e7223356017acc888a75e69db2661dd0e4e920e4..8c579e519bcc44d4c4d291e29a179b3cb21d2b36 100644 (file)
@@ -754,8 +754,9 @@ elf32_cr16c_relocate_section (bfd *output_bfd,
            {
            case bfd_reloc_overflow:
              if (!((*info->callbacks->reloc_overflow)
-                   (info, name, howto->name, (bfd_vma) 0,
-                    input_bfd, input_section, rel->r_offset)))
+                   (info, (h ? &h->root : NULL), name, howto->name,
+                    (bfd_vma) 0, input_bfd, input_section,
+                    rel->r_offset)))
                return FALSE;
              break;
 
index f0c88dcc6dff519a229420c2b9f07e2dc151c2ee..ad93071f9794f050214e830cde8d6de3fcf5d832 100644 (file)
@@ -1357,8 +1357,8 @@ cris_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, symname, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), symname, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 79b9c64feac2400b8440956e1f98875eaa02e412..50d2ea1ef19b5d43c885dcac2a7bda714bc972b9 100644 (file)
@@ -868,8 +868,9 @@ elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            {
             case bfd_reloc_overflow:
               if (!((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                 return FALSE;
               break;
 
index e845a254e47eb172664e4c857ba7050d80373378..87ae582788f2063c770864a0236da2ab9860a52b 100644 (file)
@@ -547,8 +547,9 @@ elf32_d10v_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              if (!((*info->callbacks->reloc_overflow)
-                   (info, name, howto->name, (bfd_vma) 0,
-                    input_bfd, input_section, rel->r_offset)))
+                   (info, (h ? &h->root : NULL), name, howto->name, 
+                    (bfd_vma) 0, input_bfd, input_section,
+                    rel->r_offset)))
                return FALSE;
              break;
 
index 5f70e3f1865e32552ea24e03f006e5796c504a99..3cf87452e5ad176b9c21a95cb38e97b5aac92a8d 100644 (file)
@@ -532,7 +532,7 @@ fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
       struct elf_link_hash_entry *h;
       bfd_vma relocation;
       bfd_reloc_status_type r;
-      const char *name = NULL;
+      const char *name;
       int r_type;
 
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -572,6 +572,8 @@ fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                                   r_symndx, symtab_hdr, sym_hashes,
                                   h, sec, relocation,
                                   unresolved_reloc, warned);
+
+         name = h->root.root.string;
        }
 
       r = fr30_final_link_relocate (howto, input_bfd, input_section,
@@ -585,8 +587,8 @@ fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 53deac7d09c1ea5093cc9732730668674db51691..9564671af7bb7a0419576afc5a46529b03fe8ddb 100644 (file)
@@ -2544,8 +2544,8 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 3daef62c939cc21134642eff62c171066ef04d14..d4deac6c27b9c0e715cc168ffe5e3861a6bb3f97 100644 (file)
@@ -477,8 +477,9 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            {
            case bfd_reloc_overflow:
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
              break;
 
index dbe6d06553e6ee8f79864356023a8c84200656e0..00fd99048c3495623c4722c2bb947ad116321a9f 100644 (file)
@@ -3819,8 +3819,8 @@ elf32_hppa_relocate_section (bfd *output_bfd,
       else
        {
          if (!((*info->callbacks->reloc_overflow)
-               (info, sym_name, howto->name, 0, input_bfd, input_section,
-                rel->r_offset)))
+               (info, (h ? &h->elf.root : NULL), sym_name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
            return FALSE;
        }
     }
index 18d4a2558e116abbc33e3ff719ea793e28d4f5bc..f4cd9c15c8f28e6dc21e72816fe0a9b447b0fd21 100644 (file)
@@ -1438,7 +1438,7 @@ i370_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = bfd_elf_string_from_elf_section (input_bfd,
@@ -1452,6 +1452,7 @@ i370_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                  }
 
                (*info->callbacks->reloc_overflow) (info,
+                                                   (h ? &h->root : NULL),
                                                    name,
                                                    howto->name,
                                                    (bfd_vma) 0,
index 5763acc00e9afe005d463506fca8b64b90b28676..bca9f5fae74fe9c465c1ec84d34fb1581d3adf8e 100644 (file)
@@ -2941,8 +2941,9 @@ elf_i386_relocate_section (bfd *output_bfd,
          if (r == bfd_reloc_overflow)
            {
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
            }
          else
index 010ac2e76196ff1fb678ff148aa3751262027990..a5499a288198afeb89eb17bae69a1a91c78ce33d 100644 (file)
@@ -1183,8 +1183,8 @@ elf32_i860_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 758842b837373f1e141632548bdccfe4eedc132d..70c05abaefe2d4dbbe4a043b0d1a4441b877ccd1 100644 (file)
@@ -1545,8 +1545,8 @@ ip2k_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 60dab3483cd89a4734e9eb1c993958451c789de9..bb2df9f5c83807e11fb08bce2d9fec88b4948fb8 100644 (file)
@@ -653,8 +653,8 @@ iq2000_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
              
            case bfd_reloc_undefined:
index fd259cd201be96bcb343589ee60012835c11c5c7..3b1cf26572f6bbf3eb6108defc7813e4460918ed 100644 (file)
@@ -3236,8 +3236,8 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section, offset)))
                return FALSE;
              break;
 
index 01529430a8f1157b1ac308e009180b8e0cfcb351..eeab9d53f49c4be138706d3b220abaf3881e689a 100644 (file)
@@ -1173,7 +1173,7 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
            {
            case bfd_reloc_overflow:
              if (!((*info->callbacks->reloc_overflow)
-                   (info, name, howto->name, (bfd_vma) 0,
+                   (info, NULL, name, howto->name, (bfd_vma) 0,
                     input_bfd, input_section, rel->r_offset)))
                return FALSE;
              break;
index f1c6ea7931998749b5b10e22d517239ea6359606..42a3764d9b94dd544ef9856bb2b1369a9ec02173 100644 (file)
@@ -1731,8 +1731,9 @@ elf_m68k_relocate_section (output_bfd, info, input_bfd, input_section,
          if (r == bfd_reloc_overflow)
            {
              if (!(info->callbacks->reloc_overflow
-                   (info, name, howto->name, (bfd_vma) 0,
-                    input_bfd, input_section, rel->r_offset)))
+                   (info, (h ? &h->root : NULL), name, howto->name,
+                    (bfd_vma) 0, input_bfd, input_section,
+                    rel->r_offset)))
                return FALSE;
            }
          else
index b51649c4b95c74774967736f0c0508f36ca6ee8a..4d11bb00e9a21958549d2c3fdb0e3172ae65c389 100644 (file)
@@ -520,7 +520,7 @@ mcore_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                const char * name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = bfd_elf_string_from_elf_section
@@ -534,8 +534,8 @@ mcore_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                  }
 
                (*info->callbacks->reloc_overflow)
-                 (info, name, howto->name, (bfd_vma) 0, input_bfd, input_section,
-                  offset);
+                 (info, (h ? &h->root : NULL), name, howto->name,
+                  (bfd_vma) 0, input_bfd, input_section, offset);
              }
              break;
            }
index ba59cf7f874f37db74c6d49dd07a3a27af58fa6a..ac38fec494635468dd7ae43b517840aa5b34da6a 100644 (file)
@@ -489,8 +489,9 @@ elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-                 (info, name, howto->name, (bfd_vma) 0,
-                  input_bfd, input_section, rel->r_offset);
+                 (info, (h ? &h->root : NULL), name, howto->name,
+                  (bfd_vma) 0, input_bfd, input_section,
+                  rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index af1c2221f8cec898a60f998061fade474b1add43..af20dcf97b93e47a80cd24da0664a521c61a74dd 100644 (file)
@@ -402,8 +402,8 @@ openrisc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index edc4efc1b958f8d6f0e19545c411d87003f4d1e1..0605da64f943a87e0a59f77b2e539a5a80bb3d3a 100644 (file)
@@ -5746,6 +5746,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
                }
 
              if (! (*info->callbacks->reloc_overflow) (info,
+                                                       (h ? &h->root : NULL),
                                                        sym_name,
                                                        howto->name,
                                                        rel->r_addend,
index 65c27e0220f5ccee89e6be9c7e393e4d4043b9df..4bf34faeb7c7d4c4edef45ba67e71ef74b73d413 100644 (file)
@@ -3029,8 +3029,9 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
            {
 
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
            }
          else
index 4304a4ec40a22aae0d20daeb16db94462db6b08a..de827f39f030b422a76c48e4adc6700aa217ff0a 100644 (file)
@@ -5848,7 +5848,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = (bfd_elf_string_from_elf_section
@@ -5859,8 +5859,9 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                      name = bfd_section_name (input_bfd, sec);
                  }
                if (! ((*info->callbacks->reloc_overflow)
-                      (info, name, howto->name, (bfd_vma) 0,
-                       input_bfd, input_section, rel->r_offset)))
+                      (info, (h ? &h->root : NULL), name, howto->name,
+                       (bfd_vma) 0, input_bfd, input_section,
+                       rel->r_offset)))
                  return FALSE;
              }
              break;
index c44a50a1d3cf7c1dead157b936e4861363853654..378f14db4ba08e8f7a32d57cf29e0fd14af72208 100644 (file)
@@ -3014,7 +3014,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = bfd_elf_string_from_elf_section (input_bfd,
@@ -3026,8 +3026,9 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
                      name = bfd_section_name (input_bfd, sec);
                  }
                if (! ((*info->callbacks->reloc_overflow)
-                      (info, name, howto->name, (bfd_vma) 0,
-                       input_bfd, input_section, rel->r_offset)))
+                      (info, (h ? &h->root : NULL), name, howto->name,
+                       (bfd_vma) 0, input_bfd, input_section,
+                       rel->r_offset)))
                  return FALSE;
              }
              break;
index 763220acce08ffeb898e3ff0d1d6b10216f92929..09eb1ab65a6b43730fe59765f16a047845643bbf 100644 (file)
@@ -1729,8 +1729,9 @@ v850_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
              break;
 
index 9a8f0407435347558e64c699942538c7b4382075..6d5493b240a43828d5ca3e76e7a7b55bba70d813 100644 (file)
@@ -1814,7 +1814,7 @@ elf_vax_relocate_section (output_bfd, info, input_bfd, input_section,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = bfd_elf_string_from_elf_section (input_bfd,
@@ -1826,8 +1826,9 @@ elf_vax_relocate_section (output_bfd, info, input_bfd, input_section,
                      name = bfd_section_name (input_bfd, sec);
                  }
                if (!(info->callbacks->reloc_overflow
-                     (info, name, howto->name, (bfd_vma) 0,
-                      input_bfd, input_section, rel->r_offset)))
+                     (info, (h ? &h->root : NULL), name, howto->name,
+                      (bfd_vma) 0, input_bfd, input_section,
+                      rel->r_offset)))
                  return FALSE;
              }
              break;
index 8c96348ac49cc083478923aef3575dba44f22777..9d8635aa03a0b8306282c430316e15fe7e35a682 100644 (file)
@@ -940,8 +940,8 @@ xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              r = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index 648061265173a523c79583a7088b27354a356bfc..a55ebe6d156087d2f181bf7c22a64695e61aef40 100644 (file)
@@ -4802,7 +4802,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
              break;
 
            if (h != NULL)
-             name = h->root.root.root.string;
+             name = NULL;
            else
              {
                name = (bfd_elf_string_from_elf_section
@@ -4813,8 +4813,9 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
                  name = bfd_section_name (input_bfd, sec);
              }
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0,
-                   input_bfd, input_section, rel->r_offset)))
+                  (info, (h ? &h->root.root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_offset)))
              ret_val = FALSE;
          }
          break;
index 777b5fe770eb2953a3ad0c4f9e4498abdae7a680..8a4bea251f2d4976925b61880057760a12d76e06 100644 (file)
@@ -1500,8 +1500,8 @@ mmix_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            {
            case bfd_reloc_overflow:
              check_ok = info->callbacks->reloc_overflow
-               (info, name, howto->name, (bfd_vma) 0,
-                input_bfd, input_section, rel->r_offset);
+               (info, (h ? &h->root : NULL), name, howto->name,
+                (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
              break;
 
            case bfd_reloc_undefined:
index db0bc8f53b023a1c85cb2564d5be5edac7cb2427..c21d0272d86002fd58c4eea56d277de85ce31fc7 100644 (file)
@@ -9963,7 +9963,8 @@ ppc64_elf_relocate_section (bfd *output_bfd,
                }
 
              if (!((*info->callbacks->reloc_overflow)
-                   (info, sym_name, ppc64_elf_howto_table[r_type]->name,
+                   (info, (h ? &h->elf.root : NULL), sym_name,
+                    ppc64_elf_howto_table[r_type]->name,
                     rel->r_addend, input_bfd, input_section, rel->r_offset)))
                return FALSE;
            }
index 796c4f7c539ac514da730eb79b747292113c4247..b428233e46f74fbb3708dfe3f43df9d37f73479b 100644 (file)
@@ -3026,8 +3026,9 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
            {
 
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
            }
          else
index c2e1034020df005014c7c745df396ec010377288..15f7a43857d2f5a10302c742520f6752801eca83 100644 (file)
@@ -2130,7 +2130,7 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else
                  {
                    name = (bfd_elf_string_from_elf_section
@@ -2141,8 +2141,9 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
                      name = bfd_section_name (input_bfd, sec);
                  }
                if (! ((*info->callbacks->reloc_overflow)
-                      (info, name, howto->name, (bfd_vma) 0,
-                       input_bfd, input_section, rel->r_offset)))
+                      (info, (h ? &h->root : NULL), name, howto->name,
+                       (bfd_vma) 0, input_bfd, input_section,
+                       rel->r_offset)))
                  return FALSE;
              }
              break;
index 6a8977c438ec5e2012ed9607d1f15395a72302b5..01b80cda4d5a6d043e5811fc7be2aa25c91a5557 100644 (file)
@@ -2652,7 +2652,7 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                    break;
                  }
 
-               name = h->root.root.string;
+               name = NULL;
              }
            else
              {
@@ -2666,8 +2666,9 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                  name = bfd_section_name (input_bfd, sec);
              }
            if (! ((*info->callbacks->reloc_overflow)
-                  (info, name, howto->name, (bfd_vma) 0,
-                   input_bfd, input_section, rel->r_offset)))
+                  (info, (h ? &h->root : NULL), name, howto->name,
+                   (bfd_vma) 0, input_bfd, input_section,
+                   rel->r_offset)))
              return FALSE;
          }
        break;
index f039fa7eb496c898578b188ac12adf33dac20fe4..00d699722243530c871d8dcc8505de2fa156e86d 100644 (file)
@@ -2436,8 +2436,9 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                continue;
 
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, (bfd_vma) 0,
-                     input_bfd, input_section, rel->r_offset)))
+                    (info, (h ? &h->root : NULL), name, howto->name,
+                     (bfd_vma) 0, input_bfd, input_section,
+                     rel->r_offset)))
                return FALSE;
            }
          else
index 6e3f91ff8a0f7c4c32ef6a72026033bbfc1e9579..418004289310255a4287914ea6c66f398484ffd9 100644 (file)
@@ -7216,7 +7216,8 @@ elf_reloc_link_order (bfd *output_bfd,
          else
            sym_name = link_order->u.reloc.p->u.name;
          if (! ((*info->callbacks->reloc_overflow)
-                (info, sym_name, howto->name, addend, NULL, NULL, 0)))
+                (info, NULL, sym_name, howto->name, addend, NULL,
+                 NULL, (bfd_vma) 0)))
            {
              free (buf);
              return FALSE;
index 093adbc47c296d4475bb41b98e285c43ad5f1f00..917e2c3bbf7f770200e02e7543461f0475cbf2ed 100644 (file)
@@ -4497,7 +4497,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
            const char *name;
 
            if (h)
-             name = h->root.root.string;
+             name = NULL;
            else
              {
                name = bfd_elf_string_from_elf_section (input_bfd,
@@ -4506,10 +4506,10 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                if (name == NULL)
                  return FALSE;
                if (*name == '\0')
-                 name = bfd_section_name (input_bfd, input_section);
+                 name = bfd_section_name (input_bfd, sym_sec);
              }
-           if (!(*info->callbacks->reloc_overflow) (info, name,
-                                                    howto->name,
+           if (!(*info->callbacks->reloc_overflow) (info, &h->root,
+                                                    name, howto->name,
                                                     (bfd_vma) 0,
                                                     input_bfd,
                                                     input_section,
index 64eff153c477fb87cd632e986c0c37dcccd1b9ec..2c98354a3410dc324882a5249765a100b31faa2d 100644 (file)
@@ -6416,7 +6416,7 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
            {
              BFD_ASSERT (name != NULL);
              if (! ((*info->callbacks->reloc_overflow)
-                    (info, name, howto->name, 0,
+                    (info, NULL, name, howto->name, (bfd_vma) 0,
                      input_bfd, input_section, rel->r_offset)))
                return FALSE;
            }
@@ -8020,7 +8020,8 @@ _bfd_elf_mips_get_relocated_section_contents
                  break;
                case bfd_reloc_overflow:
                  if (!((*link_info->callbacks->reloc_overflow)
-                       (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
+                       (link_info, NULL,
+                        bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
                         (*parent)->howto->name, (*parent)->addend,
                         input_bfd, input_section, (*parent)->address)))
                    goto error_return;
index 8abf35967011d6cdd01b42d2d24cd6a110dacceb..5f4e935f8a1d825d86a10d428b0c2c15fe209748 100644 (file)
@@ -2529,7 +2529,7 @@ _bfd_generic_reloc_link_order (bfd *abfd,
          abort ();
        case bfd_reloc_overflow:
          if (! ((*info->callbacks->reloc_overflow)
-                (info,
+                (info, NULL,
                  (link_order->type == bfd_section_reloc_link_order
                   ? bfd_section_name (abfd, link_order->u.reloc.p->u.section)
                   : link_order->u.reloc.p->u.name),
index 1188a9215b234bd2e2c7848d5f5093d0e36820e8..f1aa421a9d991f197603cb3b35f625f6446dd5a4 100644 (file)
@@ -4775,7 +4775,7 @@ fprintf (stderr, "TODO: change the address of the relocation\n");
                const char *name;
 
                if (h != NULL)
-                 name = h->root.root.string;
+                 name = NULL;
                else if (r_extern)
                  name = strings + GET_WORD (input_bfd,
                                             syms[r_index].e_strx);
@@ -4787,8 +4787,9 @@ fprintf (stderr, "TODO: change the address of the relocation\n");
                    name = bfd_section_name (input_bfd, s);
                  }
                if (! ((*finfo->info->callbacks->reloc_overflow)
-                      (finfo->info, name, howto->name,
-                       (bfd_vma) 0, input_bfd, input_section, r_addr)))
+                      (finfo->info, (h ? &h->root : NULL), name,
+                       howto->name, (bfd_vma) 0, input_bfd,
+                       input_section, r_addr)))
                  return FALSE;
              }
              break;
@@ -4954,7 +4955,7 @@ aout_link_reloc_link_order (finfo, o, p)
          abort ();
        case bfd_reloc_overflow:
          if (! ((*finfo->info->callbacks->reloc_overflow)
-                (finfo->info,
+                (finfo->info, NULL,
                  (p->type == bfd_section_reloc_link_order
                   ? bfd_section_name (finfo->output_bfd,
                                       pr->u.section)
index 1df18408fee8dd369e40337df2e06036a82620a1..78d19d260c47e0736ac5acfab5284a3d67cb44d5 100644 (file)
@@ -4499,7 +4499,8 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
                  break;
                case bfd_reloc_overflow:
                  if (!((*link_info->callbacks->reloc_overflow)
-                       (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
+                       (link_info, NULL,
+                        bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
                         (*parent)->howto->name, (*parent)->addend,
                         input_bfd, input_section, (*parent)->address)))
                    goto error_return;
index 41aa950955aa31a76bcf0d9d9286200e1fb45540..5d98452bb8b2c352b494892437d70e20b49697e5 100644 (file)
@@ -48,6 +48,7 @@ simple_dummy_undefined_symbol (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
 
 static bfd_boolean
 simple_dummy_reloc_overflow (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
+                            struct bfd_link_hash_entry *entry ATTRIBUTE_UNUSED,
                             const char *name ATTRIBUTE_UNUSED,
                             const char *reloc_name ATTRIBUTE_UNUSED,
                             bfd_vma addend ATTRIBUTE_UNUSED,
index ccb9c90558940b975899924daee201470ff7b579..8142e168331334dded1312055dfbdb984bc52504 100644 (file)
@@ -6043,7 +6043,7 @@ xcoff_reloc_link_order (output_bfd, finfo, output_section, link_order)
          abort ();
        case bfd_reloc_overflow:
          if (! ((*finfo->info->callbacks->reloc_overflow)
-                (finfo->info, link_order->u.reloc.p->u.name,
+                (finfo->info, NULL, link_order->u.reloc.p->u.name,
                  howto->name, addend, (bfd *) NULL, (asection *) NULL,
                  (bfd_vma) 0)))
            {
index 5f7d3687363e75a571f873f278d04879cbe17d6c..53935eccf18a08f315f661096d836bd13e8a8211 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2004-10-12  Paul Brook  <paul@codesourcery.com>
 
        * elf/arm.h (EF_ARM_EABI_VER4): Define.
index db276b02c99b32b61bd3cfaa7c3266d86ce09468..b5673421fe663ef0010fd6791aeae1ac2149fba8 100644 (file)
@@ -481,16 +481,18 @@ struct bfd_link_callbacks
   bfd_boolean (*undefined_symbol)
     (struct bfd_link_info *, const char *name, bfd *abfd,
      asection *section, bfd_vma address, bfd_boolean fatal);
-  /* A function which is called when a reloc overflow occurs.  NAME is
-     the name of the symbol or section the reloc is against,
-     RELOC_NAME is the name of the relocation, and ADDEND is any
-     addend that is used.  ABFD, SECTION and ADDRESS identify the
+  /* A function which is called when a reloc overflow occurs. ENTRY is
+     the link hash table entry for the symbol the reloc is against.
+     NAME is the name of the local symbol or section the reloc is
+     against, RELOC_NAME is the name of the relocation, and ADDEND is
+     any addend that is used.  ABFD, SECTION and ADDRESS identify the
      location at which the overflow occurs; if this is the result of a
      bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
      ABFD will be NULL.  */
   bfd_boolean (*reloc_overflow)
-    (struct bfd_link_info *, const char *name, const char *reloc_name,
-     bfd_vma addend, bfd *abfd, asection *section, bfd_vma address);
+    (struct bfd_link_info *, struct bfd_link_hash_entry *entry,
+     const char *name, const char *reloc_name, bfd_vma addend,
+     bfd *abfd, asection *section, bfd_vma address);
   /* A function which is called when a dangerous reloc is performed.
      The canonical example is an a29k IHCONST reloc which does not
      follow an IHIHALF reloc.  MESSAGE is an appropriate message.
index 8909eaa341d46c01d9803942e97d2d56d6886b62..1536e73ad579f26cddeac953093e990ca8465556 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2004-10-21  H.J. Lu  <hongjiu.lu@intel.com>
 
        * genscripts.sh (libpath.exp): Really generate for first
index dc2efa223025103deacdc1277c67036cf37420f3..7344da2098054eca61b7fb97ba7fad93ff4f45ca 100644 (file)
@@ -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");