235 lines · plain
1# REQUIRES: ppc2 3# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o4# RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=INPUT-REL %s5## IE6# RUN: ld.lld -shared %t.o -o %t.so7# RUN: llvm-readobj -d -r %t.so | FileCheck --check-prefix=IE-REL %s8# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=IE %s9## IE -> LE10# RUN: ld.lld %t.o -o %t11# RUN: llvm-readelf -r %t | FileCheck --check-prefix=NOREL %s12# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=LE %s13 14# RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o %t.o15# RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=INPUT-REL %s16## IE17# RUN: ld.lld -shared %t.o -o %t.so18# RUN: llvm-readobj -d -r %t.so | FileCheck --check-prefix=IE-REL %s19# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=IE %s20## IE -> LE21# RUN: ld.lld %t.o -o %t22# RUN: llvm-readelf -r %t | FileCheck --check-prefix=NOREL %s23# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=LE %s24 25# IE-REL: FLAGS STATIC_TLS26# IE-REL: .rela.dyn {27# IE-REL-NEXT: 0x205A8 R_PPC64_TPREL64 c 0x028# IE-REL-NEXT: 0x205B0 R_PPC64_TPREL64 s 0x029# IE-REL-NEXT: 0x205B8 R_PPC64_TPREL64 i 0x030# IE-REL-NEXT: 0x205C0 R_PPC64_TPREL64 l 0x031# IE-REL-NEXT: 0x205C8 R_PPC64_TPREL64 f 0x032# IE-REL-NEXT: 0x205D0 R_PPC64_TPREL64 d 0x033# IE-REL-NEXT: }34 35# INPUT-REL: R_PPC64_GOT_TPREL16_HA c 0x036# INPUT-REL: R_PPC64_GOT_TPREL16_LO_DS c 0x037# INPUT-REL: R_PPC64_TLS c 0x038## &.got[1] - .TOC. = -3276039# IE-LABEL: <test1>:40# IE-NEXT: addis 3, 2, 041# IE-NEXT: ld 3, -32760(3)42# IE-NEXT: lbzx 3, 3, 1343# LE-LABEL: <test1>:44# LE-NEXT: nop45# LE-NEXT: addis 3, 13, 046# LE-NEXT: lbz 3, -28672(3)47test1:48 addis 3, 2, c@got@tprel@ha49 ld 3, c@got@tprel@l(3)50 lbzx 3, 3, c@tls51 52# INPUT-REL: R_PPC64_GOT_TPREL16_HA s 0x053# INPUT-REL: R_PPC64_GOT_TPREL16_LO_DS s 0x054# INPUT-REL: R_PPC64_TLS s 0x055## &.got[2] - .TOC. = -3275256# IE-LABEL: <test2>:57# IE-NEXT: addis 3, 2, 058# IE-NEXT: ld 3, -32752(3)59# IE-NEXT: lhzx 3, 3, 1360# LE-LABEL: <test2>:61# LE-NEXT: nop62# LE-NEXT: addis 3, 13, 063# LE-NEXT: lhz 3, -28670(3)64test2:65 addis 3, 2, s@got@tprel@ha66 ld 3, s@got@tprel@l(3)67 lhzx 3, 3, s@tls68 69# INPUT-REL: R_PPC64_GOT_TPREL16_HA i 0x070# INPUT-REL: R_PPC64_GOT_TPREL16_LO_DS i 0x071# INPUT-REL: R_PPC64_TLS i 0x072## &.got[3] - .TOC. = -3274473# IE-LABEL: <test3>:74# IE-NEXT: addis 3, 2, 075# IE-NEXT: ld 3, -32744(3)76# IE-NEXT: lwzx 3, 3, 1377# LE-LABEL: <test3>:78# LE-NEXT: nop79# LE-NEXT: addis 3, 13, 080# LE-NEXT: lwz 3, -28668(3)81test3:82 addis 3, 2, i@got@tprel@ha83 ld 3, i@got@tprel@l(3)84 lwzx 3, 3, i@tls85 86# INPUT-REL: R_PPC64_GOT_TPREL16_HA l 0x087# INPUT-REL: R_PPC64_GOT_TPREL16_LO_DS l 0x088# INPUT-REL: R_PPC64_TLS l 0x089## &.got[4] - .TOC. = -3273690# IE-LABEL: <test4>:91# IE-NEXT: addis 3, 2, 092# IE-NEXT: ld 3, -32736(3)93# IE-NEXT: ldx 3, 3, 1394# LE-LABEL: <test4>:95# LE-NEXT: nop96# LE-NEXT: addis 3, 13, 097# LE-NEXT: ld 3, -28664(3)98test4:99 addis 3, 2, l@got@tprel@ha100 ld 3, l@got@tprel@l(3)101 ldx 3, 3, l@tls102 103# LE-LABEL: <test5>:104# LE-NEXT: nop105# LE-NEXT: addis 4, 13, 0106# LE-NEXT: stb 3, -28672(4)107test5:108 addis 4, 2, c@got@tprel@ha109 ld 4, c@got@tprel@l(4)110 stbx 3, 4, c@tls111 112 113# LE-LABEL: <test6>:114# LE-NEXT: nop115# LE-NEXT: addis 4, 13, 0116# LE-NEXT: sth 3, -28670(4)117test6:118 addis 4, 2, s@got@tprel@ha119 ld 4, s@got@tprel@l(4)120 sthx 3, 4, s@tls121 122 123# LE-LABEL: <test7>:124# LE-NEXT: nop125# LE-NEXT: addis 4, 13, 0126# LE-NEXT: stw 3, -28668(4)127test7:128 addis 4, 2, i@got@tprel@ha129 ld 4, i@got@tprel@l(4)130 stwx 3, 4, i@tls131 132# LE-LABEL: <test8>:133# LE-NEXT: nop134# LE-NEXT: addis 4, 13, 0135# LE-NEXT: std 3, -28664(4)136test8:137 addis 4, 2, l@got@tprel@ha138 ld 4, l@got@tprel@l(4)139 stdx 3, 4, l@tls140 141# LE-LABEL: <test9>:142# LE-NEXT: nop143# LE-NEXT: addis 3, 13, 0144# LE-NEXT: addi 3, 3, -28668145test9:146 addis 3, 2, i@got@tprel@ha147 ld 3, i@got@tprel@l(3)148 add 3, 3, i@tls149 150# LE-LABEL: <test_ds>:151# LE-NEXT: addis 4, 13, 0152# LE-NEXT: std 3, -28664(4)153test_ds:154 ld 4, l@got@tprel(2)155 stdx 3, 4, l@tls156 157# LE-LABEL: <test_lhax>:158# LE-NEXT: nop159# LE-NEXT: addis 3, 13, 0160# LE-NEXT: lha 3, -28670(3)161test_lhax:162 addis 3, 2, s@got@tprel@ha163 ld 3, s@got@tprel@l(3)164 lhax 3, 3, s@tls165 166# LE-LABEL: <test_lwax>:167# LE-NEXT: nop168# LE-NEXT: addis 3, 13, 0169# LE-NEXT: lwa 3, -28668(3)170test_lwax:171 addis 3, 2, i@got@tprel@ha172 ld 3, i@got@tprel@l(3)173 lwax 3, 3, i@tls174 175# LE-LABEL: <test_lfsx>:176# LE-NEXT: nop177# LE-NEXT: addis 3, 13, 0178# LE-NEXT: lfs 3, -28656(3)179test_lfsx:180 addis 3, 2, f@got@tprel@ha181 ld 3, f@got@tprel@l(3)182 lfsx 3, 3, f@tls183 184# LE-LABEL: <test_lfdx>:185# LE-NEXT: nop186# LE-NEXT: addis 3, 13, 0187# LE-NEXT: lfd 3, -28648(3)188test_lfdx:189 addis 3, 2, d@got@tprel@ha190 ld 3, d@got@tprel@l(3)191 lfdx 3, 3, d@tls192 193# LE-LABEL: <test_stfsx>:194# LE-NEXT: nop195# LE-NEXT: addis 4, 13, 0196# LE-NEXT: stfs 3, -28656(4)197test_stfsx:198 addis 4, 2, f@got@tprel@ha199 ld 4, f@got@tprel@l(4)200 stfsx 3, 4, f@tls201 202# LE-LABEL: <test_stfdx>:203# LE-NEXT: nop204# LE-NEXT: addis 4, 13, 0205# LE-NEXT: stfd 3, -28648(4)206test_stfdx:207 addis 4, 2, d@got@tprel@ha208 ld 4, d@got@tprel@l(4)209 stfdx 3, 4, d@tls210 211# NOREL: There are no relocations in this file.212 213.section .tdata,"awT",@progbits214.globl c, s, i, l, f, d215c:216.byte 97217 218.p2align 1219s:220.short 55221 222.p2align 2223i:224.long 55225 226.p2align 3227l:228.quad 55229f:230.long 55231 232.p2align 3233d:234.quad 55235