From 81fbe831fe0239501808446529614a07449695e3 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Sat, 30 Mar 2013 10:14:15 +0000
Subject: 	PR ld/15323 bfd/ 	* elf-m10300.c
 (mn10300_elf_check_relocs): Set non_ir_ref for 	global symbols
 referenced by relocs. 	* elf32-arm.c (elf32_arm_check_relocs): Likewise. 
 * elf32-bfin.c (bfin_check_relocs): Likewise. 	* elf32-cr16.c
 (cr16_elf_check_relocs): Likewise. 	* elf32-cris.c
 (cris_elf_check_relocs): Likewise. 	* elf32-d10v.c
 (elf32_d10v_check_relocs): Likewise. 	* elf32-dlx.c
 (elf32_dlx_check_relocs): Likewise. 	* elf32-fr30.c
 (fr30_elf_check_relocs): Likewise. 	* elf32-frv.c
 (elf32_frv_check_relocs): Likewise. 	* elf32-hppa.c
 (elf32_hppa_check_relocs): Likewise. 	* elf32-i370.c
 (i370_elf_check_relocs): Likewise. 	* elf32-iq2000.c
 (iq2000_elf_check_relocs): Likewise. 	* elf32-lm32.c
 (lm32_elf_check_relocs): Likewise. 	* elf32-m32c.c
 (m32c_elf_check_relocs): Likewise. 	* elf32-m32r.c
 (m32r_elf_check_relocs): Likewise. 	* elf32-m68hc1x.c
 (elf32_m68hc11_check_relocs): Likewise. 	* elf32-m68k.c
 (elf_m68k_check_relocs): Likewise. 	* elf32-mcore.c
 (mcore_elf_check_relocs): Likewise. 	* elf32-metag.c
 (elf_metag_check_relocs): Likewise. 	* elf32-microblaze.c
 (microblaze_elf_check_relocs): Likewise. 	* elf32-moxie.c
 (moxie_elf_check_relocs): Likewise. 	* elf32-msp430.c
 (elf32_msp430_check_relocs): Likewise. 	* elf32-mt.c
 (mt_elf_check_relocs): Likewise. 	* elf32-nios2.c
 (nios2_elf32_check_relocs): Likewise. 	* elf32-openrisc.c
 (openrisc_elf_check_relocs): Likewise. 	* elf32-ppc.c
 (ppc_elf_check_relocs): Likewise. 	* elf32-rl78.c
 (rl78_elf_check_relocs): Likewise. 	* elf32-s390.c
 (elf_s390_check_relocs): Likewise. 	* elf32-score.c
 (s3_bfd_score_elf_check_relocs): Likewise. 	* elf32-score7.c
 (s7_bfd_score_elf_check_relocs): Likewise. 	* elf32-sh.c
 (sh_elf_check_relocs): Likewise. 	* elf32-tic6x.c
 (elf32_tic6x_check_relocs): Likewise. 	* elf32-tilepro.c
 (tilepro_elf_check_relocs): Likewise. 	* elf32-v850.c
 (v850_elf_check_relocs): Likewise. 	* elf32-vax.c (elf_vax_check_relocs):
 Likewise. 	* elf32-xstormy16.c (xstormy16_elf_check_relocs): Likewise. 
 * elf32-xtensa.c (elf_xtensa_check_relocs): Likewise. 	* elf64-aarch64.c
 (elf64_aarch64_check_relocs): Likewise. 	* elf64-alpha.c
 (elf64_alpha_check_relocs): Likewise. 	* elf64-hppa.c
 (elf64_hppa_check_relocs): Likewise. 	* elf64-ia64-vms.c
 (elf64_ia64_check_relocs): Likewise. 	* elf64-mmix.c
 (mmix_elf_check_relocs): Likewise. 	* elf64-ppc.c
 (ppc64_elf_check_relocs): Likewise. 	* elf64-s390.c
 (elf_s390_check_relocs): Likewise. 	* elf64-sh64.c
 (sh_elf64_check_relocs): Likewise. 	* elfnn-ia64.c
 (elfNN_ia64_check_relocs): Likewise. 	* elfxx-sparc.c
 (_bfd_sparc_elf_check_relocs): Likewise. 	* elfxx-tilegx.c
 (tilegx_elf_check_relocs): Likewise. 	* elfxx-mips.c
 (_bfd_mips_elf_check_relocs): Likewise.  Don't 	test indirect/warning
 links for NULL. ld/testsuite/ 	* ld-plugin/lto.exp (pr15323a.c): Compile
 without -flto rather 	than using -r to effectively strip out lto info.

---
 bfd/elfxx-sparc.c | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'bfd/elfxx-sparc.c')

diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index 596c838..ba00105 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -1450,6 +1450,10 @@ _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 	  while (h->root.type == bfd_link_hash_indirect
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  /* PR15323, ref flags aren't set for references in the same
+	     object.  */
+	  h->root.non_ir_ref = 1;
 	}
 
       if (h && h->type == STT_GNU_IFUNC)
-- 
cgit v1.1