mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 17:40: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:
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user