PowerPC64 bigtoc TLS SIGILL

Alan Modra amodra@gmail.com
Tue Apr 13 04:04:00 GMT 2010


When testing tls and bigtoc code, I found we were getting sigill on
some testcases in the gcc testsuite.  The following patch fixes a
stupid linker bug.

	* elf64-ppc.c (ppc64_elf_relocate_section): Correct NOP location
	when optimizing high got_tlsgd/ld insns.

Index: bfd/elf64-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
retrieving revision 1.325
diff -u -p -r1.325 elf64-ppc.c
--- bfd/elf64-ppc.c	31 Mar 2010 07:53:40 -0000	1.325
+++ bfd/elf64-ppc.c	13 Apr 2010 03:35:54 -0000
@@ -11650,8 +11650,8 @@ ppc64_elf_relocate_section (bfd *output_
 			  + R_PPC64_GOT_TPREL16_DS);
 	      else
 		{
-		  bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
 		  rel->r_offset -= d_offset;
+		  bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
 		  r_type = R_PPC64_NONE;
 		}
 	      rel->r_info = ELF64_R_INFO (r_symndx, r_type);

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list