aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-11-24 21:57:39 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-11-24 21:57:39 +0000
commit25958730dffe0a16f9c251a1fa317799b8419a1f (patch)
treea9223e455a84f95e29c73b82f114b6d3ef344857 /test
parent8b4e60c276fc2e7f01a07343197d3956d3526d8d (diff)
Behave a bit more like gnu as and use the symbol (instead of the section)
for any relocation to a symbol defined in a tls section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120121 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/MC/ELF/relocation-386.s65
1 files changed, 64 insertions, 1 deletions
diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s
index c14751ae24..a442d4298d 100644
--- a/test/MC/ELF/relocation-386.s
+++ b/test/MC/ELF/relocation-386.s
@@ -114,12 +114,66 @@
// CHECK-NEXT: ('r_sym', 0x00000000)
// CHECK-NEXT: ('r_type', 0x00000002)
// CHECK-NEXT: ),
-// Relocation 13 (zed@NTPOFF) is of type R_386_TLS_LE and uses the symbol
+// Relocation 13 (zed@GOT) is of type R_386_GOT32 and uses the symbol
// CHECK-NEXT: # Relocation 0x0000000d
// CHECK-NEXT: (('r_offset', 0x0000004e)
// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000003)
+// CHECK-NEXT: ),
+// Relocation 14 (zed@GOTOFF) is of type R_386_GOTOFF and uses the symbol
+// CHECK-NEXT: # Relocation 0x0000000e
+// CHECK-NEXT: (('r_offset', 0x00000054)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000009)
+// CHECK-NEXT: ),
+// Relocation 15 (zed@INDNTPOFF) is of type R_386_TLS_IE and uses the symbol
+// CHECK-NEXT: # Relocation 0x0000000f
+// CHECK-NEXT: (('r_offset', 0x0000005a)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x0000000f)
+// CHECK-NEXT: ),
+// Relocation 16 (zed@NTPOFF) is of type R_386_TLS_LE and uses the symbol
+// CHECK-NEXT: # Relocation 0x00000010
+// CHECK-NEXT: (('r_offset', 0x00000060)
+// CHECK-NEXT: ('r_sym', 0x00000004)
// CHECK-NEXT: ('r_type', 0x00000011)
// CHECK-NEXT: ),
+// Relocation 17 (zed@GOTNTPOFF) is of type R_386_TLS_GOTIE and uses the symbol
+// CHECK-NEXT: # Relocation 0x00000011
+// CHECK-NEXT: (('r_offset', 0x00000066)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000010)
+// CHECK-NEXT: ),
+// Relocation 18 (zed@PLT) is of type R_386_PLT32 and uses the symbol
+// CHECK-NEXT: # Relocation 0x00000012
+// CHECK-NEXT: (('r_offset', 0x0000006b)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000004)
+// CHECK-NEXT: ),
+// Relocation 19 (zed@TLSGD) is of type R_386_TLS_GD and uses the symbol
+// CHECK-NEXT: # Relocation 0x00000013
+// CHECK-NEXT: (('r_offset', 0x00000071)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000012)
+// CHECK-NEXT: ),
+// Relocation 20 (zed@TLSLDM) is of type R_386_TLS_LDM and uses the symbol
+// CHECK-NEXT: # Relocation 0x00000014
+// CHECK-NEXT: (('r_offset', 0x00000077)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000013)
+// CHECK-NEXT: ),
+// Relocation 21 (zed@TPOFF) is of type R_386_TLS_LE_32 and uses the symbol
+// CHECK-NEXT:# Relocation 0x00000015
+// CHECK-NEXT: (('r_offset', 0x0000007d)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000022)
+// CHECK-NEXT: ),
+// Relocation 22 (zed@DTPOFF) is of type R_386_TLS_LDO_32 and uses the symbol
+// CHECK-NEXT: Relocation 0x00000016
+// CHECK-NEXT: (('r_offset', 0x00000083)
+// CHECK-NEXT: ('r_sym', 0x00000004)
+// CHECK-NEXT: ('r_type', 0x00000020)
+// CHECK-NEXT: ),
.text
bar:
@@ -145,7 +199,16 @@ bar2:
leal foo@TLSLDM(%ebx), %eax
leal foo@DTPOFF(%eax), %edx
calll 4096
+ movl zed@GOT(%eax), %eax
+ movl zed@GOTOFF(%eax), %eax
+ movl zed@INDNTPOFF(%eax), %eax
movl zed@NTPOFF(%eax), %eax
+ movl zed@GOTNTPOFF(%eax), %eax
+ call zed@PLT
+ movl zed@TLSGD(%eax), %eax
+ movl zed@TLSLDM(%eax), %eax
+ movl zed@TPOFF(%eax), %eax
+ movl zed@DTPOFF(%eax), %eax
.section zedsec,"awT",@progbits
zed: