diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-24 21:57:39 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-24 21:57:39 +0000 |
commit | 25958730dffe0a16f9c251a1fa317799b8419a1f (patch) | |
tree | a9223e455a84f95e29c73b82f114b6d3ef344857 /test | |
parent | 8b4e60c276fc2e7f01a07343197d3956d3526d8d (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.s | 65 |
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: |