122 lines · plain
1# REQUIRES: systemz2# RUN: llvm-mc -filetype=obj -triple=s390x-unknown-linux %s -o %t.o3 4# RUN: ld.lld -shared %t.o -o %t.so5# RUN: llvm-readelf -r %t.so | FileCheck --check-prefix=IE-REL %s6# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=IE %s7# RUN: llvm-objdump --section .data --full-contents %t.so | FileCheck --check-prefix=IE-DATA %s8 9# RUN: ld.lld %t.o -o %t10# RUN: llvm-readelf -r %t | FileCheck --check-prefix=NOREL %s11# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=LE %s12# RUN: llvm-objdump --section .data --full-contents %t | FileCheck --check-prefix=LE-DATA %s13# RUN: llvm-objdump --section .got --full-contents %t | FileCheck --check-prefix=LE-GOT %s14 15## With -pie we still have the R_390_RELATIVE for the data element, but all GOT16## entries should be fully resolved without any remaining R_390_TLS_TPOFF.17# RUN: ld.lld -pie %t.o -o %t.pie18# RUN: llvm-readelf -r %t.pie | FileCheck --check-prefix=PIE-REL %s19# RUN: llvm-objdump -d --no-show-raw-insn %t.pie | FileCheck --check-prefix=PIE %s20# RUN: llvm-objdump --section .data --full-contents %t.pie | FileCheck --check-prefix=PIE-DATA %s21# RUN: llvm-objdump --section .got --full-contents %t.pie | FileCheck --check-prefix=PIE-GOT %s22 23# IE-REL: Relocation section '.rela.dyn' at offset {{.*}} contains 4 entries:24# IE-REL: 0000000000003478 000000000000000c R_390_RELATIVE 246025# IE-REL: 0000000000002460 0000000100000038 R_390_TLS_TPOFF 0000000000000008 a + 026# IE-REL: 0000000000002468 0000000200000038 R_390_TLS_TPOFF 000000000000000c b + 027# IE-REL: 0000000000002470 0000000300000038 R_390_TLS_TPOFF 0000000000000010 c + 028 29## TP offset for a is at 0x246030# IE: lgrl %r1, 0x246031# IE-NEXT: lgf %r1, 0(%r1,%r7)32 33## TP offset for b is at 0x246834# IE-NEXT: lgrl %r1, 0x246835# IE-NEXT: lgf %r1, 0(%r1,%r7)36 37## TP offset for c is at 0x247038# IE-NEXT: lgrl %r1, 0x247039# IE-NEXT: lgf %r1, 0(%r1,%r7)40 41## Data element: TP offset for a is at 0x2460 (relocated via R_390_RELATIVE above)42# IE-DATA: 3478 00000000 0000000043 44# NOREL: no relocations45 46## TP offset for a is at 0x100225047# LE: lgrl %r1, 0x100225048# LE-NEXT: lgf %r1, 0(%r1,%r7)49 50## TP offset for b is at 0x100225851# LE-NEXT: lgrl %r1, 0x100225852# LE-NEXT: lgf %r1, 0(%r1,%r7)53 54## TP offset for c is at 0x100226055# LE-NEXT: lgrl %r1, 0x100226056# LE-NEXT: lgf %r1, 0(%r1,%r7)57 58## Data element: TP offset for a is at 0x100225059# LE-DATA: 00000000 0100225060 61## TP offsets in GOT:62# a: -863# b: -464# c: 065# LE-GOT: 1002238 00000000 00000000 00000000 0000000066# LE-GOT: 1002248 00000000 00000000 ffffffff fffffff867# LE-GOT: 1002258 ffffffff fffffffc 00000000 0000000068 69# PIE-REL: Relocation section '.rela.dyn' at offset {{.*}} contains 1 entries:70# PIE-REL: 00000000000033d0 000000000000000c R_390_RELATIVE 23b871 72## TP offset for a is at 0x23b873# PIE: lgrl %r1, 0x23b874# PIE-NEXT: lgf %r1, 0(%r1,%r7)75 76## TP offset for b is at 0x23c077# PIE-NEXT: lgrl %r1, 0x23c078# PIE-NEXT: lgf %r1, 0(%r1,%r7)79 80## TP offset for c is at 0x23c881# PIE-NEXT: lgrl %r1, 0x23c882# PIE-NEXT: lgf %r1, 0(%r1,%r7)83 84## Data element: TP offset for a is at 0x23b8 (relocated via R_390_RELATIVE above)85# PIE-DATA: 33d0 00000000 0000000086 87## TP offsets in GOT:88# a: -889# b: -490# c: 091# PIE-GOT: 23a0 00000000 000022d0 00000000 0000000092# PIE-GOT: 23b0 00000000 00000000 ffffffff fffffff893# PIE-GOT: 23c0 ffffffff fffffffc 00000000 0000000094 95ear %r7,%a096sllg %r7,%r1,3297ear %r7,%a198 99lgrl %r1, a@indntpoff100lgf %r1,0(%r1,%r7)101 102lgrl %r1, b@indntpoff103lgf %r1,0(%r1,%r7)104 105lgrl %r1, c@indntpoff106lgf %r1,0(%r1,%r7)107 108 .data109 .reloc .,R_390_TLS_IE64,a110 .space 8111 112 .section .tbss113 .globl a114 .globl b115 .globl c116 .zero 8117a:118 .zero 4119b:120 .zero 4121c:122