From 62d887d4067efbc5b757e03b0fa54f2a4c81befa Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 5 Nov 2013 10:29:44 -0800 Subject: [PATCH] Pass ignored unresolved relocations to ld backend bfd/ PR ld/4409 * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): Add an argument for error ignored. * elf-m10200.c (mn10200_elf_relocate_section): Updated. * elf-m10300.c (mn10300_elf_relocate_section): Likewise. * elf32-arm.c (elf32_arm_relocate_section): Likewise. * elf32-avr.c (elf32_avr_relocate_section): Likewise. * elf32-bfin.c (bfinfdpic_relocate_section): Likewise. (bfin_relocate_section): Likewise. * elf32-cr16.c (elf32_cr16_relocate_section): Likewise. * elf32-cr16c.c (elf32_cr16c_relocate_section): Likewise. * elf32-cris.c (cris_elf_relocate_section): Likewise. * elf32-crx.c (elf32_crx_relocate_section): Likewise. * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. * elf32-epiphany.c (epiphany_elf_relocate_section): Likewise. * elf32-fr30.c (fr30_elf_relocate_section): Likewise. * elf32-frv.c (elf32_frv_relocate_section): Likewise. * elf32-h8300.c (elf32_h8_relocate_section): Likewise. * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. * elf32-i386.c (elf_i386_relocate_section): Likewise. * elf32-i860.c (elf32_i860_relocate_section): Likewise. * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. * elf32-lm32.c (lm32_elf_relocate_section): Likewise. * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise. * elf32-m68k.c (elf_m68k_relocate_section): Likewise. * elf32-metag.c (elf_metag_relocate_section): Likewise. * elf32-microblaze.c (microblaze_elf_relocate_section): Likewise. * elf32-mcore.c (mcore_elf_relocate_section): Likewise. * elf32-mep.c (mep_elf_relocate_section): Likewise. * elf32-moxie.c (moxie_elf_relocate_section): Likewise. * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. * elf32-mt.c (mt_elf_relocate_section): Likewise. * elf32-nios2.c (nios2_elf32_relocate_section): Likewise. * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. * elf32-ppc.c (ppc_elf_relocate_section): Likewise. * elf32-rl78.c (rl78_elf_relocate_section): Likewise. * elf32-rx.c (rx_elf_relocate_section): Likewise. * elf32-tic6x.c (elf32_tic6x_relocate_section): Likewise. * elf32-tilepro.c (tilepro_elf_relocate_section): Likewise. * elf32-s390.c (elf_s390_relocate_section): Likewise. * elf32-v850.c (v850_elf_relocate_section): Likewise. * elf32-vax.c (elf_vax_relocate_section): Likewise. * elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise. * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. * elf64-ia64-vms.c (elf64_ia64_relocate_section): Likewise. * elf64-mmix.c (mmix_elf_relocate_section): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elf64-s390.c (elf_s390_relocate_section): Likewise. * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise. * elfxx-tilegx.c (tilegx_elf_relocate_section): Likewise. * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Likewise. * elfnn-ia64.c (elfNN_ia64_relocate_section): Skip if error from RELOC_FOR_GLOBAL_SYMBOL in executable is ignored. ld/testsuite/ PR ld/4409 * ld-ia64/error1.d: New file. * ld-ia64/error1.s: Likewise. * ld-ia64/error2.d: Likewise. * ld-ia64/error3.d: Likewise. --- bfd/ChangeLog | 62 +++++++++++++++++++++++++++++++++++ bfd/elf-bfd.h | 6 ++-- bfd/elf-m10200.c | 4 +-- bfd/elf-m10300.c | 4 +-- bfd/elf32-arm.c | 4 +-- bfd/elf32-avr.c | 4 +-- bfd/elf32-bfin.c | 8 ++--- bfd/elf32-cr16.c | 4 +-- bfd/elf32-cr16c.c | 4 +-- bfd/elf32-cris.c | 4 +-- bfd/elf32-crx.c | 4 +-- bfd/elf32-d10v.c | 4 +-- bfd/elf32-epiphany.c | 3 +- bfd/elf32-fr30.c | 4 +-- bfd/elf32-frv.c | 4 +-- bfd/elf32-h8300.c | 4 +-- bfd/elf32-hppa.c | 5 +-- bfd/elf32-i386.c | 3 +- bfd/elf32-i860.c | 4 +-- bfd/elf32-ip2k.c | 4 +-- bfd/elf32-iq2000.c | 4 +-- bfd/elf32-lm32.c | 4 +-- bfd/elf32-m68hc1x.c | 4 +-- bfd/elf32-m68k.c | 4 +-- bfd/elf32-mcore.c | 4 +-- bfd/elf32-mep.c | 4 +-- bfd/elf32-metag.c | 4 +-- bfd/elf32-microblaze.c | 3 +- bfd/elf32-moxie.c | 4 +-- bfd/elf32-msp430.c | 4 +-- bfd/elf32-mt.c | 4 +-- bfd/elf32-nios2.c | 4 +-- bfd/elf32-openrisc.c | 4 +-- bfd/elf32-ppc.c | 4 ++- bfd/elf32-rl78.c | 5 +-- bfd/elf32-rx.c | 4 +-- bfd/elf32-s390.c | 3 +- bfd/elf32-tic6x.c | 4 +-- bfd/elf32-tilepro.c | 5 +-- bfd/elf32-v850.c | 4 +-- bfd/elf32-vax.c | 4 +-- bfd/elf32-xc16x.c | 4 +-- bfd/elf32-xstormy16.c | 4 +-- bfd/elf32-xtensa.c | 4 ++- bfd/elf64-alpha.c | 4 +-- bfd/elf64-ia64-vms.c | 4 +-- bfd/elf64-mmix.c | 5 +-- bfd/elf64-ppc.c | 4 ++- bfd/elf64-s390.c | 3 +- bfd/elf64-x86-64.c | 3 +- bfd/elfnn-aarch64.c | 4 +-- bfd/elfnn-ia64.c | 6 ++-- bfd/elfxx-sparc.c | 4 +-- bfd/elfxx-tilegx.c | 5 +-- ld/testsuite/ChangeLog | 8 +++++ ld/testsuite/ld-ia64/error1.d | 7 ++++ ld/testsuite/ld-ia64/error1.s | 30 +++++++++++++++++ ld/testsuite/ld-ia64/error2.d | 7 ++++ ld/testsuite/ld-ia64/error3.d | 7 ++++ 59 files changed, 240 insertions(+), 100 deletions(-) create mode 100644 ld/testsuite/ld-ia64/error1.d create mode 100644 ld/testsuite/ld-ia64/error1.s create mode 100644 ld/testsuite/ld-ia64/error2.d create mode 100644 ld/testsuite/ld-ia64/error3.d diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ac78036cbc3..806519306bc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,65 @@ +2013-11-05 H.J. Lu + Bernhard Rosenkränzer + + PR ld/4409 + * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): Add an argument for + error ignored. + * elf-m10200.c (mn10200_elf_relocate_section): Updated. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elf32-arm.c (elf32_arm_relocate_section): Likewise. + * elf32-avr.c (elf32_avr_relocate_section): Likewise. + * elf32-bfin.c (bfinfdpic_relocate_section): Likewise. + (bfin_relocate_section): Likewise. + * elf32-cr16.c (elf32_cr16_relocate_section): Likewise. + * elf32-cr16c.c (elf32_cr16c_relocate_section): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-crx.c (elf32_crx_relocate_section): Likewise. + * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. + * elf32-epiphany.c (epiphany_elf_relocate_section): Likewise. + * elf32-fr30.c (fr30_elf_relocate_section): Likewise. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-h8300.c (elf32_h8_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i386.c (elf_i386_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. + * elf32-lm32.c (lm32_elf_relocate_section): Likewise. + * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-metag.c (elf_metag_relocate_section): Likewise. + * elf32-microblaze.c (microblaze_elf_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-mep.c (mep_elf_relocate_section): Likewise. + * elf32-moxie.c (moxie_elf_relocate_section): Likewise. + * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. + * elf32-mt.c (mt_elf_relocate_section): Likewise. + * elf32-nios2.c (nios2_elf32_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-rl78.c (rl78_elf_relocate_section): Likewise. + * elf32-rx.c (rx_elf_relocate_section): Likewise. + * elf32-tic6x.c (elf32_tic6x_relocate_section): Likewise. + * elf32-tilepro.c (tilepro_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. + * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-ia64-vms.c (elf64_ia64_relocate_section): Likewise. + * elf64-mmix.c (mmix_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise. + * elfxx-tilegx.c (tilegx_elf_relocate_section): Likewise. + * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Likewise. + + * elfnn-ia64.c (elfNN_ia64_relocate_section): Skip if error + from RELOC_FOR_GLOBAL_SYMBOL in executable is ignored. + 2013-11-05 Alan Modra * elf64-ppc.c (ppc64_elf_func_desc_adjust): Make .TOC. defined and diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index add80b3c040..15dab945705 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -2414,7 +2414,7 @@ extern asection _bfd_elf_large_com_section; #define RELOC_FOR_GLOBAL_SYMBOL(info, input_bfd, input_section, rel, \ r_symndx, symtab_hdr, sym_hashes, \ h, sec, relocation, \ - unresolved_reloc, warned) \ + unresolved_reloc, warned, ignored) \ do \ { \ /* It seems this can happen with erroneous or unsupported \ @@ -2429,6 +2429,7 @@ extern asection _bfd_elf_large_com_section; h = (struct elf_link_hash_entry *) h->root.u.i.link; \ \ warned = FALSE; \ + ignored = FALSE; \ unresolved_reloc = FALSE; \ relocation = 0; \ if (h->root.type == bfd_link_hash_defined \ @@ -2451,7 +2452,7 @@ extern asection _bfd_elf_large_com_section; ; \ else if (info->unresolved_syms_in_objects == RM_IGNORE \ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) \ - ; \ + ignored = TRUE; \ else if (!info->relocatable) \ { \ bfd_boolean err; \ @@ -2467,6 +2468,7 @@ extern asection _bfd_elf_large_com_section; } \ (void) unresolved_reloc; \ (void) warned; \ + (void) ignored; \ } \ while (0) diff --git a/bfd/elf-m10200.c b/bfd/elf-m10200.c index f427f97cbf9..a7553f32b82 100644 --- a/bfd/elf-m10200.c +++ b/bfd/elf-m10200.c @@ -373,12 +373,12 @@ mn10200_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c index c0a9309b7ff..bc3700de601 100644 --- a/bfd/elf-m10300.c +++ b/bfd/elf-m10300.c @@ -2011,7 +2011,7 @@ mn10300_elf_relocate_section (bfd *output_bfd, bfd_reloc_status_type r; int tls_r_type; bfd_boolean unresolved_reloc = FALSE; - bfd_boolean warned; + bfd_boolean warned, ignored; struct elf_link_hash_entry * hh; relocation = 0; @@ -2034,7 +2034,7 @@ mn10300_elf_relocate_section (bfd *output_bfd, RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, hh, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } h = elf_mn10300_hash_entry (hh); diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 5af1643bf50..e9c0d20aaf2 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -10510,12 +10510,12 @@ elf32_arm_relocate_section (bfd * output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); sym_type = h->type; } diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c index 43100cd20fc..b54b67fca12 100644 --- a/bfd/elf32-avr.c +++ b/bfd/elf32-avr.c @@ -1214,12 +1214,12 @@ elf32_avr_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c index d3d0f1c86dd..73d0d09f554 100644 --- a/bfd/elf32-bfin.c +++ b/bfd/elf32-bfin.c @@ -1444,12 +1444,12 @@ bfin_relocate_section (bfd * output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) @@ -2662,13 +2662,13 @@ bfinfdpic_relocate_section (bfd * output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; bfd_boolean unresolved_reloc; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); osec = sec; } diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c index 8ed5af1c1b5..af1cf7bb579 100644 --- a/bfd/elf32-cr16.c +++ b/bfd/elf32-cr16.c @@ -1425,12 +1425,12 @@ elf32_cr16_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-cr16c.c b/bfd/elf32-cr16c.c index 4231a429139..27d8f801537 100644 --- a/bfd/elf32-cr16c.c +++ b/bfd/elf32-cr16c.c @@ -715,12 +715,12 @@ elf32_cr16c_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c index f35292ed624..ab7915121b9 100644 --- a/bfd/elf32-cris.c +++ b/bfd/elf32-cris.c @@ -1040,13 +1040,13 @@ cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; bfd_boolean unresolved_reloc; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); symname = h->root.root.string; diff --git a/bfd/elf32-crx.c b/bfd/elf32-crx.c index 601f715c033..f26c01edbe1 100644 --- a/bfd/elf32-crx.c +++ b/bfd/elf32-crx.c @@ -865,12 +865,12 @@ elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-d10v.c b/bfd/elf32-d10v.c index f75c16ae7ec..7963bba3cea 100644 --- a/bfd/elf32-d10v.c +++ b/bfd/elf32-d10v.c @@ -459,12 +459,12 @@ elf32_d10v_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-epiphany.c b/bfd/elf32-epiphany.c index b427ef33e09..f796a67932a 100644 --- a/bfd/elf32-epiphany.c +++ b/bfd/elf32-epiphany.c @@ -515,11 +515,12 @@ epiphany_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, { bfd_boolean warned ATTRIBUTE_UNUSED; bfd_boolean unresolved_reloc ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c index 3aed435dd95..a6ffda31e9d 100644 --- a/bfd/elf32-fr30.c +++ b/bfd/elf32-fr30.c @@ -547,12 +547,12 @@ fr30_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c index 788c2997e8d..cf187acaddd 100644 --- a/bfd/elf32-frv.c +++ b/bfd/elf32-frv.c @@ -2735,13 +2735,13 @@ elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; bfd_boolean unresolved_reloc; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); osec = sec; name = h->root.root.string; } diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c index 67bca3f5737..822d985f6e7 100644 --- a/bfd/elf32-h8300.c +++ b/bfd/elf32-h8300.c @@ -468,12 +468,12 @@ elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index dfffbcba60b..7d1725fa067 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -3690,13 +3690,14 @@ elf32_hppa_relocate_section (bfd *output_bfd, else { struct elf_link_hash_entry *eh; - bfd_boolean unresolved_reloc; + bfd_boolean unresolved_reloc, ignored; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rela, r_symndx, symtab_hdr, sym_hashes, eh, sym_sec, relocation, - unresolved_reloc, warned_undef); + unresolved_reloc, warned_undef, + ignored); if (!info->relocatable && relocation == 0 diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 560e05cc4f7..070e4c45aa7 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -3311,11 +3311,12 @@ elf_i386_relocate_section (bfd *output_bfd, else { bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); st_size = h->size; } diff --git a/bfd/elf32-i860.c b/bfd/elf32-i860.c index c7991bd82fb..5440c8b7902 100644 --- a/bfd/elf32-i860.c +++ b/bfd/elf32-i860.c @@ -1121,12 +1121,12 @@ elf32_i860_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-ip2k.c b/bfd/elf32-ip2k.c index 3bbad147459..2ee907c16e1 100644 --- a/bfd/elf32-ip2k.c +++ b/bfd/elf32-ip2k.c @@ -1425,13 +1425,13 @@ ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; bfd_boolean unresolved_reloc; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c index 3a90a996982..ff7ef4a3ea2 100644 --- a/bfd/elf32-iq2000.c +++ b/bfd/elf32-iq2000.c @@ -627,12 +627,12 @@ iq2000_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED, else { bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c index df6f346467d..4ebe534ddf1 100644 --- a/bfd/elf32-lm32.c +++ b/bfd/elf32-lm32.c @@ -875,12 +875,12 @@ lm32_elf_relocate_section (bfd *output_bfd, { /* It's a global symbol. */ bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-m68hc1x.c b/bfd/elf32-m68hc1x.c index 427e3cd2d93..f5f68bc41bd 100644 --- a/bfd/elf32-m68hc1x.c +++ b/bfd/elf32-m68hc1x.c @@ -979,12 +979,12 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, unresolved_reloc, - warned); + warned, ignored); is_far = (h && (h->other & STO_M68HC12_FAR)); is_xgate_symbol = (h && (h->target_internal)); diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index f266d63a150..d8e3be1c35e 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -3669,12 +3669,12 @@ elf_m68k_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c index 28ee2c49cf5..8eb74c5acaa 100644 --- a/bfd/elf32-mcore.c +++ b/bfd/elf32-mcore.c @@ -458,12 +458,12 @@ mcore_elf_relocate_section (bfd * output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c index f356fd06ffe..2204488b554 100644 --- a/bfd/elf32-mep.c +++ b/bfd/elf32-mep.c @@ -490,12 +490,12 @@ mep_elf_relocate_section } else { - bfd_boolean warned, unresolved_reloc; + bfd_boolean warned, unresolved_reloc, ignored; RELOC_FOR_GLOBAL_SYMBOL(info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c index 8851845384b..9c11dd3d2f1 100644 --- a/bfd/elf32-metag.c +++ b/bfd/elf32-metag.c @@ -1536,12 +1536,12 @@ elf_metag_relocate_section (bfd *output_bfd, else { struct elf_link_hash_entry *eh; - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, eh_syms, eh, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = eh->root.root.string; hh = (struct elf_metag_link_hash_entry *) eh; diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index 4a5e80dd86d..d936c422d90 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -1023,11 +1023,12 @@ microblaze_elf_relocate_section (bfd *output_bfd, { /* External symbol. */ bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); sym_name = h->root.root.string; } diff --git a/bfd/elf32-moxie.c b/bfd/elf32-moxie.c index d0cbb0fab43..a2215db1421 100644 --- a/bfd/elf32-moxie.c +++ b/bfd/elf32-moxie.c @@ -240,12 +240,12 @@ moxie_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c index 2f7a3dad826..533eea33ece 100644 --- a/bfd/elf32-msp430.c +++ b/bfd/elf32-msp430.c @@ -1276,12 +1276,12 @@ elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-mt.c b/bfd/elf32-mt.c index ea05c9117e4..597665c1d56 100644 --- a/bfd/elf32-mt.c +++ b/bfd/elf32-mt.c @@ -344,12 +344,12 @@ mt_elf_relocate_section else { bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index ba89b94aefb..82e55164c8b 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -1717,12 +1717,12 @@ nios2_elf32_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec && discarded_section (sec)) diff --git a/bfd/elf32-openrisc.c b/bfd/elf32-openrisc.c index 7abc938bc97..496d2637791 100644 --- a/bfd/elf32-openrisc.c +++ b/bfd/elf32-openrisc.c @@ -365,12 +365,12 @@ openrisc_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 63928dc099a..47c92ba0b7e 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -7493,10 +7493,12 @@ ppc_elf_relocate_section (bfd *output_bfd, } else { + bfd_boolean ignored; + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); sym_name = h->root.root.string; } diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c index a8ee414f85e..9060663490c 100644 --- a/bfd/elf32-rl78.c +++ b/bfd/elf32-rl78.c @@ -460,12 +460,13 @@ rl78_elf_relocate_section } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, unresolved_reloc, - warned); + warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c index af84e08f063..a1f29eb4b28 100644 --- a/bfd/elf32-rx.c +++ b/bfd/elf32-rx.c @@ -510,12 +510,12 @@ rx_elf_relocate_section } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, unresolved_reloc, - warned); + warned, ignored); name = h->root.root.string; } diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index 6467b032641..9827d46d137 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -2415,11 +2415,12 @@ elf_s390_relocate_section (bfd *output_bfd, else { bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index 7ac6325f68c..92726b2af44 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -2309,12 +2309,12 @@ elf32_tic6x_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c index c36da2bee24..0e808c4582e 100644 --- a/bfd/elf32-tilepro.c +++ b/bfd/elf32-tilepro.c @@ -2892,12 +2892,13 @@ tilepro_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (warned) { /* To avoid generating warning messages about truncated diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c index 89724adef93..6528dc18670 100644 --- a/bfd/elf32-v850.c +++ b/bfd/elf32-v850.c @@ -2211,7 +2211,7 @@ v850_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; /* Note - this check is delayed until now as it is possible and valid to have a file without any symbols but with relocs that @@ -2228,7 +2228,7 @@ v850_elf_relocate_section (bfd *output_bfd, RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c index c6a8f8188b4..d6ae14e132c 100644 --- a/bfd/elf32-vax.c +++ b/bfd/elf32-vax.c @@ -1408,12 +1408,12 @@ elf_vax_relocate_section (bfd *output_bfd, else { bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) diff --git a/bfd/elf32-xc16x.c b/bfd/elf32-xc16x.c index 9f285c7922d..ec7e3da434c 100644 --- a/bfd/elf32-xc16x.c +++ b/bfd/elf32-xc16x.c @@ -373,12 +373,12 @@ elf32_xc16x_relocate_section (bfd *output_bfd, } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-xstormy16.c b/bfd/elf32-xstormy16.c index 851ebbc631e..b5946b7176b 100644 --- a/bfd/elf32-xstormy16.c +++ b/bfd/elf32-xstormy16.c @@ -818,12 +818,12 @@ xstormy16_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNU } else { - bfd_boolean unresolved_reloc, warned; + bfd_boolean unresolved_reloc, warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c index 28ed9aa907d..75ccefef025 100644 --- a/bfd/elf32-xtensa.c +++ b/bfd/elf32-xtensa.c @@ -2638,10 +2638,12 @@ elf_xtensa_relocate_section (bfd *output_bfd, } else { + bfd_boolean ignored; + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (relocation == 0 && !unresolved_reloc diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c index 289164fd666..3dbdab73f36 100644 --- a/bfd/elf64-alpha.c +++ b/bfd/elf64-alpha.c @@ -4303,14 +4303,14 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; struct elf_link_hash_entry *hh; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, hh, sec, value, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (warned) continue; diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c index 102cdff8d97..58a05af845b 100644 --- a/bfd/elf64-ia64-vms.c +++ b/bfd/elf64-ia64-vms.c @@ -3495,13 +3495,13 @@ elf64_ia64_relocate_section (bfd *output_bfd, else { bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sym_sec, value, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (h->root.type == bfd_link_hash_undefweak) undef_weak_ref = TRUE; diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c index 499bcd609ad..c7e1c250d9b 100644 --- a/bfd/elf64-mmix.c +++ b/bfd/elf64-mmix.c @@ -1413,12 +1413,13 @@ mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else { - bfd_boolean unresolved_reloc; + bfd_boolean unresolved_reloc, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, undefined_signalled); + unresolved_reloc, undefined_signalled, + ignored); name = h->root.root.string; } diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 136887f25e2..24c733e21dc 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -12973,10 +12973,12 @@ ppc64_elf_relocate_section (bfd *output_bfd, } else { + bfd_boolean ignored; + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h_elf, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); sym_name = h_elf->root.root.string; sym_type = h_elf->type; if (sec != NULL diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index 3aea98ce765..601aa4374d5 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -2374,11 +2374,12 @@ elf_s390_relocate_section (bfd *output_bfd, else { bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); } if (sec != NULL && discarded_section (sec)) diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index f748641ea8d..c95fdf5f9cb 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -3298,11 +3298,12 @@ elf_x86_64_relocate_section (bfd *output_bfd, else { bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); st_size = h->size; } diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 8f0e71699fd..3424ae2f8f7 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -4132,12 +4132,12 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); sym_type = h->type; } diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c index 117b4c8c671..ef340cf9855 100644 --- a/bfd/elfnn-ia64.c +++ b/bfd/elfnn-ia64.c @@ -3902,17 +3902,17 @@ elfNN_ia64_relocate_section (bfd *output_bfd, else { bfd_boolean unresolved_reloc; - bfd_boolean warned; + bfd_boolean warned, ignored; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sym_sec, value, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (h->root.type == bfd_link_hash_undefweak) undef_weak_ref = TRUE; - else if (warned) + else if (warned || (ignored && info->executable)) continue; } diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c index 94da3600a82..8250f840a13 100644 --- a/bfd/elfxx-sparc.c +++ b/bfd/elfxx-sparc.c @@ -3019,12 +3019,12 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, } else { - bfd_boolean warned; + bfd_boolean warned, ignored; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (warned) { /* To avoid generating warning messages about truncated diff --git a/bfd/elfxx-tilegx.c b/bfd/elfxx-tilegx.c index c57e38f3a71..594ee799849 100644 --- a/bfd/elfxx-tilegx.c +++ b/bfd/elfxx-tilegx.c @@ -3191,12 +3191,13 @@ tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; + bfd_boolean ignored ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, - unresolved_reloc, warned); + unresolved_reloc, warned, ignored); if (warned) { /* To avoid generating warning messages about truncated diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 38192f2169a..68360428dca 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-11-05 H.J. Lu + + PR ld/4409 + * ld-ia64/error1.d: New file. + * ld-ia64/error1.s: Likewise. + * ld-ia64/error2.d: Likewise. + * ld-ia64/error3.d: Likewise. + 2013-11-04 Alan Modra * ld-powerpc/elfv2exe.d: Adjust for non-PIC global entry. diff --git a/ld/testsuite/ld-ia64/error1.d b/ld/testsuite/ld-ia64/error1.d new file mode 100644 index 00000000000..82142b6a11e --- /dev/null +++ b/ld/testsuite/ld-ia64/error1.d @@ -0,0 +1,7 @@ +#source: error1.s +#ld: -unresolved-symbols=ignore-all +#readelf: -s + +#... +[ ]+[0-9]+:[ ]+[0]+[ ]+0[ ]+NOTYPE[ ]+GLOBAL DEFAULT[ ]+UND[ ]+foo +#pass diff --git a/ld/testsuite/ld-ia64/error1.s b/ld/testsuite/ld-ia64/error1.s new file mode 100644 index 00000000000..fd48eaeace4 --- /dev/null +++ b/ld/testsuite/ld-ia64/error1.s @@ -0,0 +1,30 @@ + .explicit + .pred.safe_across_calls p1-p5,p16-p63 + .text + .align 16 + .global _start# + .proc _start# +_start: + .prologue 12, 32 + .mii + .save ar.pfs, r33 + alloc r33 = ar.pfs, 0, 3, 0, 0 + .save rp, r32 + mov r32 = b0 + mov r34 = r1 + .body + ;; + .bbb + nop 0 + nop 0 + br.call.sptk.many b0 = foo# + ;; + .mmi + nop 0 + mov r1 = r34 + mov b0 = r32 + .mib + nop 0 + mov ar.pfs = r33 + br.ret.sptk.many b0 + .endp _start# diff --git a/ld/testsuite/ld-ia64/error2.d b/ld/testsuite/ld-ia64/error2.d new file mode 100644 index 00000000000..764ba66d279 --- /dev/null +++ b/ld/testsuite/ld-ia64/error2.d @@ -0,0 +1,7 @@ +#source: error1.s +#ld: -pie -unresolved-symbols=ignore-all +#readelf: -s + +#... +[ ]+[0-9]+:[ ]+[0]+[ ]+0[ ]+NOTYPE[ ]+GLOBAL DEFAULT[ ]+UND[ ]+foo +#pass diff --git a/ld/testsuite/ld-ia64/error3.d b/ld/testsuite/ld-ia64/error3.d new file mode 100644 index 00000000000..e14d451bbae --- /dev/null +++ b/ld/testsuite/ld-ia64/error3.d @@ -0,0 +1,7 @@ +#source: error1.s +#ld: -pie -shared +#readelf: -s + +#... +[ ]+[0-9]+:[ ]+[0]+[ ]+0[ ]+NOTYPE[ ]+GLOBAL DEFAULT[ ]+UND[ ]+foo +#pass -- 2.30.2