mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-23 12:09:49 +00:00
Return void from linker callbacks
The ldmain.c implementation of these linker callback functions always return true, so any code handling a false return is dead. What's more, some of the bfd backends abort if ever a false return is seen, and there seems to be some confusion in gdb's compile-object-load.c. The return value was never meant to be "oh yes, a multiple_definition error occurred", but rather "out of memory or other catastrophic failure". This patch removes the status return on the callbacks that always return true. I kept the return status for "notice" because that one does happen to need to return "out of memory". include/ * bfdlink.h (struct bfd_link_callbacks): Update comments. Return void from multiple_definition, multiple_common, add_to_set, constructor, warning, undefined_symbol, reloc_overflow, reloc_dangerous and unattached_reloc. bfd/ * aoutx.h: Adjust linker callback calls throughout file, removing dead code. * bout.c: Likewise. * coff-alpha.c: Likewise. * coff-arm.c: Likewise. * coff-h8300.c: Likewise. * coff-h8500.c: Likewise. * coff-i960.c: Likewise. * coff-mcore.c: Likewise. * coff-mips.c: Likewise. * coff-ppc.c: Likewise. * coff-rs6000.c: Likewise. * coff-sh.c: Likewise. * coff-tic80.c: Likewise. * coff-w65.c: Likewise. * coff-z80.c: Likewise. * coff-z8k.c: Likewise. * coff64-rs6000.c: Likewise. * cofflink.c: Likewise. * ecoff.c: Likewise. * elf-bfd.h: Likewise. * elf-m10200.c: Likewise. * elf-m10300.c: Likewise. * elf32-arc.c: Likewise. * elf32-arm.c: Likewise. * elf32-avr.c: Likewise. * elf32-bfin.c: Likewise. * elf32-cr16.c: Likewise. * elf32-cr16c.c: Likewise. * elf32-cris.c: Likewise. * elf32-crx.c: Likewise. * elf32-d10v.c: Likewise. * elf32-epiphany.c: Likewise. * elf32-fr30.c: Likewise. * elf32-frv.c: Likewise. * elf32-ft32.c: Likewise. * elf32-h8300.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i370.c: Likewise. * elf32-i386.c: Likewise. * elf32-i860.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-iq2000.c: Likewise. * elf32-lm32.c: Likewise. * elf32-m32c.c: Likewise. * elf32-m32r.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-m68k.c: Likewise. * elf32-mep.c: Likewise. * elf32-metag.c: Likewise. * elf32-microblaze.c: Likewise. * elf32-moxie.c: Likewise. * elf32-msp430.c: Likewise. * elf32-mt.c: Likewise. * elf32-nds32.c: Likewise. * elf32-nios2.c: Likewise. * elf32-or1k.c: Likewise. * elf32-ppc.c: Likewise. * elf32-s390.c: Likewise. * elf32-score.c: Likewise. * elf32-score7.c: Likewise. * elf32-sh.c: Likewise. * elf32-sh64.c: Likewise. * elf32-spu.c: Likewise. * elf32-tic6x.c: Likewise. * elf32-tilepro.c: Likewise. * elf32-v850.c: Likewise. * elf32-vax.c: Likewise. * elf32-visium.c: Likewise. * elf32-xstormy16.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ia64-vms.c: Likewise. * elf64-mmix.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elf64-sh64.c: Likewise. * elf64-x86-64.c: Likewise. * elflink.c: Likewise. * elfnn-aarch64.c: Likewise. * elfnn-ia64.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * elfxx-tilegx.c: Likewise. * linker.c: Likewise. * pdp11.c: Likewise. * pe-mips.c: Likewise. * reloc.c: Likewise. * reloc16.c: Likewise. * simple.c: Likewise. * vms-alpha.c: Likewise. * xcofflink.c: Likewise. * elf32-rl78.c (get_symbol_value, get_romstart, get_ramstart): Delete status param. Adjust calls to these and linker callbacks throughout. * elf32-rx.c: (get_symbol_value, get_gp, get_romstart, get_ramstart): Delete status param. Adjust calls to these and linker callbacks throughout. ld/ * ldmain.c (multiple_definition, multiple_common, add_to_set, constructor_callback, warning_callback, undefined_symbol, reloc_overflow, reloc_dangerous, unattached_reloc): Return void. * emultempl/elf32.em: Adjust callback calls. gdb/ * compile/compile-object-load.c (link_callbacks_multiple_definition, link_callbacks_warning, link_callbacks_undefined_symbol, link_callbacks_undefined_symbol, link_callbacks_reloc_overflow, link_callbacks_reloc_dangerous, link_callbacks_unattached_reloc): Return void.
This commit is contained in:
parent
d5dca95ffc
commit
1a72702bb3
101
bfd/ChangeLog
101
bfd/ChangeLog
@ -1,3 +1,104 @@
|
||||
2016-05-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* aoutx.h: Adjust linker callback calls throughout file,
|
||||
removing dead code.
|
||||
* bout.c: Likewise.
|
||||
* coff-alpha.c: Likewise.
|
||||
* coff-arm.c: Likewise.
|
||||
* coff-h8300.c: Likewise.
|
||||
* coff-h8500.c: Likewise.
|
||||
* coff-i960.c: Likewise.
|
||||
* coff-mcore.c: Likewise.
|
||||
* coff-mips.c: Likewise.
|
||||
* coff-ppc.c: Likewise.
|
||||
* coff-rs6000.c: Likewise.
|
||||
* coff-sh.c: Likewise.
|
||||
* coff-tic80.c: Likewise.
|
||||
* coff-w65.c: Likewise.
|
||||
* coff-z80.c: Likewise.
|
||||
* coff-z8k.c: Likewise.
|
||||
* coff64-rs6000.c: Likewise.
|
||||
* cofflink.c: Likewise.
|
||||
* ecoff.c: Likewise.
|
||||
* elf-bfd.h: Likewise.
|
||||
* elf-m10200.c: Likewise.
|
||||
* elf-m10300.c: Likewise.
|
||||
* elf32-arc.c: Likewise.
|
||||
* elf32-arm.c: Likewise.
|
||||
* elf32-avr.c: Likewise.
|
||||
* elf32-bfin.c: Likewise.
|
||||
* elf32-cr16.c: Likewise.
|
||||
* elf32-cr16c.c: Likewise.
|
||||
* elf32-cris.c: Likewise.
|
||||
* elf32-crx.c: Likewise.
|
||||
* elf32-d10v.c: Likewise.
|
||||
* elf32-epiphany.c: Likewise.
|
||||
* elf32-fr30.c: Likewise.
|
||||
* elf32-frv.c: Likewise.
|
||||
* elf32-ft32.c: Likewise.
|
||||
* elf32-h8300.c: Likewise.
|
||||
* elf32-hppa.c: Likewise.
|
||||
* elf32-i370.c: Likewise.
|
||||
* elf32-i386.c: Likewise.
|
||||
* elf32-i860.c: Likewise.
|
||||
* elf32-ip2k.c: Likewise.
|
||||
* elf32-iq2000.c: Likewise.
|
||||
* elf32-lm32.c: Likewise.
|
||||
* elf32-m32c.c: Likewise.
|
||||
* elf32-m32r.c: Likewise.
|
||||
* elf32-m68hc1x.c: Likewise.
|
||||
* elf32-m68k.c: Likewise.
|
||||
* elf32-mep.c: Likewise.
|
||||
* elf32-metag.c: Likewise.
|
||||
* elf32-microblaze.c: Likewise.
|
||||
* elf32-moxie.c: Likewise.
|
||||
* elf32-msp430.c: Likewise.
|
||||
* elf32-mt.c: Likewise.
|
||||
* elf32-nds32.c: Likewise.
|
||||
* elf32-nios2.c: Likewise.
|
||||
* elf32-or1k.c: Likewise.
|
||||
* elf32-ppc.c: Likewise.
|
||||
* elf32-s390.c: Likewise.
|
||||
* elf32-score.c: Likewise.
|
||||
* elf32-score7.c: Likewise.
|
||||
* elf32-sh.c: Likewise.
|
||||
* elf32-sh64.c: Likewise.
|
||||
* elf32-spu.c: Likewise.
|
||||
* elf32-tic6x.c: Likewise.
|
||||
* elf32-tilepro.c: Likewise.
|
||||
* elf32-v850.c: Likewise.
|
||||
* elf32-vax.c: Likewise.
|
||||
* elf32-visium.c: Likewise.
|
||||
* elf32-xstormy16.c: Likewise.
|
||||
* elf32-xtensa.c: Likewise.
|
||||
* elf64-alpha.c: Likewise.
|
||||
* elf64-hppa.c: Likewise.
|
||||
* elf64-ia64-vms.c: Likewise.
|
||||
* elf64-mmix.c: Likewise.
|
||||
* elf64-ppc.c: Likewise.
|
||||
* elf64-s390.c: Likewise.
|
||||
* elf64-sh64.c: Likewise.
|
||||
* elf64-x86-64.c: Likewise.
|
||||
* elflink.c: Likewise.
|
||||
* elfnn-aarch64.c: Likewise.
|
||||
* elfnn-ia64.c: Likewise.
|
||||
* elfxx-mips.c: Likewise.
|
||||
* elfxx-sparc.c: Likewise.
|
||||
* elfxx-tilegx.c: Likewise.
|
||||
* linker.c: Likewise.
|
||||
* pdp11.c: Likewise.
|
||||
* pe-mips.c: Likewise.
|
||||
* reloc.c: Likewise.
|
||||
* reloc16.c: Likewise.
|
||||
* simple.c: Likewise.
|
||||
* vms-alpha.c: Likewise.
|
||||
* xcofflink.c: Likewise.
|
||||
* elf32-rl78.c (get_symbol_value, get_romstart, get_ramstart): Delete
|
||||
status param. Adjust calls to these and linker callbacks throughout.
|
||||
* elf32-rx.c: (get_symbol_value, get_gp, get_romstart,
|
||||
get_ramstart): Delete status param. Adjust calls to these and
|
||||
linker callbacks throughout.
|
||||
|
||||
2016-05-27 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS16_26>
|
||||
|
66
bfd/aoutx.h
66
bfd/aoutx.h
@ -3735,9 +3735,8 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, pr->u.name, NULL, NULL, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, pr->u.name, NULL, NULL, (bfd_vma) 0);
|
||||
r_index = 0;
|
||||
}
|
||||
}
|
||||
@ -3832,17 +3831,13 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(p->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (flaginfo->output_bfd,
|
||||
pr->u.section)
|
||||
: pr->u.name),
|
||||
howto->name, pr->addend, NULL, NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(p->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (flaginfo->output_bfd,
|
||||
pr->u.section)
|
||||
: pr->u.name),
|
||||
howto->name, pr->addend, NULL, NULL, (bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
ok = bfd_set_section_contents (flaginfo->output_bfd, o, (void *) buf,
|
||||
@ -4099,10 +4094,9 @@ aout_link_input_section_std (struct aout_final_link_info *flaginfo,
|
||||
|
||||
name = strings + GET_WORD (input_bfd,
|
||||
syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name,
|
||||
input_bfd, input_section, r_addr);
|
||||
r_index = 0;
|
||||
}
|
||||
}
|
||||
@ -4224,10 +4218,8 @@ aout_link_input_section_std (struct aout_final_link_info *flaginfo,
|
||||
name = h->root.root.string;
|
||||
else
|
||||
name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr, TRUE)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section, r_addr, TRUE);
|
||||
}
|
||||
|
||||
r = MY_final_link_relocate (howto,
|
||||
@ -4259,11 +4251,9 @@ aout_link_input_section_std (struct aout_final_link_info *flaginfo,
|
||||
s = aout_reloc_index_to_section (input_bfd, r_index);
|
||||
name = bfd_section_name (input_bfd, s);
|
||||
}
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name,
|
||||
howto->name, (bfd_vma) 0, input_bfd,
|
||||
input_section, r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, r_addr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -4441,10 +4431,9 @@ aout_link_input_section_ext (struct aout_final_link_info *flaginfo,
|
||||
|
||||
name = strings + GET_WORD (input_bfd,
|
||||
syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name,
|
||||
input_bfd, input_section, r_addr);
|
||||
r_index = 0;
|
||||
}
|
||||
}
|
||||
@ -4631,10 +4620,8 @@ aout_link_input_section_ext (struct aout_final_link_info *flaginfo,
|
||||
name = h->root.root.string;
|
||||
else
|
||||
name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr, TRUE)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section, r_addr, TRUE);
|
||||
}
|
||||
|
||||
if (r_type != (unsigned int) RELOC_SPARC_REV32)
|
||||
@ -4678,11 +4665,10 @@ aout_link_input_section_ext (struct aout_final_link_info *flaginfo,
|
||||
s = aout_reloc_index_to_section (input_bfd, r_index);
|
||||
name = bfd_section_name (input_bfd, s);
|
||||
}
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name,
|
||||
howto_table_ext[r_type].name,
|
||||
r_addend, input_bfd, input_section, r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name,
|
||||
howto_table_ext[r_type].name,
|
||||
r_addend, input_bfd, input_section, r_addr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -517,11 +517,9 @@ get_value (arelent *reloc,
|
||||
value = h->u.c.size;
|
||||
else
|
||||
{
|
||||
if (! ((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (symbol),
|
||||
input_section->owner, input_section, reloc->address,
|
||||
TRUE)))
|
||||
abort ();
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (symbol),
|
||||
input_section->owner, input_section, reloc->address, TRUE);
|
||||
value = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1101,24 +1101,19 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*rel->sym_ptr_ptr),
|
||||
input_bfd, input_section, rel->address, TRUE)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*rel->sym_ptr_ptr),
|
||||
input_bfd, input_section, rel->address, TRUE);
|
||||
break;
|
||||
case bfd_reloc_dangerous:
|
||||
if (! ((*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, err, input_bfd, input_section,
|
||||
rel->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, err, input_bfd, input_section, rel->address);
|
||||
break;
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*rel->sym_ptr_ptr),
|
||||
rel->howto->name, rel->addend, input_bfd,
|
||||
input_section, rel->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*rel->sym_ptr_ptr),
|
||||
rel->howto->name, rel->addend, input_bfd,
|
||||
input_section, rel->address);
|
||||
break;
|
||||
case bfd_reloc_outofrange:
|
||||
default:
|
||||
@ -1696,10 +1691,9 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
do not have a meaningful number for the
|
||||
location within the section that is being
|
||||
relocated. */
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, (bfd_vma) 0, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, (bfd_vma) 0, TRUE);
|
||||
addend = 0;
|
||||
}
|
||||
}
|
||||
@ -1712,10 +1706,9 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
/* This symbol is not being written out. Pass
|
||||
the address as 0, as with undefined_symbol,
|
||||
above. */
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string,
|
||||
input_bfd, input_section, (bfd_vma) 0);
|
||||
}
|
||||
|
||||
addend = alpha_convert_external_reloc (output_bfd, info,
|
||||
@ -1839,10 +1832,9 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
&& h->indx == -1)
|
||||
{
|
||||
/* This symbol is not being written out. */
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, r_vaddr - input_section->vma);
|
||||
}
|
||||
|
||||
relocation = alpha_convert_external_reloc (output_bfd,
|
||||
@ -1896,11 +1888,9 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section,
|
||||
r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
r_vaddr - input_section->vma, TRUE);
|
||||
relocation = 0;
|
||||
}
|
||||
}
|
||||
@ -1942,12 +1932,10 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
else
|
||||
name = bfd_section_name (input_bfd,
|
||||
symndx_to_section[r_symndx]);
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name,
|
||||
alpha_howto_table[r_type].name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, alpha_howto_table[r_type].name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
r_vaddr - input_section->vma);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1967,10 +1955,9 @@ alpha_relocate_section (bfd *output_bfd,
|
||||
|
||||
if (gp_usedp && gp_undefined)
|
||||
{
|
||||
if (! ((*info->callbacks->reloc_dangerous)
|
||||
(info, _("GP relative relocation used when GP not defined"),
|
||||
input_bfd, input_section, r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, _("GP relative relocation used when GP not defined"),
|
||||
input_bfd, input_section, r_vaddr - input_section->vma);
|
||||
/* Only give the error once per link. */
|
||||
gp = 4;
|
||||
_bfd_set_gp_value (output_bfd, gp);
|
||||
|
@ -1562,12 +1562,9 @@ coff_arm_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
/* Emit a reloc if the backend thinks it needs it. */
|
||||
@ -1764,11 +1761,10 @@ coff_arm_relocate_section (bfd *output_bfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -647,14 +647,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
|
||||
/* Sanity check. */
|
||||
if (gap < -128 || gap > 126)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
/* Everything looks OK. Apply the relocation and update the
|
||||
src/dst address appropriately. */
|
||||
@ -679,14 +675,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
|
||||
/* Sanity check. */
|
||||
if (gap > 32766 || gap < -32768)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
/* Everything looks OK. Apply the relocation and update the
|
||||
src/dst address appropriately. */
|
||||
@ -769,14 +761,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
src_address += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
break;
|
||||
|
||||
/* A 16-bit absolute branch that is now an 8-bit pc-relative branch. */
|
||||
@ -793,14 +781,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
|
||||
/* Sanity check. */
|
||||
if (gap < -128 || gap > 126)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
/* Now fix the instruction itself. */
|
||||
switch (data[dst_address - 1])
|
||||
@ -840,14 +824,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
|
||||
/* Sanity check. */
|
||||
if (gap < -128 || gap > 126)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
/* Now fix the instruction. */
|
||||
switch (data[dst_address - 2])
|
||||
@ -1040,14 +1020,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
|
||||
/* Sanity check. */
|
||||
if (gap < -128 || gap > 126)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
/* Everything looks OK. Fix the condition in the instruction, apply
|
||||
the relocation, and update the src/dst address appropriately. */
|
||||
@ -1123,14 +1099,10 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
|
||||
src_address += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -244,14 +244,11 @@ extra_case (bfd *in_abfd,
|
||||
word and the pc's been incremented. */
|
||||
|
||||
if (gap > 128 || gap < -128)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (in_abfd, gap, data + *dst_ptr);
|
||||
(*dst_ptr)++;
|
||||
(*src_ptr)++;
|
||||
@ -268,14 +265,11 @@ extra_case (bfd *in_abfd,
|
||||
word and the pc's been incremented. */
|
||||
|
||||
if (gap > 32767 || gap < -32768)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_16 (in_abfd, (bfd_vma) gap, data + *dst_ptr);
|
||||
(*dst_ptr) += 2;
|
||||
(*src_ptr) += 2;
|
||||
|
@ -448,12 +448,9 @@ coff_i960_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
+ sec->output_offset);
|
||||
}
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
done = FALSE;
|
||||
@ -473,12 +470,11 @@ coff_i960_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* This symbol is apparently not from a COFF input file.
|
||||
We warn, and then assume that it is not a leaf
|
||||
function. */
|
||||
if (! ((*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("uncertain calling convention for non-COFF symbol"),
|
||||
input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("uncertain calling convention for non-COFF symbol"),
|
||||
input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
break;
|
||||
case C_LEAFSTAT:
|
||||
case C_LEAFEXT:
|
||||
@ -555,11 +551,10 @@ coff_i960_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -454,12 +454,9 @@ coff_mcore_relocate_section (bfd * output_bfd,
|
||||
+ sec->output_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
|
||||
my_name = h->root.root.string;
|
||||
}
|
||||
@ -519,11 +516,10 @@ coff_mcore_relocate_section (bfd * output_bfd,
|
||||
break;
|
||||
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), my_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd,
|
||||
input_section, rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), my_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd,
|
||||
input_section, rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -940,11 +940,10 @@ mips_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
if (gp_undefined)
|
||||
{
|
||||
if (! ((*info->callbacks->reloc_dangerous)
|
||||
(info, _("GP relative relocation used when GP not defined"),
|
||||
input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, _("GP relative relocation used when GP not defined"),
|
||||
input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma);
|
||||
/* Only give the error once per link. */
|
||||
gp = 4;
|
||||
_bfd_set_gp_value (output_bfd, gp);
|
||||
@ -1075,11 +1074,9 @@ mips_relocate_section (bfd *output_bfd,
|
||||
if (int_rel.r_symndx == -1)
|
||||
{
|
||||
/* This symbol is not being written out. */
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section,
|
||||
int_rel.r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma);
|
||||
int_rel.r_symndx = 0;
|
||||
}
|
||||
relocation = 0;
|
||||
@ -1151,11 +1148,9 @@ mips_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section,
|
||||
int_rel.r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma, TRUE);
|
||||
relocation = 0;
|
||||
}
|
||||
}
|
||||
@ -1223,11 +1218,10 @@ mips_relocate_section (bfd *output_bfd,
|
||||
name = NULL;
|
||||
else
|
||||
name = bfd_section_name (input_bfd, s);
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
int_rel.r_vaddr - input_section->vma);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1026,12 +1026,9 @@ coff_ppc_relocate_section (bfd *output_bfd,
|
||||
+ sec->output_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
rstat = bfd_reloc_ok;
|
||||
@ -1423,11 +1420,10 @@ coff_ppc_relocate_section (bfd *output_bfd,
|
||||
name = buf;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd,
|
||||
input_section, rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3367,15 +3367,12 @@ xcoff_ppc_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
if (info->unresolved_syms_in_objects != RM_IGNORE
|
||||
&& (h->flags & XCOFF_WAS_UNDEFINED) != 0)
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string,
|
||||
input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma,
|
||||
(info->unresolved_syms_in_objects
|
||||
== RM_GENERATE_ERROR))))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string,
|
||||
input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma,
|
||||
info->unresolved_syms_in_objects == RM_GENERATE_ERROR);
|
||||
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
{
|
||||
@ -3455,11 +3452,10 @@ xcoff_ppc_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
sprintf (reloc_type_name, "0x%02x", rel->r_type);
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, reloc_type_name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, reloc_type_name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
|
||||
/* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */
|
||||
|
@ -2837,12 +2837,9 @@ sh_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
+ sec->output_offset);
|
||||
}
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
|
||||
@ -2875,11 +2872,10 @@ sh_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
name = buf;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -563,12 +563,9 @@ coff_tic80_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
addr = rel->r_vaddr - input_section->vma;
|
||||
@ -688,11 +685,10 @@ coff_tic80_relocate_section (bfd *output_bfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -315,14 +315,11 @@ w65_reloc16_extra_cases (bfd *abfd,
|
||||
|
||||
gap -= dot + 1;
|
||||
if (gap < -128 || gap > 127)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (abfd, gap, data + dst_address);
|
||||
dst_address += 1;
|
||||
src_address += 1;
|
||||
@ -340,14 +337,10 @@ w65_reloc16_extra_cases (bfd *abfd,
|
||||
/* This wraps within the page, so ignore the relativeness, look at the
|
||||
high part. */
|
||||
if ((gap & 0xf0000) != (dot & 0xf0000))
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
gap -= dot + 2;
|
||||
bfd_put_16 (abfd, gap, data + dst_address);
|
||||
|
@ -188,14 +188,11 @@ extra_case (bfd *in_abfd,
|
||||
val = bfd_coff_reloc16_get_value (reloc, link_info,
|
||||
input_section);
|
||||
if (val>127 || val<-128) /* Test for overflow. */
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (in_abfd, val, data + *dst_ptr);
|
||||
(*dst_ptr) += 1;
|
||||
(*src_ptr) += 1;
|
||||
@ -247,14 +244,11 @@ extra_case (bfd *in_abfd,
|
||||
the offset. */
|
||||
|
||||
if (gap >= 128 || gap < -128)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (in_abfd, gap, data + *dst_ptr);
|
||||
(*dst_ptr)++;
|
||||
(*src_ptr)++;
|
||||
|
@ -264,14 +264,11 @@ extra_case (bfd *in_abfd,
|
||||
abort ();
|
||||
gap /= 2;
|
||||
if (gap > 128 || gap < -128)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (in_abfd, gap, data + *dst_ptr);
|
||||
(*dst_ptr)++;
|
||||
(*src_ptr)++;
|
||||
@ -293,14 +290,11 @@ extra_case (bfd *in_abfd,
|
||||
gap /= 2;
|
||||
|
||||
if (gap > 0 || gap < -127)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_8 (in_abfd,
|
||||
(bfd_get_8 ( in_abfd, data + *dst_ptr) & 0x80) + (-gap & 0x7f),
|
||||
data + *dst_ptr);
|
||||
@ -321,14 +315,11 @@ extra_case (bfd *in_abfd,
|
||||
if (gap & 1)
|
||||
abort ();
|
||||
if (gap > 4096 || gap < -4095)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
gap /= 2;
|
||||
bfd_put_16 (in_abfd,
|
||||
(bfd_get_16 ( in_abfd, data + *dst_ptr) & 0xf000) | (-gap & 0x0fff),
|
||||
@ -348,14 +339,11 @@ extra_case (bfd *in_abfd,
|
||||
int gap = dst - dot - 2;
|
||||
|
||||
if (gap > 32767 || gap < -32768)
|
||||
{
|
||||
if (! ((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address)))
|
||||
abort ();
|
||||
}
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
|
||||
reloc->howto->name, reloc->addend, input_section->owner,
|
||||
input_section, reloc->address);
|
||||
|
||||
bfd_put_16 (in_abfd, (bfd_vma) gap, data + *dst_ptr);
|
||||
(*dst_ptr) += 2;
|
||||
(*src_ptr) += 2;
|
||||
|
@ -1250,15 +1250,11 @@ xcoff64_ppc_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
if (info->unresolved_syms_in_objects != RM_IGNORE
|
||||
&& (h->flags & XCOFF_WAS_UNDEFINED) != 0)
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string,
|
||||
input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma,
|
||||
(info->unresolved_syms_in_objects
|
||||
== RM_GENERATE_ERROR))))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma,
|
||||
info->unresolved_syms_in_objects == RM_GENERATE_ERROR);
|
||||
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
{
|
||||
@ -1337,11 +1333,10 @@ xcoff64_ppc_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
sprintf (reloc_type_name, "0x%02x", rel->r_type);
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, reloc_type_name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, reloc_type_name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
|
||||
/* Add RELOCATION to the right bits of VALUE_TO_RELOCATE. */
|
||||
|
@ -2515,10 +2515,8 @@ _bfd_coff_link_input_bfd (struct coff_final_link_info *flaginfo, bfd *input_bfd)
|
||||
if (name == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, o,
|
||||
irel->r_vaddr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, o, irel->r_vaddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2834,18 +2832,14 @@ _bfd_coff_reloc_link_order (bfd *output_bfd,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(link_order->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (output_bfd,
|
||||
link_order->u.reloc.p->u.section)
|
||||
: link_order->u.reloc.p->u.name),
|
||||
howto->name, link_order->u.reloc.p->addend,
|
||||
(bfd *) NULL, (asection *) NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(link_order->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (output_bfd,
|
||||
link_order->u.reloc.p->u.section)
|
||||
: link_order->u.reloc.p->u.name),
|
||||
howto->name, link_order->u.reloc.p->addend,
|
||||
(bfd *) NULL, (asection *) NULL, (bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
loc = link_order->offset * bfd_octets_per_byte (output_bfd);
|
||||
@ -2901,10 +2895,9 @@ _bfd_coff_reloc_link_order (bfd *output_bfd,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, link_order->u.reloc.p->u.name, (bfd *) NULL,
|
||||
(asection *) NULL, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, link_order->u.reloc.p->u.name,
|
||||
(bfd *) NULL, (asection *) NULL, (bfd_vma) 0);
|
||||
irel->r_symndx = 0;
|
||||
}
|
||||
}
|
||||
@ -3069,12 +3062,9 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
/* If the input section defining the symbol has been discarded
|
||||
@ -3144,11 +3134,10 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
23
bfd/ecoff.c
23
bfd/ecoff.c
@ -4015,17 +4015,12 @@ ecoff_reloc_link_order (bfd *output_bfd,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, NULL,
|
||||
(link_order->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (output_bfd, section)
|
||||
: link_order->u.reloc.p->u.name),
|
||||
rel.howto->name, addend, NULL,
|
||||
NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL,
|
||||
(link_order->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (output_bfd, section)
|
||||
: link_order->u.reloc.p->u.name),
|
||||
rel.howto->name, addend, NULL, NULL, (bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
ok = bfd_set_section_contents (output_bfd, output_section, (void *) buf,
|
||||
@ -4055,10 +4050,8 @@ ecoff_reloc_link_order (bfd *output_bfd,
|
||||
in.r_symndx = h->indx;
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL,
|
||||
NULL, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0);
|
||||
in.r_symndx = 0;
|
||||
}
|
||||
in.r_extern = 1;
|
||||
|
@ -2594,12 +2594,11 @@ extern asection _bfd_elf_large_com_section;
|
||||
bfd_boolean err; \
|
||||
err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR \
|
||||
|| ELF_ST_VISIBILITY (h->other) != STV_DEFAULT); \
|
||||
if (!info->callbacks->undefined_symbol (info, \
|
||||
h->root.root.string, \
|
||||
input_bfd, \
|
||||
input_section, \
|
||||
rel->r_offset, err)) \
|
||||
return FALSE; \
|
||||
(*info->callbacks->undefined_symbol) (info, \
|
||||
h->root.root.string, \
|
||||
input_bfd, \
|
||||
input_section, \
|
||||
rel->r_offset, err); \
|
||||
warned = TRUE; \
|
||||
} \
|
||||
(void) unresolved_reloc; \
|
||||
|
@ -410,18 +410,15 @@ mn10200_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol) (info, name, input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -441,10 +438,8 @@ mn10200_elf_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2151,18 +2151,14 @@ mn10300_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name,
|
||||
howto->name, (bfd_vma) 0, input_bfd,
|
||||
input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
|
@ -1462,25 +1462,19 @@ elf_arc_relocate_section (bfd * output_bfd,
|
||||
{
|
||||
/* Fail if it is linking for PIE and the symbol is
|
||||
undefined. */
|
||||
if (bfd_link_executable (info)
|
||||
&& !(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset, TRUE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (bfd_link_executable (info))
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset, TRUE);
|
||||
reloc_data.sym_value = h->plt.offset;
|
||||
reloc_data.sym_section = htab->splt;
|
||||
|
||||
reloc_data.should_relocate = TRUE;
|
||||
}
|
||||
else if (!bfd_link_pic (info)
|
||||
&& !(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset, TRUE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else if (!bfd_link_pic (info))
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_offset, TRUE);
|
||||
}
|
||||
|
||||
if (h->got.glist != NULL)
|
||||
|
@ -11509,14 +11509,11 @@ elf32_arm_relocate_section (bfd * output_bfd,
|
||||
&& r_symndx != STN_UNDEF
|
||||
&& bfd_is_und_section (sec)
|
||||
&& ELF_ST_BIND (sym->st_info) != STB_WEAK)
|
||||
{
|
||||
if (!info->callbacks->undefined_symbol
|
||||
(info, bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name),
|
||||
input_bfd, input_section,
|
||||
rel->r_offset, TRUE))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name),
|
||||
input_bfd, input_section,
|
||||
rel->r_offset, TRUE);
|
||||
|
||||
if (globals->use_rel)
|
||||
{
|
||||
@ -11736,20 +11733,15 @@ elf32_arm_relocate_section (bfd * output_bfd,
|
||||
/* If the overflowing reloc was to an undefined symbol,
|
||||
we have already printed one error message and there
|
||||
is no point complaining again. */
|
||||
if ((! h ||
|
||||
h->root.type != bfd_link_hash_undefined)
|
||||
&& (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset))))
|
||||
return FALSE;
|
||||
if (!h || h->root.type != bfd_link_hash_undefined)
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -11770,10 +11762,8 @@ elf32_arm_relocate_section (bfd * output_bfd,
|
||||
|
||||
common_error:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1487,14 +1487,13 @@ elf32_avr_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL),
|
||||
name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -1516,11 +1515,8 @@ elf32_avr_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1623,12 +1623,9 @@ bfin_relocate_section (bfd * output_bfd,
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
if (!(info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
@ -3209,13 +3206,13 @@ bfinfdpic_relocate_section (bfd * output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -3237,11 +3234,8 @@ bfinfdpic_relocate_section (bfd * output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1472,18 +1472,14 @@ elf32_cr16_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -1503,10 +1499,8 @@ elf32_cr16_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
/* Fall through. */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -765,18 +765,14 @@ elf32_cr16c_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -796,10 +792,8 @@ elf32_cr16c_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1973,7 +1973,7 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), symname, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
if (additional_relocation_error_msg_count > 0)
|
||||
@ -2010,9 +2010,8 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, symname, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, symname, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2033,11 +2032,8 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, symname, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, symname, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -909,18 +909,14 @@ elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -940,10 +936,8 @@ elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
/* Fall through. */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -498,18 +498,14 @@ elf32_d10v_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -529,10 +525,8 @@ elf32_d10v_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -547,13 +547,13 @@ epiphany_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -578,11 +578,8 @@ epiphany_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -576,15 +576,14 @@ fr30_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -605,11 +604,8 @@ fr30_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4031,13 +4031,13 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -4065,9 +4065,6 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
input_bfd, input_section, rel->r_offset, name, msg);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -320,15 +320,14 @@ ft32_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -349,11 +348,8 @@ ft32_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -507,18 +507,14 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -538,10 +534,8 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3733,10 +3733,9 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
&& ELF_ST_VISIBILITY (eh->other) == STV_DEFAULT
|
||||
&& eh->type == STT_PARISC_MILLI)
|
||||
{
|
||||
if (! info->callbacks->undefined_symbol
|
||||
(info, eh_name (eh), input_bfd,
|
||||
input_section, rela->r_offset, FALSE))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, eh_name (eh), input_bfd,
|
||||
input_section, rela->r_offset, FALSE);
|
||||
warned_undef = TRUE;
|
||||
}
|
||||
}
|
||||
@ -4311,12 +4310,9 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (hh ? &hh->eh.root : NULL), sym_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rela->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (hh ? &hh->eh.root : NULL), sym_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rela->r_offset);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -1137,15 +1137,13 @@ i370_elf_relocate_section (bfd *output_bfd,
|
||||
;
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other))))
|
||||
{
|
||||
ret = FALSE;
|
||||
continue;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)));
|
||||
ret = FALSE;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4961,13 +4961,9 @@ check_relocation_error:
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -1196,13 +1196,13 @@ elf32_i860_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -1224,11 +1224,8 @@ elf32_i860_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1458,13 +1458,13 @@ ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -1489,11 +1489,8 @@ ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -678,13 +678,13 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -706,11 +706,8 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1149,17 +1149,14 @@ lm32_elf_relocate_section (bfd *output_bfd,
|
||||
if ((h != NULL)
|
||||
&& (h->root.type == bfd_link_hash_undefweak))
|
||||
break;
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -1179,10 +1176,8 @@ lm32_elf_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -478,12 +478,9 @@ m32c_elf_relocate_section
|
||||
else if (h->root.type == bfd_link_hash_undefweak)
|
||||
;
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol) (info, h->root.root.string,
|
||||
input_bfd, input_section,
|
||||
rel->r_offset, TRUE);
|
||||
}
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
@ -613,15 +610,14 @@ m32c_elf_relocate_section
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -642,11 +638,8 @@ m32c_elf_relocate_section
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2580,14 +2580,11 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
&& ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
|
||||
;
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)))))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)));
|
||||
}
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
@ -3062,17 +3059,14 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -3092,10 +3086,8 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, errmsg, name, input_bfd, input_section,
|
||||
offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, errmsg, name, input_bfd,
|
||||
input_section, offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -958,7 +958,6 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
bfd_vma val;
|
||||
const char * msg;
|
||||
char * buf;
|
||||
bfd_boolean res;
|
||||
|
||||
r_symndx = ELF32_R_SYM (rel->r_info);
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
@ -1121,8 +1120,8 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
buf = xmalloc (strlen (msg) + strlen (name) + 10);
|
||||
sprintf (buf, msg, name);
|
||||
|
||||
(* info->callbacks->warning)
|
||||
(info, buf, name, input_bfd, NULL, rel->r_offset);
|
||||
(*info->callbacks->warning)
|
||||
(info, buf, name, input_bfd, NULL, rel->r_offset);
|
||||
free (buf);
|
||||
}
|
||||
|
||||
@ -1156,11 +1155,9 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
"code.");
|
||||
buf = xmalloc (strlen (msg) + 128);
|
||||
sprintf (buf, msg, phys_addr);
|
||||
res = (*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, insn_addr);
|
||||
(*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, insn_addr);
|
||||
free (buf);
|
||||
if (! res)
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1176,11 +1173,9 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
(long) (relocation + rel->r_addend),
|
||||
insn_page, m68hc11_phys_addr (pinfo, insn_addr),
|
||||
(long) (insn_addr));
|
||||
res = (*info->callbacks->warning)
|
||||
(info, buf, name, input_bfd, input_section, rel->r_offset);
|
||||
(*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
free (buf);
|
||||
if (! res)
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1190,12 +1185,9 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
"normal address space at %04lx");
|
||||
buf = xmalloc (strlen (msg) + 128);
|
||||
sprintf (buf, msg, phys_page, phys_addr, insn_addr);
|
||||
res = (*info->callbacks->warning)
|
||||
(info, buf, name, input_bfd, input_section, insn_addr);
|
||||
(*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, insn_addr);
|
||||
free (buf);
|
||||
if (! res)
|
||||
return FALSE;
|
||||
|
||||
relocation = phys_addr;
|
||||
break;
|
||||
}
|
||||
@ -1235,11 +1227,9 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
"offset the address in your code");
|
||||
buf = xmalloc (strlen (msg) + 128);
|
||||
sprintf (buf, msg, phys_addr);
|
||||
res = (*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, insn_addr);
|
||||
(*info->callbacks->warning) (info, buf, name, input_bfd,
|
||||
input_section, insn_addr);
|
||||
free (buf);
|
||||
if (! res)
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1262,17 +1252,14 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -1292,10 +1279,8 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4185,13 +4185,9 @@ elf_m68k_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
if (!(info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -508,13 +508,13 @@ mep_elf_relocate_section
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -536,11 +536,8 @@ mep_elf_relocate_section
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1988,15 +1988,14 @@ elf_metag_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (hh ? &hh->eh.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2017,11 +2016,8 @@ elf_metag_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1556,16 +1556,14 @@ microblaze_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -1584,9 +1582,8 @@ microblaze_elf_relocate_section (bfd *output_bfd,
|
||||
errmsg = _("internal error: unknown error");
|
||||
/* Fall through. */
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, errmsg, name, input_bfd, input_section, offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, errmsg, name, input_bfd,
|
||||
input_section, offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -270,15 +270,14 @@ moxie_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -299,11 +298,8 @@ moxie_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1341,15 +1341,14 @@ elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset);
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -1370,11 +1369,8 @@ elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (!r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -385,13 +385,13 @@ mt_elf_relocate_section
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -409,11 +409,8 @@ mt_elf_relocate_section
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5424,16 +5424,14 @@ check_reloc:
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -5452,10 +5450,9 @@ check_reloc:
|
||||
errmsg = _("internal error: unknown error");
|
||||
/* Fall through. */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, errmsg, name, input_bfd, input_section, offset)))
|
||||
return FALSE;
|
||||
common_error:
|
||||
(*info->callbacks->warning) (info, errmsg, name, input_bfd,
|
||||
input_section, offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -13059,25 +13056,22 @@ nds32_elf_get_relocated_section_contents (bfd *abfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address, TRUE)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address, TRUE);
|
||||
break;
|
||||
case bfd_reloc_dangerous:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message, input_bfd, input_section,
|
||||
(*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_outofrange:
|
||||
/* PR ld/13730:
|
||||
|
@ -4480,16 +4480,16 @@ nios2_elf32_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow (info, NULL, name,
|
||||
howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section,
|
||||
rel->r_offset);
|
||||
(*info->callbacks->reloc_overflow) (info, NULL, name,
|
||||
howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section,
|
||||
rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol (info, name, input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, TRUE);
|
||||
(*info->callbacks->undefined_symbol) (info, name, input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -4515,8 +4515,8 @@ nios2_elf32_relocate_section (bfd *output_bfd,
|
||||
|
||||
if (msg)
|
||||
{
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
@ -1249,13 +1249,13 @@ or1k_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -1277,11 +1277,8 @@ or1k_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (!r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8567,13 +8567,12 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||
at a symbol not in this object. */
|
||||
if (unresolved_reloc)
|
||||
{
|
||||
if (! (*info->callbacks->undefined_symbol) (info,
|
||||
h->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset,
|
||||
TRUE))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol) (info,
|
||||
h->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset,
|
||||
TRUE);
|
||||
goto copy_reloc;
|
||||
}
|
||||
break;
|
||||
@ -9509,13 +9508,9 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
||||
&& (h->root.type == bfd_link_hash_undefweak
|
||||
|| h->root.type == bfd_link_hash_undefined)
|
||||
&& is_branch_reloc (r_type)))
|
||||
{
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), sym_name,
|
||||
howto->name, rel->r_addend,
|
||||
input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), sym_name, howto->name,
|
||||
rel->r_addend, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -295,7 +295,6 @@ rl78_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
|
||||
static bfd_vma
|
||||
get_symbol_value (const char * name,
|
||||
bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * input_bfd,
|
||||
asection * input_section,
|
||||
@ -312,12 +311,8 @@ get_symbol_value (const char * name,
|
||||
|| (h->type != bfd_link_hash_defined
|
||||
&& h->type != bfd_link_hash_defweak))
|
||||
{
|
||||
bfd_reloc_status_type res;
|
||||
|
||||
res = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
if (status)
|
||||
* status = res;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -327,44 +322,36 @@ get_symbol_value (const char * name,
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_romstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
get_romstart (struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
int offset)
|
||||
{
|
||||
static bfd_boolean cached = FALSE;
|
||||
static bfd_vma cached_value = 0;
|
||||
static bfd_reloc_status_type cached_status;
|
||||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("_start", & cached_status, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("_start", info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
if (status)
|
||||
* status = cached_status;
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_ramstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
get_ramstart (struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
int offset)
|
||||
{
|
||||
static bfd_boolean cached = FALSE;
|
||||
static bfd_vma cached_value = 0;
|
||||
static bfd_reloc_status_type cached_status;
|
||||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("__datastart", & cached_status, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("__datastart", info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
if (status)
|
||||
* status = cached_status;
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
@ -573,12 +560,12 @@ rl78_special_reloc (bfd * input_bfd,
|
||||
break;
|
||||
|
||||
case R_RL78_OPromtop:
|
||||
relocation = get_romstart (&r, NULL, input_bfd, input_section,
|
||||
relocation = get_romstart (NULL, input_bfd, input_section,
|
||||
reloc->address);
|
||||
break;
|
||||
|
||||
case R_RL78_OPramtop:
|
||||
relocation = get_ramstart (&r, NULL, input_bfd, input_section,
|
||||
relocation = get_ramstart (NULL, input_bfd, input_section,
|
||||
reloc->address);
|
||||
break;
|
||||
}
|
||||
@ -1068,12 +1055,12 @@ rl78_elf_relocate_section
|
||||
break;
|
||||
|
||||
case R_RL78_OPromtop:
|
||||
relocation = get_romstart (&r, info, input_bfd, input_section, rel->r_offset);
|
||||
relocation = get_romstart (info, input_bfd, input_section, rel->r_offset);
|
||||
(void) rl78_compute_complex_reloc (r_type, relocation, input_section);
|
||||
break;
|
||||
|
||||
case R_RL78_OPramtop:
|
||||
relocation = get_ramstart (&r, info, input_bfd, input_section, rel->r_offset);
|
||||
relocation = get_ramstart (info, input_bfd, input_section, rel->r_offset);
|
||||
(void) rl78_compute_complex_reloc (r_type, relocation, input_section);
|
||||
break;
|
||||
|
||||
@ -1094,15 +1081,14 @@ rl78_elf_relocate_section
|
||||
if (r_type == R_RL78_DIR24S_PCREL)
|
||||
msg = _("%B(%A): error: call to undefined function '%s'");
|
||||
else
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_other:
|
||||
@ -1128,9 +1114,6 @@ rl78_elf_relocate_section
|
||||
|
||||
if (msg)
|
||||
_bfd_error_handler (msg, input_bfd, input_section, name);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1932,12 +1915,12 @@ rl78_offset_for_reloc (bfd * abfd,
|
||||
break;
|
||||
|
||||
case R_RL78_OPromtop:
|
||||
symval = get_romstart (NULL, info, input_bfd, input_section, rel->r_offset);
|
||||
symval = get_romstart (info, input_bfd, input_section, rel->r_offset);
|
||||
(void) rl78_compute_complex_reloc (r_type, symval, input_section);
|
||||
break;
|
||||
|
||||
case R_RL78_OPramtop:
|
||||
symval = get_ramstart (NULL, info, input_bfd, input_section, rel->r_offset);
|
||||
symval = get_ramstart (info, input_bfd, input_section, rel->r_offset);
|
||||
(void) rl78_compute_complex_reloc (r_type, symval, input_section);
|
||||
break;
|
||||
|
||||
|
@ -317,7 +317,6 @@ rx_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
|
||||
|
||||
static bfd_vma
|
||||
get_symbol_value (const char * name,
|
||||
bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
bfd * input_bfd,
|
||||
asection * input_section,
|
||||
@ -331,7 +330,7 @@ get_symbol_value (const char * name,
|
||||
if (h == NULL
|
||||
|| (h->type != bfd_link_hash_defined
|
||||
&& h->type != bfd_link_hash_defweak))
|
||||
* status = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, offset, TRUE);
|
||||
else
|
||||
value = (h->u.def.value
|
||||
@ -340,6 +339,7 @@ get_symbol_value (const char * name,
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_symbol_value_maybe (const char * name,
|
||||
struct bfd_link_info * info)
|
||||
@ -362,8 +362,7 @@ get_symbol_value_maybe (const char * name,
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_gp (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
get_gp (struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
int offset)
|
||||
@ -373,15 +372,14 @@ get_gp (bfd_reloc_status_type * status,
|
||||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("__gp", status, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("__gp", info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_romstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
get_romstart (struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
int offset)
|
||||
@ -391,15 +389,14 @@ get_romstart (bfd_reloc_status_type * status,
|
||||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("_start", status, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("_start", info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
}
|
||||
|
||||
static bfd_vma
|
||||
get_ramstart (bfd_reloc_status_type * status,
|
||||
struct bfd_link_info * info,
|
||||
get_ramstart (struct bfd_link_info * info,
|
||||
bfd * abfd,
|
||||
asection * sec,
|
||||
int offset)
|
||||
@ -409,7 +406,7 @@ get_ramstart (bfd_reloc_status_type * status,
|
||||
|
||||
if (!cached)
|
||||
{
|
||||
cached_value = get_symbol_value ("__datastart", status, info, abfd, sec, offset);
|
||||
cached_value = get_symbol_value ("__datastart", info, abfd, sec, offset);
|
||||
cached = TRUE;
|
||||
}
|
||||
return cached_value;
|
||||
@ -553,7 +550,6 @@ rx_elf_relocate_section
|
||||
bfd_vma entry_vma;
|
||||
int idx;
|
||||
char *buf;
|
||||
bfd_reloc_status_type tstat = 0;
|
||||
|
||||
if (table_default_cache != name)
|
||||
{
|
||||
@ -571,18 +567,14 @@ rx_elf_relocate_section
|
||||
buf = (char *) malloc (13 + strlen (name + 20));
|
||||
|
||||
sprintf (buf, "$tablestart$%s", name + 20);
|
||||
tstat = 0;
|
||||
table_start_cache = get_symbol_value (buf,
|
||||
&tstat,
|
||||
info,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset);
|
||||
|
||||
sprintf (buf, "$tableend$%s", name + 20);
|
||||
tstat = 0;
|
||||
table_end_cache = get_symbol_value (buf,
|
||||
&tstat,
|
||||
info,
|
||||
input_bfd,
|
||||
input_section,
|
||||
@ -956,7 +948,7 @@ rx_elf_relocate_section
|
||||
|
||||
case R_RX_RH_GPRELB:
|
||||
WARN_REDHAT ("RX_RH_GPRELB");
|
||||
relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
|
||||
relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
|
||||
RANGE (0, 65535);
|
||||
#if RX_OPCODE_BIG_ENDIAN
|
||||
OP (1) = relocation;
|
||||
@ -969,7 +961,7 @@ rx_elf_relocate_section
|
||||
|
||||
case R_RX_RH_GPRELW:
|
||||
WARN_REDHAT ("RX_RH_GPRELW");
|
||||
relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
|
||||
relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
|
||||
ALIGN (1);
|
||||
relocation >>= 1;
|
||||
RANGE (0, 65535);
|
||||
@ -984,7 +976,7 @@ rx_elf_relocate_section
|
||||
|
||||
case R_RX_RH_GPRELL:
|
||||
WARN_REDHAT ("RX_RH_GPRELL");
|
||||
relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset);
|
||||
relocation -= get_gp (info, input_bfd, input_section, rel->r_offset);
|
||||
ALIGN (3);
|
||||
relocation >>= 2;
|
||||
RANGE (0, 65535);
|
||||
@ -1407,11 +1399,11 @@ rx_elf_relocate_section
|
||||
break;
|
||||
|
||||
case R_RX_OPromtop:
|
||||
RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset));
|
||||
RX_STACK_PUSH (get_romstart (info, input_bfd, input_section, rel->r_offset));
|
||||
break;
|
||||
|
||||
case R_RX_OPramtop:
|
||||
RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset));
|
||||
RX_STACK_PUSH (get_ramstart (info, input_bfd, input_section, rel->r_offset));
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1431,15 +1423,14 @@ rx_elf_relocate_section
|
||||
if (r_type == R_RX_DIR24S_PCREL)
|
||||
msg = _("%B(%A): error: call to undefined function '%s'");
|
||||
else
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_other:
|
||||
@ -1465,9 +1456,6 @@ rx_elf_relocate_section
|
||||
|
||||
if (msg)
|
||||
_bfd_error_handler (msg, input_bfd, input_section, name);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1902,11 +1890,11 @@ rx_offset_for_reloc (bfd * abfd,
|
||||
break;
|
||||
|
||||
case R_RX_OPromtop:
|
||||
RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset));
|
||||
RX_STACK_PUSH (get_romstart (info, input_bfd, input_section, rel->r_offset));
|
||||
break;
|
||||
|
||||
case R_RX_OPramtop:
|
||||
RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset));
|
||||
RX_STACK_PUSH (get_ramstart (info, input_bfd, input_section, rel->r_offset));
|
||||
break;
|
||||
|
||||
case R_RX_DIR16UL:
|
||||
@ -1941,6 +1929,8 @@ rx_offset_for_reloc (bfd * abfd,
|
||||
|
||||
rel ++;
|
||||
}
|
||||
/* FIXME. */
|
||||
(void) r;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -3442,14 +3442,9 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -2667,12 +2667,11 @@ s3_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other))))
|
||||
return bfd_reloc_undefined;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other));
|
||||
relocation = 0;
|
||||
}
|
||||
}
|
||||
@ -2718,16 +2717,14 @@ s3_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
/* If the overflowing reloc was to an undefined symbol,
|
||||
we have already printed one error message and there
|
||||
is no point complaining again. */
|
||||
if (((!h) || (h->root.root.type != bfd_link_hash_undefined))
|
||||
&& (!((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset))))
|
||||
return FALSE;
|
||||
if (!h || h->root.root.type != bfd_link_hash_undefined)
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2752,9 +2749,8 @@ s3_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2440,12 +2440,11 @@ s7_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other))))
|
||||
return bfd_reloc_undefined;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other));
|
||||
relocation = 0;
|
||||
}
|
||||
}
|
||||
@ -2528,16 +2527,14 @@ s7_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
/* If the overflowing reloc was to an undefined symbol,
|
||||
we have already printed one error message and there
|
||||
is no point complaining again. */
|
||||
if (((!h) || (h->root.root.type != bfd_link_hash_undefined))
|
||||
&& (!((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset))))
|
||||
return FALSE;
|
||||
if (!h || h->root.root.type != bfd_link_hash_undefined)
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2557,9 +2554,8 @@ s7_bfd_score_elf_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3952,10 +3952,10 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
datalabel processing here. Make sure this does not change
|
||||
without notice. */
|
||||
if ((sym->st_other & STO_SH5_ISA32) != 0)
|
||||
((*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("Unexpected STO_SH5_ISA32 on local symbol is not handled"),
|
||||
input_bfd, input_section, rel->r_offset));
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("Unexpected STO_SH5_ISA32 on local symbol is not handled"),
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
/* Handled below. */
|
||||
@ -4141,14 +4141,11 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
&& ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
|
||||
;
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! info->callbacks->undefined_symbol
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other))))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)));
|
||||
}
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
@ -5520,11 +5517,9 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
if (*name == '\0')
|
||||
name = bfd_section_name (input_bfd, sec);
|
||||
}
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -530,11 +530,9 @@ shmedia_prepare_reloc (struct bfd_link_info *info, bfd *abfd,
|
||||
&& ((*relocation + rel->r_addend) & 1) == 0)
|
||||
msg = _("PTA mismatch: a SHcompact address (bit 0 == 0)");
|
||||
|
||||
if (msg != NULL
|
||||
&& ! ((*info->callbacks->reloc_dangerous)
|
||||
(info, msg, abfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
if (msg != NULL)
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, msg, abfd, input_section, rel->r_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -4908,12 +4908,11 @@ spu_elf_relocate_section (bfd *output_bfd,
|
||||
bfd_boolean err;
|
||||
err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other) != STV_DEFAULT);
|
||||
if (!info->callbacks->undefined_symbol (info,
|
||||
h->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, err))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol) (info,
|
||||
h->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, err);
|
||||
}
|
||||
sym_name = h->root.root.string;
|
||||
}
|
||||
@ -5050,17 +5049,14 @@ spu_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), sym_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), sym_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, sym_name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, sym_name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -5081,10 +5077,8 @@ spu_elf_relocate_section (bfd *output_bfd,
|
||||
|
||||
common_error:
|
||||
ret = FALSE;
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, sym_name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, sym_name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2719,20 +2719,16 @@ elf32_tic6x_relocate_section (bfd *output_bfd,
|
||||
/* If the overflowing reloc was to an undefined symbol,
|
||||
we have already printed one error message and there
|
||||
is no point complaining again. */
|
||||
if ((! h ||
|
||||
h->root.type != bfd_link_hash_undefined)
|
||||
&& (!((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset))))
|
||||
return FALSE;
|
||||
if (!h || h->root.type != bfd_link_hash_undefined)
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol) (info, name, input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2753,10 +2749,8 @@ elf32_tic6x_relocate_section (bfd *output_bfd,
|
||||
|
||||
common_error:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3657,15 +3657,14 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -3686,11 +3685,8 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2271,18 +2271,14 @@ v850_elf_relocate_section (bfd *output_bfd,
|
||||
switch ((int) r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -2314,10 +2310,8 @@ v850_elf_relocate_section (bfd *output_bfd,
|
||||
/* fall through */
|
||||
|
||||
common_error:
|
||||
if (!((*info->callbacks->warning)
|
||||
(info, msg, name, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1738,11 +1738,9 @@ elf_vax_relocate_section (bfd *output_bfd,
|
||||
if (*name == '\0')
|
||||
name = bfd_section_name (input_bfd, sec);
|
||||
}
|
||||
if (!(info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -662,13 +662,13 @@ visium_elf_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
@ -690,11 +690,8 @@ visium_elf_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (!r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -920,15 +920,14 @@ xstormy16_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNU
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -949,11 +948,8 @@ xstormy16_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNU
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2702,12 +2702,10 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
r = contract_asm_expansion (contents, input_size, rel,
|
||||
&error_message);
|
||||
if (r != bfd_reloc_ok)
|
||||
{
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
|
||||
r_type = ELF32_R_TYPE (rel->r_info);
|
||||
}
|
||||
|
||||
@ -2759,12 +2757,9 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
}
|
||||
if (r != bfd_reloc_ok)
|
||||
{
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
|
||||
/* Done with work for relocatable link; continue with next reloc. */
|
||||
continue;
|
||||
@ -2864,10 +2859,9 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
error_message =
|
||||
_("dynamic relocation in read-only section");
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
|
||||
if (dynamic_symbol)
|
||||
@ -2961,10 +2955,9 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
error_message =
|
||||
_("TLS relocation invalid without dynamic sections");
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2985,10 +2978,9 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
{
|
||||
error_message =
|
||||
_("dynamic relocation in read-only section");
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
|
||||
indx = h && h->dynindx != -1 ? h->dynindx : 0;
|
||||
@ -3030,12 +3022,9 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
(h && elf_xtensa_hash_entry (h) == htab->tlsbase);
|
||||
if (! replace_tls_insn (rel, input_bfd, input_section, contents,
|
||||
is_ld_model, &error_message))
|
||||
{
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (r_type != R_XTENSA_TLS_ARG || is_ld_model)
|
||||
{
|
||||
@ -3054,10 +3043,8 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
error_message =
|
||||
vsprint_msg ("invalid relocation for dynamic symbol", ": %s",
|
||||
strlen (name) + 2, name);
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section, rel->r_offset);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
@ -3105,10 +3092,8 @@ elf_xtensa_relocate_section (bfd *output_bfd,
|
||||
strlen (name) + 22,
|
||||
name, (int) rel->r_addend);
|
||||
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4825,11 +4825,9 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
if (*name == '\0')
|
||||
name = bfd_section_name (input_bfd, sec);
|
||||
}
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
ret_val = FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root.root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -3908,12 +3908,11 @@ elf64_hppa_relocate_section (bfd *output_bfd,
|
||||
bfd_boolean err;
|
||||
err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (eh->other) != STV_DEFAULT);
|
||||
if (!info->callbacks->undefined_symbol (info,
|
||||
eh->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, err))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol) (info,
|
||||
eh->root.root.string,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset, err);
|
||||
}
|
||||
|
||||
if (!bfd_link_relocatable (info)
|
||||
@ -3925,12 +3924,9 @@ elf64_hppa_relocate_section (bfd *output_bfd,
|
||||
if (info->unresolved_syms_in_objects == RM_IGNORE
|
||||
&& ELF_ST_VISIBILITY (eh->other) == STV_DEFAULT
|
||||
&& eh->type == STT_PARISC_MILLI)
|
||||
{
|
||||
if (! info->callbacks->undefined_symbol
|
||||
(info, eh_name (eh), input_bfd,
|
||||
input_section, rel->r_offset, FALSE))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, eh_name (eh), input_bfd,
|
||||
input_section, rel->r_offset, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3969,11 +3965,9 @@ elf64_hppa_relocate_section (bfd *output_bfd,
|
||||
sym_name = bfd_section_name (input_bfd, sym_sec);
|
||||
}
|
||||
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, (eh ? &eh->root : NULL), sym_name,
|
||||
howto->name, (bfd_vma) 0, input_bfd,
|
||||
input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (eh ? &eh->root : NULL), sym_name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -3902,10 +3902,9 @@ elf64_ia64_relocate_section (bfd *output_bfd,
|
||||
else
|
||||
name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
|
||||
sym_sec);
|
||||
if (!(*info->callbacks->warning) (info, _("unsupported reloc"),
|
||||
name, input_bfd,
|
||||
input_section, rel->r_offset))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, _("unsupported reloc"),
|
||||
name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
ret_val = FALSE;
|
||||
}
|
||||
break;
|
||||
@ -3960,15 +3959,14 @@ elf64_ia64_relocate_section (bfd *output_bfd,
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (!(*info->callbacks->reloc_overflow) (info,
|
||||
&h->root,
|
||||
name,
|
||||
howto->name,
|
||||
(bfd_vma) 0,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow) (info,
|
||||
&h->root,
|
||||
name,
|
||||
howto->name,
|
||||
(bfd_vma) 0,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1516,13 +1516,12 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
|
||||
if (r != bfd_reloc_ok)
|
||||
{
|
||||
bfd_boolean check_ok = TRUE;
|
||||
const char * msg = (const char *) NULL;
|
||||
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
check_ok = info->callbacks->reloc_overflow
|
||||
info->callbacks->reloc_overflow
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
@ -1530,9 +1529,8 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
case bfd_reloc_undefined:
|
||||
/* We may have sent this message above. */
|
||||
if (! undefined_signalled)
|
||||
check_ok = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
undefined_signalled = TRUE;
|
||||
break;
|
||||
|
||||
@ -1554,11 +1552,8 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
check_ok = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! check_ok)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15144,13 +15144,11 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
||||
&& (h->elf.root.type == bfd_link_hash_undefweak
|
||||
|| h->elf.root.type == bfd_link_hash_undefined)
|
||||
&& is_branch_reloc (r_type))))
|
||||
{
|
||||
if (!((*info->callbacks->reloc_overflow)
|
||||
(info, &h->elf.root, sym_name,
|
||||
reloc_name, orig_rel.r_addend,
|
||||
input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
info->callbacks->reloc_overflow (info, &h->elf.root,
|
||||
sym_name, reloc_name,
|
||||
orig_rel.r_addend,
|
||||
input_bfd, input_section,
|
||||
rel->r_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3357,14 +3357,9 @@ elf_s390_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -1508,10 +1508,10 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
datalabel processing here. Make sure this does not change
|
||||
without notice. */
|
||||
if ((sym->st_other & STO_SH5_ISA32) != 0)
|
||||
((*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("Unexpected STO_SH5_ISA32 on local symbol is not handled"),
|
||||
input_bfd, input_section, rel->r_offset));
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info,
|
||||
_("Unexpected STO_SH5_ISA32 on local symbol is not handled"),
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
/* Handled below. */
|
||||
@ -1650,14 +1650,11 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
&& ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
|
||||
;
|
||||
else if (!bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)))))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd,
|
||||
input_section, rel->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR
|
||||
|| ELF_ST_VISIBILITY (h->other)));
|
||||
}
|
||||
|
||||
if (sec != NULL && discarded_section (sec))
|
||||
@ -2081,11 +2078,9 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||
if (*name == '\0')
|
||||
name = bfd_section_name (input_bfd, sec);
|
||||
}
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -5372,13 +5372,9 @@ check_relocation_error:
|
||||
}
|
||||
|
||||
if (r == bfd_reloc_overflow)
|
||||
{
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
else
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
|
@ -1481,10 +1481,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
the old symbol override the new one as normally happens with
|
||||
symbols defined in dynamic objects. */
|
||||
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, &h->root, abfd, bfd_link_hash_common, sym->st_size)))
|
||||
return FALSE;
|
||||
|
||||
(*info->callbacks->multiple_common) (info, &h->root, abfd,
|
||||
bfd_link_hash_common, sym->st_size);
|
||||
if (sym->st_size > h->size)
|
||||
h->size = sym->st_size;
|
||||
|
||||
@ -1642,9 +1640,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
/* It would be best if we could set the hash table entry to a
|
||||
common symbol, but we don't know what to use for the section
|
||||
or the alignment. */
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, &h->root, abfd, bfd_link_hash_common, sym->st_size)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_common) (info, &h->root, abfd,
|
||||
bfd_link_hash_common, sym->st_size);
|
||||
|
||||
/* If the presumed common symbol in the dynamic object is
|
||||
larger, pretend that the new symbol has its size. */
|
||||
@ -9235,19 +9232,11 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
|
||||
&& (!h->ref_regular || flinfo->info->gc_sections)
|
||||
&& !elf_link_check_versioned_symbol (flinfo->info, bed, h)
|
||||
&& flinfo->info->unresolved_syms_in_shared_libs != RM_IGNORE)
|
||||
{
|
||||
if (!(flinfo->info->callbacks->undefined_symbol
|
||||
(flinfo->info, h->root.root.string,
|
||||
h->ref_regular ? NULL : h->root.u.undef.abfd,
|
||||
NULL, 0,
|
||||
(flinfo->info->unresolved_syms_in_shared_libs
|
||||
== RM_GENERATE_ERROR))))
|
||||
{
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
eoinfo->failed = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
(*flinfo->info->callbacks->undefined_symbol)
|
||||
(flinfo->info, h->root.root.string,
|
||||
h->ref_regular ? NULL : h->root.u.undef.abfd,
|
||||
NULL, 0,
|
||||
flinfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR);
|
||||
|
||||
/* Strip a global symbol defined in a discarded section. */
|
||||
if (h->indx == -3)
|
||||
@ -10761,9 +10750,8 @@ elf_reloc_link_order (bfd *output_bfd,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL, NULL, 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL, NULL, 0);
|
||||
indx = 0;
|
||||
}
|
||||
}
|
||||
@ -10798,13 +10786,9 @@ elf_reloc_link_order (bfd *output_bfd,
|
||||
link_order->u.reloc.p->u.section);
|
||||
else
|
||||
sym_name = link_order->u.reloc.p->u.name;
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, sym_name, howto->name, addend, NULL,
|
||||
NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow) (info, NULL, sym_name,
|
||||
howto->name, addend, NULL, NULL,
|
||||
(bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -6063,13 +6063,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
if (r_type != R_AARCH64_NONE && r_type != R_AARCH64_NULL
|
||||
&& bfd_is_und_section (sec)
|
||||
&& ELF_ST_BIND (sym->st_info) != STB_WEAK)
|
||||
{
|
||||
if (!info->callbacks->undefined_symbol
|
||||
(info, bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name),
|
||||
input_bfd, input_section, rel->r_offset, TRUE))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, bfd_elf_string_from_elf_section
|
||||
(input_bfd, symtab_hdr->sh_link, sym->st_name),
|
||||
input_bfd, input_section, rel->r_offset, TRUE);
|
||||
|
||||
relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
|
||||
|
||||
@ -6411,10 +6408,9 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
if (!(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
if (real_r_type == BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
|
||||
|| real_r_type == BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14)
|
||||
{
|
||||
@ -6456,10 +6452,8 @@ alignment than was declared where it was defined."),
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section,
|
||||
rel->r_offset, TRUE)))
|
||||
return FALSE;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -6480,10 +6474,8 @@ alignment than was declared where it was defined."),
|
||||
|
||||
common_error:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_dangerous)
|
||||
(info, error_message, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4428,10 +4428,9 @@ elfNN_ia64_relocate_section (bfd *output_bfd,
|
||||
else
|
||||
name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
|
||||
sym_sec);
|
||||
if (!(*info->callbacks->warning) (info, _("unsupported reloc"),
|
||||
name, input_bfd,
|
||||
input_section, rel->r_offset))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, _("unsupported reloc"),
|
||||
name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
ret_val = FALSE;
|
||||
}
|
||||
break;
|
||||
@ -4487,15 +4486,14 @@ missing_tls_sec:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (!(*info->callbacks->reloc_overflow) (info,
|
||||
&h->root,
|
||||
name,
|
||||
howto->name,
|
||||
(bfd_vma) 0,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow) (info,
|
||||
&h->root,
|
||||
name,
|
||||
howto->name,
|
||||
(bfd_vma) 0,
|
||||
input_bfd,
|
||||
input_section,
|
||||
rel->r_offset);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -5410,17 +5410,14 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
|
||||
http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf */
|
||||
symbol = 0;
|
||||
}
|
||||
else if ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, relocation->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other)))
|
||||
{
|
||||
return bfd_reloc_undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
return bfd_reloc_notsupported;
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.root.string, input_bfd,
|
||||
input_section, relocation->r_offset,
|
||||
(info->unresolved_syms_in_objects == RM_GENERATE_ERROR)
|
||||
|| ELF_ST_VISIBILITY (h->root.other));
|
||||
return bfd_reloc_undefined;
|
||||
}
|
||||
|
||||
target_is_16_bit_code_p = ELF_ST_IS_MIPS16 (h->root.other);
|
||||
@ -10250,10 +10247,9 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
htab->small_data_overflow_reported = TRUE;
|
||||
(*info->callbacks->einfo) ("%P: %s\n", msg);
|
||||
}
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, NULL, name, howto->name, (bfd_vma) 0,
|
||||
input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -12929,25 +12925,22 @@ _bfd_elf_mips_get_relocated_section_contents
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address, TRUE)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address, TRUE);
|
||||
break;
|
||||
case bfd_reloc_dangerous:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message, input_bfd, input_section,
|
||||
(*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_outofrange:
|
||||
default:
|
||||
|
@ -4199,11 +4199,9 @@ do_relocation:
|
||||
if (*name == '\0')
|
||||
name = bfd_section_name (input_bfd, sec);
|
||||
}
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section,
|
||||
rel->r_offset)))
|
||||
return FALSE;
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -4044,15 +4044,14 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_overflow:
|
||||
r = info->callbacks->reloc_overflow
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, rel->r_offset);
|
||||
break;
|
||||
|
||||
case bfd_reloc_undefined:
|
||||
r = info->callbacks->undefined_symbol
|
||||
(info, name, input_bfd, input_section, rel->r_offset,
|
||||
TRUE);
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, input_bfd, input_section, rel->r_offset, TRUE);
|
||||
break;
|
||||
|
||||
case bfd_reloc_outofrange:
|
||||
@ -4073,11 +4072,8 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
|
||||
}
|
||||
|
||||
if (msg)
|
||||
r = info->callbacks->warning
|
||||
(info, msg, name, input_bfd, input_section, rel->r_offset);
|
||||
|
||||
if (! r)
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, msg, name, input_bfd,
|
||||
input_section, rel->r_offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
71
bfd/linker.c
71
bfd/linker.c
@ -1544,9 +1544,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
/* We have found a definition for a symbol which was
|
||||
previously common. */
|
||||
BFD_ASSERT (h->type == bfd_link_hash_common);
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, h, abfd, bfd_link_hash_defined, 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_common) (info, h, abfd,
|
||||
bfd_link_hash_defined, 0);
|
||||
/* Fall through. */
|
||||
case DEF:
|
||||
case DEFW:
|
||||
@ -1603,10 +1602,9 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
if (oldtype == bfd_link_hash_defweak)
|
||||
abort ();
|
||||
|
||||
if (! ((*info->callbacks->constructor)
|
||||
(info, c == 'I',
|
||||
h->root.string, abfd, section, value)))
|
||||
return FALSE;
|
||||
(*info->callbacks->constructor) (info, c == 'I',
|
||||
h->root.string, abfd,
|
||||
section, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1675,9 +1673,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
already had a common definition. Use the maximum of the
|
||||
two sizes, and use the section required by the larger symbol. */
|
||||
BFD_ASSERT (h->type == bfd_link_hash_common);
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, h, abfd, bfd_link_hash_common, value)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_common) (info, h, abfd,
|
||||
bfd_link_hash_common, value);
|
||||
if (value > h->u.c.size)
|
||||
{
|
||||
unsigned int power;
|
||||
@ -1715,9 +1712,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
case CREF:
|
||||
/* We have found a common definition for a symbol which
|
||||
was already defined. */
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, h, abfd, bfd_link_hash_common, value)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_common) (info, h, abfd,
|
||||
bfd_link_hash_common, value);
|
||||
break;
|
||||
|
||||
case MIND:
|
||||
@ -1728,17 +1724,15 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
/* Fall through. */
|
||||
case MDEF:
|
||||
/* Handle a multiple definition. */
|
||||
if (! ((*info->callbacks->multiple_definition)
|
||||
(info, h, abfd, section, value)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_definition) (info, h,
|
||||
abfd, section, value);
|
||||
break;
|
||||
|
||||
case CIND:
|
||||
/* Create an indirect symbol from an existing common symbol. */
|
||||
BFD_ASSERT (h->type == bfd_link_hash_common);
|
||||
if (! ((*info->callbacks->multiple_common)
|
||||
(info, h, abfd, bfd_link_hash_indirect, 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->multiple_common) (info, h, abfd,
|
||||
bfd_link_hash_indirect, 0);
|
||||
/* Fall through. */
|
||||
case IND:
|
||||
if (inh->type == bfd_link_hash_indirect
|
||||
@ -1779,9 +1773,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
|
||||
case SET:
|
||||
/* Add an entry to a set. */
|
||||
if (! (*info->callbacks->add_to_set) (info, h, BFD_RELOC_CTOR,
|
||||
abfd, section, value))
|
||||
return FALSE;
|
||||
(*info->callbacks->add_to_set) (info, h, BFD_RELOC_CTOR,
|
||||
abfd, section, value);
|
||||
break;
|
||||
|
||||
case WARNC:
|
||||
@ -1790,10 +1783,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
if (h->u.i.warning != NULL
|
||||
&& (abfd->flags & BFD_PLUGIN) == 0)
|
||||
{
|
||||
if (! (*info->callbacks->warning) (info, h->u.i.warning,
|
||||
h->root.string, abfd,
|
||||
NULL, 0))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, h->u.i.warning,
|
||||
h->root.string, abfd, NULL, 0);
|
||||
/* Only issue a warning once. */
|
||||
h->u.i.warning = NULL;
|
||||
}
|
||||
@ -1819,9 +1810,8 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
|
||||
&& (h->u.undef.next != NULL || info->hash->undefs_tail == h))
|
||||
|| h->non_ir_ref)
|
||||
{
|
||||
if (! (*info->callbacks->warning) (info, string, h->root.string,
|
||||
hash_entry_bfd (h), NULL, 0))
|
||||
return FALSE;
|
||||
(*info->callbacks->warning) (info, string, h->root.string,
|
||||
hash_entry_bfd (h), NULL, 0);
|
||||
break;
|
||||
}
|
||||
/* Fall through. */
|
||||
@ -2412,9 +2402,8 @@ _bfd_generic_reloc_link_order (bfd *abfd,
|
||||
if (h == NULL
|
||||
|| ! h->written)
|
||||
{
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL, NULL, 0)))
|
||||
return FALSE;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, link_order->u.reloc.p->u.name, NULL, NULL, 0);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
@ -2448,17 +2437,13 @@ _bfd_generic_reloc_link_order (bfd *abfd,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*info->callbacks->reloc_overflow)
|
||||
(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),
|
||||
r->howto->name, link_order->u.reloc.p->addend,
|
||||
NULL, NULL, 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->reloc_overflow)
|
||||
(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),
|
||||
r->howto->name, link_order->u.reloc.p->addend,
|
||||
NULL, NULL, 0);
|
||||
break;
|
||||
}
|
||||
loc = link_order->offset * bfd_octets_per_byte (abfd);
|
||||
|
47
bfd/pdp11.c
47
bfd/pdp11.c
@ -3070,9 +3070,8 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, pr->u.name, NULL, NULL, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, pr->u.name, NULL, NULL, (bfd_vma) 0);
|
||||
r_index = 0;
|
||||
}
|
||||
}
|
||||
@ -3167,18 +3166,14 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(p->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (flaginfo->output_bfd,
|
||||
pr->u.section)
|
||||
: pr->u.name),
|
||||
howto->name, pr->addend, NULL,
|
||||
(asection *) NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, NULL,
|
||||
(p->type == bfd_section_reloc_link_order
|
||||
? bfd_section_name (flaginfo->output_bfd,
|
||||
pr->u.section)
|
||||
: pr->u.name),
|
||||
howto->name, pr->addend, NULL,
|
||||
(asection *) NULL, (bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
ok = bfd_set_section_contents (flaginfo->output_bfd, o,
|
||||
@ -3355,10 +3350,9 @@ pdp11_aout_link_input_section (struct aout_final_link_info *flaginfo,
|
||||
|
||||
name = strings + GET_WORD (input_bfd,
|
||||
syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->unattached_reloc)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr);
|
||||
r_index = 0;
|
||||
}
|
||||
}
|
||||
@ -3469,10 +3463,9 @@ pdp11_aout_link_input_section (struct aout_final_link_info *flaginfo,
|
||||
name = h->root.root.string;
|
||||
else
|
||||
name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
|
||||
if (! ((*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr, TRUE)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->undefined_symbol)
|
||||
(flaginfo->info, name, input_bfd, input_section,
|
||||
r_addr, TRUE);
|
||||
}
|
||||
|
||||
r = MY_final_link_relocate (howto,
|
||||
@ -3504,11 +3497,9 @@ pdp11_aout_link_input_section (struct aout_final_link_info *flaginfo,
|
||||
s = aout_reloc_type_to_section (input_bfd, r_type);
|
||||
name = bfd_section_name (input_bfd, s);
|
||||
}
|
||||
if (! ((*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name,
|
||||
howto->name, (bfd_vma) 0, input_bfd,
|
||||
input_section, r_addr)))
|
||||
return FALSE;
|
||||
(*flaginfo->info->callbacks->reloc_overflow)
|
||||
(flaginfo->info, (h ? &h->root : NULL), name, howto->name,
|
||||
(bfd_vma) 0, input_bfd, input_section, r_addr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -702,12 +702,9 @@ coff_pe_mips_relocate_section (bfd *output_bfd,
|
||||
}
|
||||
|
||||
else if (! bfd_link_relocatable (info))
|
||||
{
|
||||
if (! ((*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, h->root.root.string, input_bfd, input_section,
|
||||
rel->r_vaddr - input_section->vma, TRUE);
|
||||
}
|
||||
|
||||
src = rel->r_vaddr + input_section->output_section->vma
|
||||
|
26
bfd/reloc.c
26
bfd/reloc.c
@ -8001,26 +8001,22 @@ bfd_generic_get_relocated_section_contents (bfd *abfd,
|
||||
switch (r)
|
||||
{
|
||||
case bfd_reloc_undefined:
|
||||
if (!((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address,
|
||||
TRUE)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
input_bfd, input_section, (*parent)->address, TRUE);
|
||||
break;
|
||||
case bfd_reloc_dangerous:
|
||||
BFD_ASSERT (error_message != NULL);
|
||||
if (!((*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message, input_bfd, input_section,
|
||||
(*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_dangerous)
|
||||
(link_info, error_message,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_overflow:
|
||||
if (!((*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address)))
|
||||
goto error_return;
|
||||
(*link_info->callbacks->reloc_overflow)
|
||||
(link_info, NULL,
|
||||
bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
|
||||
(*parent)->howto->name, (*parent)->addend,
|
||||
input_bfd, input_section, (*parent)->address);
|
||||
break;
|
||||
case bfd_reloc_outofrange:
|
||||
/* PR ld/13730:
|
||||
|
@ -80,11 +80,9 @@ bfd_coff_reloc16_get_value (arelent *reloc,
|
||||
value = 0;
|
||||
else
|
||||
{
|
||||
if (!((*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (symbol),
|
||||
input_section->owner, input_section, reloc->address,
|
||||
TRUE)))
|
||||
abort ();
|
||||
(*link_info->callbacks->undefined_symbol)
|
||||
(link_info, bfd_asymbol_name (symbol),
|
||||
input_section->owner, input_section, reloc->address, TRUE);
|
||||
value = 0;
|
||||
}
|
||||
}
|
||||
|
18
bfd/simple.c
18
bfd/simple.c
@ -24,7 +24,7 @@
|
||||
#include "libbfd.h"
|
||||
#include "bfdlink.h"
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
simple_dummy_warning (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
const char *warning ATTRIBUTE_UNUSED,
|
||||
const char *symbol ATTRIBUTE_UNUSED,
|
||||
@ -32,10 +32,9 @@ simple_dummy_warning (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
asection *section ATTRIBUTE_UNUSED,
|
||||
bfd_vma address ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
simple_dummy_undefined_symbol (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
const char *name ATTRIBUTE_UNUSED,
|
||||
bfd *abfd ATTRIBUTE_UNUSED,
|
||||
@ -43,10 +42,9 @@ simple_dummy_undefined_symbol (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
bfd_vma address ATTRIBUTE_UNUSED,
|
||||
bfd_boolean fatal ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
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,
|
||||
@ -56,37 +54,33 @@ simple_dummy_reloc_overflow (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
asection *section ATTRIBUTE_UNUSED,
|
||||
bfd_vma address ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
simple_dummy_reloc_dangerous (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
const char *message ATTRIBUTE_UNUSED,
|
||||
bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asection *section ATTRIBUTE_UNUSED,
|
||||
bfd_vma address ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
simple_dummy_unattached_reloc (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
const char *name ATTRIBUTE_UNUSED,
|
||||
bfd *abfd ATTRIBUTE_UNUSED,
|
||||
asection *section ATTRIBUTE_UNUSED,
|
||||
bfd_vma address ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
simple_dummy_multiple_definition (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
|
||||
bfd *nbfd ATTRIBUTE_UNUSED,
|
||||
asection *nsec ATTRIBUTE_UNUSED,
|
||||
bfd_vma nval ATTRIBUTE_UNUSED)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1641,9 +1641,8 @@ _bfd_vms_get_value (bfd *abfd, const unsigned char *ascic,
|
||||
*vma = 0;
|
||||
else
|
||||
{
|
||||
if (!(*info->callbacks->undefined_symbol)
|
||||
(info, name, abfd, PRIV (image_section), PRIV (image_offset), TRUE))
|
||||
abort ();
|
||||
(*info->callbacks->undefined_symbol)
|
||||
(info, name, abfd, PRIV (image_section), PRIV (image_offset), TRUE);
|
||||
*vma = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1992,9 +1992,10 @@ xcoff_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||
sure the XCOFF linker is wholly prepared to
|
||||
handle them, and that would only be a warning,
|
||||
not an error. */
|
||||
if (! ((*info->callbacks->multiple_definition)
|
||||
(info, &(*sym_hash)->root, NULL, NULL, (bfd_vma) 0)))
|
||||
goto error_return;
|
||||
(*info->callbacks->multiple_definition) (info,
|
||||
&(*sym_hash)->root,
|
||||
NULL, NULL,
|
||||
(bfd_vma) 0);
|
||||
/* Try not to give this error too many times. */
|
||||
(*sym_hash)->flags &= ~XCOFF_MULTIPLY_DEFINED;
|
||||
}
|
||||
@ -3117,11 +3118,8 @@ bfd_xcoff_import_symbol (bfd *output_bfd,
|
||||
if (h->root.type == bfd_link_hash_defined
|
||||
&& (! bfd_is_abs_section (h->root.u.def.section)
|
||||
|| h->root.u.def.value != val))
|
||||
{
|
||||
if (! ((*info->callbacks->multiple_definition)
|
||||
(info, &h->root, output_bfd, bfd_abs_section_ptr, val)))
|
||||
return FALSE;
|
||||
}
|
||||
(*info->callbacks->multiple_definition) (info, &h->root, output_bfd,
|
||||
bfd_abs_section_ptr, val);
|
||||
|
||||
h->root.type = bfd_link_hash_defined;
|
||||
h->root.u.def.section = bfd_abs_section_ptr;
|
||||
@ -4942,10 +4940,9 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo,
|
||||
if (name == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (!(*flinfo->info->callbacks->unattached_reloc)
|
||||
(flinfo->info, name, input_bfd, o,
|
||||
irel->r_vaddr))
|
||||
return FALSE;
|
||||
(*flinfo->info->callbacks->unattached_reloc)
|
||||
(flinfo->info, name,
|
||||
input_bfd, o, irel->r_vaddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5712,9 +5709,8 @@ xcoff_reloc_link_order (bfd *output_bfd,
|
||||
FALSE, FALSE, TRUE));
|
||||
if (h == NULL)
|
||||
{
|
||||
if (! ((*flinfo->info->callbacks->unattached_reloc)
|
||||
(flinfo->info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0)))
|
||||
return FALSE;
|
||||
(*flinfo->info->callbacks->unattached_reloc)
|
||||
(flinfo->info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -5752,13 +5748,9 @@ xcoff_reloc_link_order (bfd *output_bfd,
|
||||
case bfd_reloc_outofrange:
|
||||
abort ();
|
||||
case bfd_reloc_overflow:
|
||||
if (! ((*flinfo->info->callbacks->reloc_overflow)
|
||||
(flinfo->info, NULL, link_order->u.reloc.p->u.name,
|
||||
howto->name, addend, NULL, NULL, (bfd_vma) 0)))
|
||||
{
|
||||
free (buf);
|
||||
return FALSE;
|
||||
}
|
||||
(*flinfo->info->callbacks->reloc_overflow)
|
||||
(flinfo->info, NULL, link_order->u.reloc.p->u.name,
|
||||
howto->name, addend, NULL, NULL, (bfd_vma) 0);
|
||||
break;
|
||||
}
|
||||
ok = bfd_set_section_contents (output_bfd, output_section, (void *) buf,
|
||||
@ -6282,10 +6274,9 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
if ((*rel_hash)->indx < 0)
|
||||
{
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, (*rel_hash)->root.root.string,
|
||||
NULL, o, irel->r_vaddr)))
|
||||
goto error_return;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, (*rel_hash)->root.root.string,
|
||||
NULL, o, irel->r_vaddr);
|
||||
(*rel_hash)->indx = 0;
|
||||
}
|
||||
irel->r_symndx = (*rel_hash)->indx;
|
||||
@ -6298,10 +6289,9 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
if (toc_rel_hash->h->u.toc_indx < 0)
|
||||
{
|
||||
if (! ((*info->callbacks->unattached_reloc)
|
||||
(info, toc_rel_hash->h->root.root.string,
|
||||
NULL, o, toc_rel_hash->rel->r_vaddr)))
|
||||
goto error_return;
|
||||
(*info->callbacks->unattached_reloc)
|
||||
(info, toc_rel_hash->h->root.root.string,
|
||||
NULL, o, toc_rel_hash->rel->r_vaddr);
|
||||
toc_rel_hash->h->u.toc_indx = 0;
|
||||
}
|
||||
toc_rel_hash->rel->r_symndx = toc_rel_hash->h->u.toc_indx;
|
||||
|
@ -1,3 +1,11 @@
|
||||
2016-05-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* compile/compile-object-load.c (link_callbacks_multiple_definition,
|
||||
link_callbacks_warning, link_callbacks_undefined_symbol,
|
||||
link_callbacks_undefined_symbol, link_callbacks_reloc_overflow,
|
||||
link_callbacks_reloc_dangerous,
|
||||
link_callbacks_unattached_reloc): Return void.
|
||||
|
||||
2016-05-27 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* opencl-lang.c (evaluate_subexp_opencl): If
|
||||
|
@ -198,7 +198,7 @@ setup_sections (bfd *abfd, asection *sect, void *data_voidp)
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_multiple_definition (struct bfd_link_info *link_info,
|
||||
struct bfd_link_hash_entry *h, bfd *nbfd,
|
||||
asection *nsec, bfd_vma nval)
|
||||
@ -206,15 +206,14 @@ link_callbacks_multiple_definition (struct bfd_link_info *link_info,
|
||||
bfd *abfd = link_info->input_bfds;
|
||||
|
||||
if (link_info->allow_multiple_definition)
|
||||
return TRUE;
|
||||
return;
|
||||
warning (_("Compiled module \"%s\": multiple symbol definitions: %s"),
|
||||
bfd_get_filename (abfd), h->root.string);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_warning (struct bfd_link_info *link_info, const char *xwarning,
|
||||
const char *symbol, bfd *abfd, asection *section,
|
||||
bfd_vma address)
|
||||
@ -222,13 +221,11 @@ link_callbacks_warning (struct bfd_link_info *link_info, const char *xwarning,
|
||||
warning (_("Compiled module \"%s\" section \"%s\": warning: %s"),
|
||||
bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
|
||||
xwarning);
|
||||
/* Maybe permit running as a module? */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_undefined_symbol (struct bfd_link_info *link_info,
|
||||
const char *name, bfd *abfd, asection *section,
|
||||
bfd_vma address, bfd_boolean is_fatal)
|
||||
@ -236,25 +233,22 @@ link_callbacks_undefined_symbol (struct bfd_link_info *link_info,
|
||||
warning (_("Cannot resolve relocation to \"%s\" "
|
||||
"from compiled module \"%s\" section \"%s\"."),
|
||||
name, bfd_get_filename (abfd), bfd_get_section_name (abfd, section));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_reloc_overflow (struct bfd_link_info *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)
|
||||
{
|
||||
/* TRUE is required for intra-module relocations. */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_reloc_dangerous (struct bfd_link_info *link_info,
|
||||
const char *message, bfd *abfd,
|
||||
asection *section, bfd_vma address)
|
||||
@ -263,12 +257,11 @@ link_callbacks_reloc_dangerous (struct bfd_link_info *link_info,
|
||||
"relocation: %s\n"),
|
||||
bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
|
||||
message);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
||||
static bfd_boolean
|
||||
static void
|
||||
link_callbacks_unattached_reloc (struct bfd_link_info *link_info,
|
||||
const char *name, bfd *abfd, asection *section,
|
||||
bfd_vma address)
|
||||
@ -277,7 +270,6 @@ link_callbacks_unattached_reloc (struct bfd_link_info *link_info,
|
||||
"relocation: %s\n"),
|
||||
bfd_get_filename (abfd), bfd_get_section_name (abfd, section),
|
||||
name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Helper for link_callbacks callbacks vector. */
|
||||
|
@ -1,3 +1,10 @@
|
||||
2016-05-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* bfdlink.h (struct bfd_link_callbacks): Update comments.
|
||||
Return void from multiple_definition, multiple_common,
|
||||
add_to_set, constructor, warning, undefined_symbol,
|
||||
reloc_overflow, reloc_dangerous and unattached_reloc.
|
||||
|
||||
2016-05-26 Trevor Saunders <tbsaunde+binutils@tbsaunde.org>
|
||||
|
||||
* opcode/metag.h: wrap declarations in extern "C".
|
||||
|
@ -609,11 +609,7 @@ struct bfd_link_info
|
||||
};
|
||||
|
||||
/* This structures holds a set of callback functions. These are called
|
||||
by the BFD linker routines. Except for the info functions, the first
|
||||
argument to each callback function is the bfd_link_info structure
|
||||
being used and each function returns a boolean value. If the
|
||||
function returns FALSE, then the BFD function which called it should
|
||||
return with a failure indication. */
|
||||
by the BFD linker routines. */
|
||||
|
||||
struct bfd_link_callbacks
|
||||
{
|
||||
@ -622,14 +618,15 @@ struct bfd_link_callbacks
|
||||
name of the symbol which caused the archive element to be pulled
|
||||
in. This function may set *SUBSBFD to point to an alternative
|
||||
BFD from which symbols should in fact be added in place of the
|
||||
original BFD's symbols. */
|
||||
original BFD's symbols. Returns TRUE if the object should be
|
||||
added, FALSE if it should be skipped. */
|
||||
bfd_boolean (*add_archive_element)
|
||||
(struct bfd_link_info *, bfd *abfd, const char *name, bfd **subsbfd);
|
||||
/* A function which is called when a symbol is found with multiple
|
||||
definitions. H is the symbol which is defined multiple times.
|
||||
NBFD is the new BFD, NSEC is the new section, and NVAL is the new
|
||||
value. NSEC may be bfd_com_section or bfd_ind_section. */
|
||||
bfd_boolean (*multiple_definition)
|
||||
void (*multiple_definition)
|
||||
(struct bfd_link_info *, struct bfd_link_hash_entry *h,
|
||||
bfd *nbfd, asection *nsec, bfd_vma nval);
|
||||
/* A function which is called when a common symbol is defined
|
||||
@ -638,7 +635,7 @@ struct bfd_link_callbacks
|
||||
symbol, one of bfd_link_hash_defined, bfd_link_hash_common, or
|
||||
bfd_link_hash_indirect. If NTYPE is bfd_link_hash_common, NSIZE
|
||||
is the size of the new symbol. */
|
||||
bfd_boolean (*multiple_common)
|
||||
void (*multiple_common)
|
||||
(struct bfd_link_info *, struct bfd_link_hash_entry *h,
|
||||
bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize);
|
||||
/* A function which is called to add a symbol to a set. ENTRY is
|
||||
@ -647,7 +644,7 @@ struct bfd_link_callbacks
|
||||
the set when generating a relocatable file, and is also used to
|
||||
get the size of the entry when generating an executable file.
|
||||
ABFD, SEC and VALUE identify the value to add to the set. */
|
||||
bfd_boolean (*add_to_set)
|
||||
void (*add_to_set)
|
||||
(struct bfd_link_info *, struct bfd_link_hash_entry *entry,
|
||||
bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec, bfd_vma value);
|
||||
/* A function which is called when the name of a g++ constructor or
|
||||
@ -656,7 +653,7 @@ struct bfd_link_callbacks
|
||||
destructor. This will use BFD_RELOC_CTOR when generating a
|
||||
relocatable file. NAME is the name of the symbol found. ABFD,
|
||||
SECTION and VALUE are the value of the symbol. */
|
||||
bfd_boolean (*constructor)
|
||||
void (*constructor)
|
||||
(struct bfd_link_info *, bfd_boolean constructor, const char *name,
|
||||
bfd *abfd, asection *sec, bfd_vma value);
|
||||
/* A function which is called to issue a linker warning. For
|
||||
@ -666,7 +663,7 @@ struct bfd_link_callbacks
|
||||
there is none. ABFD, SECTION and ADDRESS identify the location
|
||||
which trigerred the warning; either ABFD or SECTION or both may
|
||||
be NULL if the location is not known. */
|
||||
bfd_boolean (*warning)
|
||||
void (*warning)
|
||||
(struct bfd_link_info *, const char *warning, const char *symbol,
|
||||
bfd *abfd, asection *section, bfd_vma address);
|
||||
/* A function which is called when a relocation is attempted against
|
||||
@ -674,7 +671,7 @@ struct bfd_link_callbacks
|
||||
ABFD, SECTION and ADDRESS identify the location from which the
|
||||
reference is made. IS_FATAL indicates whether an undefined symbol is
|
||||
a fatal error or not. In some cases SECTION may be NULL. */
|
||||
bfd_boolean (*undefined_symbol)
|
||||
void (*undefined_symbol)
|
||||
(struct bfd_link_info *, const char *name, bfd *abfd,
|
||||
asection *section, bfd_vma address, bfd_boolean is_fatal);
|
||||
/* A function which is called when a reloc overflow occurs. ENTRY is
|
||||
@ -685,7 +682,7 @@ struct bfd_link_callbacks
|
||||
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)
|
||||
void (*reloc_overflow)
|
||||
(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);
|
||||
@ -695,7 +692,7 @@ struct bfd_link_callbacks
|
||||
problem occurred; 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_dangerous)
|
||||
void (*reloc_dangerous)
|
||||
(struct bfd_link_info *, const char *message,
|
||||
bfd *abfd, asection *section, bfd_vma address);
|
||||
/* A function which is called when a reloc is found to be attached
|
||||
@ -704,7 +701,7 @@ struct bfd_link_callbacks
|
||||
the reloc; 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 (*unattached_reloc)
|
||||
void (*unattached_reloc)
|
||||
(struct bfd_link_info *, const char *name,
|
||||
bfd *abfd, asection *section, bfd_vma address);
|
||||
/* A function which is called when a symbol in notice_hash is
|
||||
|
@ -1,3 +1,10 @@
|
||||
2016-05-28 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ldmain.c (multiple_definition, multiple_common, add_to_set,
|
||||
constructor_callback, warning_callback, undefined_symbol,
|
||||
reloc_overflow, reloc_dangerous, unattached_reloc): Return void.
|
||||
* emultempl/elf32.em: Adjust callback calls.
|
||||
|
||||
2016-05-27 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* testsuite/ld-mips-elf/unaligned-jalx-addend-0.d: New test.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user