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