Skip to content

Commit f9898cf

Browse files
committed
[SystemZ,test] Test section symbol and STT_TLS adjustment
1 parent 616737c commit f9898cf

File tree

1 file changed

+58
-40
lines changed

1 file changed

+58
-40
lines changed

llvm/test/MC/SystemZ/fixups.s

Lines changed: 58 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11

22
# RUN: llvm-mc -triple s390x-unknown-unknown -mcpu=z13 --show-encoding %s | FileCheck %s
33

4-
# RUN: llvm-mc -triple s390x-unknown-unknown -mcpu=z13 -filetype=obj %s | \
5-
# RUN: llvm-readobj -r - | FileCheck %s -check-prefix=CHECK-REL
4+
# RUN: llvm-mc -triple s390x-unknown-unknown -mcpu=z13 -filetype=obj %s -o %t
5+
# RUN: llvm-readobj -r %t | FileCheck %s -check-prefix=CHECK-REL
6+
# RUN: llvm-readelf -s - < %t | FileCheck %s --check-prefix=READELF --implicit-check-not=TLS
67

78
# RUN: llvm-mc -triple s390x-unknown-unknown -mcpu=z13 -filetype=obj %s | \
89
# RUN: llvm-objdump -d - | FileCheck %s -check-prefix=CHECK-DIS
@@ -25,11 +26,11 @@
2526
.align 16
2627
larl %r14, target@gotent
2728

28-
# CHECK: larl %r14, target@INDNTPOFF # encoding: [0xc0,0xe0,A,A,A,A]
29-
# CHECK-NEXT: # fixup A - offset: 2, value: target@INDNTPOFF+2, kind: FK_390_PC32DBL
30-
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_TLS_IEENT target 0x2
29+
# CHECK: larl %r14, s_indntpoff@INDNTPOFF # encoding: [0xc0,0xe0,A,A,A,A]
30+
# CHECK-NEXT: # fixup A - offset: 2, value: s_indntpoff@INDNTPOFF+2, kind: FK_390_PC32DBL
31+
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_TLS_IEENT s_indntpoff 0x2
3132
.align 16
32-
larl %r14, target@indntpoff
33+
larl %r14, s_indntpoff@indntpoff
3334

3435
# CHECK: brasl %r14, target # encoding: [0xc0,0xe5,A,A,A,A]
3536
# CHECK-NEXT: # fixup A - offset: 2, value: target+2, kind: FK_390_PC32DBL
@@ -43,21 +44,21 @@
4344
.align 16
4445
brasl %r14, target@plt
4546

46-
# CHECK: brasl %r14, target@PLT:tls_gdcall:sym # encoding: [0xc0,0xe5,A,A,A,A]
47+
# CHECK: brasl %r14, target@PLT:tls_gdcall:s_gdcall # encoding: [0xc0,0xe5,A,A,A,A]
4748
# CHECK-NEXT: # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
48-
# CHECK-NEXT: # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
49+
# CHECK-NEXT: # fixup B - offset: 0, value: s_gdcall@TLSGD, kind: FK_390_TLS_CALL
4950
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
50-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
51+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GDCALL s_gdcall 0x0
5152
.align 16
52-
brasl %r14, target@plt:tls_gdcall:sym
53+
brasl %r14, target@plt:tls_gdcall:s_gdcall
5354

54-
# CHECK: brasl %r14, target@PLT:tls_ldcall:sym # encoding: [0xc0,0xe5,A,A,A,A]
55+
# CHECK: brasl %r14, target@PLT:tls_ldcall:s_ldcall # encoding: [0xc0,0xe5,A,A,A,A]
5556
# CHECK-NEXT: # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
56-
# CHECK-NEXT: # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
57+
# CHECK-NEXT: # fixup B - offset: 0, value: s_ldcall@TLSLDM, kind: FK_390_TLS_CALL
5758
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
58-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
59+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDCALL s_ldcall 0x0
5960
.align 16
60-
brasl %r14, target@plt:tls_ldcall:sym
61+
brasl %r14, target@plt:tls_ldcall:s_ldcall
6162

6263
# CHECK: bras %r14, target # encoding: [0xa7,0xe5,A,A]
6364
# CHECK-NEXT: # fixup A - offset: 2, value: target+2, kind: FK_390_PC16DBL
@@ -71,21 +72,21 @@
7172
.align 16
7273
bras %r14, target@plt
7374

74-
# CHECK: bras %r14, target@PLT:tls_gdcall:sym # encoding: [0xa7,0xe5,A,A]
75+
# CHECK: bras %r14, target@PLT:tls_gdcall:gdcall # encoding: [0xa7,0xe5,A,A]
7576
# CHECK-NEXT: # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
76-
# CHECK-NEXT: # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
77+
# CHECK-NEXT: # fixup B - offset: 0, value: gdcall@TLSGD, kind: FK_390_TLS_CALL
7778
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
78-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
79+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GDCALL gdcall 0x0
7980
.align 16
80-
bras %r14, target@plt:tls_gdcall:sym
81+
bras %r14, target@plt:tls_gdcall:gdcall
8182

82-
# CHECK: bras %r14, target@PLT:tls_ldcall:sym # encoding: [0xa7,0xe5,A,A]
83+
# CHECK: bras %r14, target@PLT:tls_ldcall:ldcall # encoding: [0xa7,0xe5,A,A]
8384
# CHECK-NEXT: # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
84-
# CHECK-NEXT: # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
85+
# CHECK-NEXT: # fixup B - offset: 0, value: ldcall@TLSLDM, kind: FK_390_TLS_CALL
8586
# CHECK-REL: 0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
86-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
87+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDCALL ldcall 0x0
8788
.align 16
88-
bras %r14, target@plt:tls_ldcall:sym
89+
bras %r14, target@plt:tls_ldcall:ldcall
8990

9091

9192
# Symbolic displacements
@@ -420,41 +421,58 @@ local_s32:
420421
.align 16
421422
lgfi %r1,src-.
422423

424+
# CHECK-REL-LABEL: .rela.adjusted
425+
# CHECK-REL: R_390_GOTENT local
426+
# CHECK-REL: R_390_PLT32DBL local
427+
.section .adjusted,"ax"
428+
local:
429+
larl %r14, local@got
430+
brasl %r14, local@plt
431+
423432
# Data relocs
424433
# llvm-mc does not show any "encoding" string for data, so we just check the relocs
425434

426-
# CHECK-REL: .rela.data
435+
# CHECK-REL-LABEL: .rela.data
427436
.data
428437

429-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE64 target 0x0
438+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE64 s_ntpoff 0x0
430439
.align 16
431-
.quad target@ntpoff
440+
.quad s_ntpoff@ntpoff
432441

433-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO64 target 0x0
442+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO64 s_dtpoff 0x0
434443
.align 16
435-
.quad target@dtpoff
444+
.quad s_dtpoff@dtpoff
436445

437-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM64 target 0x0
446+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM64 s_tlsldm 0x0
438447
.align 16
439-
.quad target@tlsldm
448+
.quad s_tlsldm@tlsldm
440449

441-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD64 target 0x0
450+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD64 s_tlsgd 0x0
442451
.align 16
443-
.quad target@tlsgd
452+
.quad s_tlsgd@tlsgd
444453

445-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE32 target 0x0
454+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE32 s_ntpoff 0x0
446455
.align 16
447-
.long target@ntpoff
456+
.long s_ntpoff@ntpoff
448457

449-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO32 target 0x0
458+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO32 s_dtpoff 0x0
450459
.align 16
451-
.long target@dtpoff
460+
.long s_dtpoff@dtpoff
452461

453-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM32 target 0x0
462+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM32 s_tlsldm 0x0
454463
.align 16
455-
.long target@tlsldm
464+
.long s_tlsldm@tlsldm
456465

457-
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD32 target 0x0
466+
# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD32 s_tlsgd 0x0
458467
.align 16
459-
.long target@tlsgd
460-
468+
.long s_tlsgd@tlsgd
469+
470+
# READELF: TLS GLOBAL DEFAULT UND s_indntpoff
471+
# READELF: TLS GLOBAL DEFAULT UND s_gdcall
472+
# READELF: TLS GLOBAL DEFAULT UND s_ldcall
473+
# READELF: TLS GLOBAL DEFAULT UND gdcall
474+
# READELF: TLS GLOBAL DEFAULT UND ldcall
475+
# READELF: TLS GLOBAL DEFAULT UND s_ntpoff
476+
# READELF: TLS GLOBAL DEFAULT UND s_dtpoff
477+
# READELF: TLS GLOBAL DEFAULT UND s_tlsldm
478+
# READELF: TLS GLOBAL DEFAULT UND s_tlsgd

0 commit comments

Comments
 (0)