This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: RFC + committed: fix CRIS initial-exec relocation for tcomm TLS offset in GOT
- From: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- To: binutils at sourceware dot org
- Date: Sun, 17 Jun 2012 18:58:04 +0200
- Subject: Re: RFC + committed: fix CRIS initial-exec relocation for tcomm TLS offset in GOT
> From: Hans-Peter Nilsson <hp@axis.com>
> Date: Sun, 17 Jun 2012 09:32:00 +0200
> Anyway, the
> data emitted into .got was wrong for .tls_common references from
> a non-DSO. A corresponding test-case for DSO seemed due (but
> didn't fail (info->shared being true); only tls-e-tpiecomm1
> failed.
But this one failed too (the DSO-accommodating corresponding
reloc, but in an executable), so committed.
ld/testsuite:
* ld-cris/tls-e-tpoffgotcomm1.d: New test.
Index: ld-cris/tls-e-tpoffgotcomm1.d
===================================================================
RCS file: ld-cris/tls-e-tpoffgotcomm1.d
diff -N ld-cris/tls-e-tpoffgotcomm1.d
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ld-cris/tls-e-tpoffgotcomm1.d 17 Jun 2012 16:54:18 -0000
@@ -0,0 +1,43 @@
+#source: start1.s
+#source: tls-dso-tpoffgotcomm1.s --pic
+#as: --no-underscore --em=criself -I$srcdir/$subdir
+#ld: -m crislinux
+#objdump: -d -s -h -t -p
+
+# Like tls-dso-tpoffgotcomm1.d but making sure we can link *an
+# executable* with TPOFFGOT relocs against common symbols.
+
+.*: file format elf32-cris
+
+Program Header:
+ LOAD off 0x0+ vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*13
+ filesz 0x0+a4 memsz 0x0+a4 flags r-x
+ LOAD off .*
+ filesz .*
+ TLS off 0x0+a4 vaddr .* paddr .* align 2\*\*2
+ filesz 0x0+ memsz 0x0+8 flags r--
+private flags = 0:
+
+Sections:
+#...
+ 2 \.got 0+14 0+820a4 0+820a4 0+a4 2\*\*2
+ CONTENTS, ALLOC, LOAD, DATA
+SYMBOL TABLE:
+#...
+0+ g \.tbss 0+4 foo
+#...
+0+4 g \.tbss 0+4 bar
+#...
+Contents of section .got:
+ 820a4 00000000 00000000 00000000 f8ffffff .*
+ 820b4 fcffffff .*
+
+Disassembly of section \.text:
+
+0+80094 <_start>:
+ 80094: 41b2 moveq 1,\$r11
+#...
+0+80098 <do_test>:
+ 80098: 2f0e 0c00 0000 add.d c <bar\+0x8>,\$r0
+ 8009e: 1f1e 1000 add.w 0x10,\$r1
+ \.\.\.
brgds, H-P