xref: /aosp_15_r20/external/llvm/test/MC/SystemZ/fixups.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker
2*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple s390x-unknown-unknown --show-encoding %s | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple s390x-unknown-unknown -filetype=obj %s | \
5*9880d681SAndroid Build Coastguard Worker# RUN: llvm-readobj -r | FileCheck %s -check-prefix=CHECK-REL
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker# CHECK: larl %r14, target                      # encoding: [0xc0,0xe0,A,A,A,A]
8*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC32DBL
9*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC32DBL target 0x2
10*9880d681SAndroid Build Coastguard Worker	.align 16
11*9880d681SAndroid Build Coastguard Worker	larl %r14, target
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker# CHECK: larl %r14, target@GOT                  # encoding: [0xc0,0xe0,A,A,A,A]
14*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@GOT+2, kind: FK_390_PC32DBL
15*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_GOTENT target 0x2
16*9880d681SAndroid Build Coastguard Worker	.align 16
17*9880d681SAndroid Build Coastguard Worker	larl %r14, target@got
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker# CHECK: larl %r14, target@INDNTPOFF            # encoding: [0xc0,0xe0,A,A,A,A]
20*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@INDNTPOFF+2, kind: FK_390_PC32DBL
21*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_TLS_IEENT target 0x2
22*9880d681SAndroid Build Coastguard Worker	.align 16
23*9880d681SAndroid Build Coastguard Worker	larl %r14, target@indntpoff
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker# CHECK: brasl %r14, target                     # encoding: [0xc0,0xe5,A,A,A,A]
26*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC32DBL
27*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC32DBL target 0x2
28*9880d681SAndroid Build Coastguard Worker	.align 16
29*9880d681SAndroid Build Coastguard Worker	brasl %r14, target
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker# CHECK: brasl %r14, target@PLT                 # encoding: [0xc0,0xe5,A,A,A,A]
32*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
33*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
34*9880d681SAndroid Build Coastguard Worker	.align 16
35*9880d681SAndroid Build Coastguard Worker	brasl %r14, target@plt
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker# CHECK: brasl %r14, target@PLT:tls_gdcall:sym  # encoding: [0xc0,0xe5,A,A,A,A]
38*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
39*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
40*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
41*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
42*9880d681SAndroid Build Coastguard Worker	.align 16
43*9880d681SAndroid Build Coastguard Worker	brasl %r14, target@plt:tls_gdcall:sym
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker# CHECK: brasl %r14, target@PLT:tls_ldcall:sym  # encoding: [0xc0,0xe5,A,A,A,A]
46*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC32DBL
47*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
48*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT32DBL target 0x2
49*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
50*9880d681SAndroid Build Coastguard Worker	.align 16
51*9880d681SAndroid Build Coastguard Worker	brasl %r14, target@plt:tls_ldcall:sym
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker# CHECK: bras %r14, target                      # encoding: [0xa7,0xe5,A,A]
54*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target+2, kind: FK_390_PC16DBL
55*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PC16DBL target 0x2
56*9880d681SAndroid Build Coastguard Worker	.align 16
57*9880d681SAndroid Build Coastguard Worker	bras %r14, target
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker# CHECK: bras %r14, target@PLT                  # encoding: [0xa7,0xe5,A,A]
60*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
61*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
62*9880d681SAndroid Build Coastguard Worker	.align 16
63*9880d681SAndroid Build Coastguard Worker	bras %r14, target@plt
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker# CHECK: bras %r14, target@PLT:tls_gdcall:sym   # encoding: [0xa7,0xe5,A,A]
66*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
67*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSGD, kind: FK_390_TLS_CALL
68*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
69*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_GDCALL sym 0x0
70*9880d681SAndroid Build Coastguard Worker	.align 16
71*9880d681SAndroid Build Coastguard Worker	bras %r14, target@plt:tls_gdcall:sym
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Worker# CHECK: bras %r14, target@PLT:tls_ldcall:sym   # encoding: [0xa7,0xe5,A,A]
74*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup A - offset: 2, value: target@PLT+2, kind: FK_390_PC16DBL
75*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT:                                   # fixup B - offset: 0, value: sym@TLSLDM, kind: FK_390_TLS_CALL
76*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*2}} R_390_PLT16DBL target 0x2
77*9880d681SAndroid Build Coastguard Worker# CHECK-REL:                                    0x{{[0-9A-F]*0}} R_390_TLS_LDCALL sym 0x0
78*9880d681SAndroid Build Coastguard Worker	.align 16
79*9880d681SAndroid Build Coastguard Worker	bras %r14, target@plt:tls_ldcall:sym
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker# Data relocs
83*9880d681SAndroid Build Coastguard Worker# llvm-mc does not show any "encoding" string for data, so we just check the relocs
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker# CHECK-REL: .rela.data
86*9880d681SAndroid Build Coastguard Worker	.data
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE64 target 0x0
89*9880d681SAndroid Build Coastguard Worker	.align 16
90*9880d681SAndroid Build Coastguard Worker	.quad target@ntpoff
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO64 target 0x0
93*9880d681SAndroid Build Coastguard Worker	.align 16
94*9880d681SAndroid Build Coastguard Worker	.quad target@dtpoff
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM64 target 0x0
97*9880d681SAndroid Build Coastguard Worker	.align 16
98*9880d681SAndroid Build Coastguard Worker	.quad target@tlsldm
99*9880d681SAndroid Build Coastguard Worker
100*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD64 target 0x0
101*9880d681SAndroid Build Coastguard Worker	.align 16
102*9880d681SAndroid Build Coastguard Worker	.quad target@tlsgd
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LE32 target 0x0
105*9880d681SAndroid Build Coastguard Worker	.align 16
106*9880d681SAndroid Build Coastguard Worker	.long target@ntpoff
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDO32 target 0x0
109*9880d681SAndroid Build Coastguard Worker	.align 16
110*9880d681SAndroid Build Coastguard Worker	.long target@dtpoff
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_LDM32 target 0x0
113*9880d681SAndroid Build Coastguard Worker	.align 16
114*9880d681SAndroid Build Coastguard Worker	.long target@tlsldm
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Worker# CHECK-REL: 0x{{[0-9A-F]*0}} R_390_TLS_GD32 target 0x0
117*9880d681SAndroid Build Coastguard Worker	.align 16
118*9880d681SAndroid Build Coastguard Worker	.long target@tlsgd
119*9880d681SAndroid Build Coastguard Worker
120