brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · dfff837 Raw
99 lines · plain
1# REQUIRES: ppc2# RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o3# RUN: echo '.tbss; .globl b, c; b: .zero 4; c:' | llvm-mc -filetype=obj -triple=powerpc - -o %t1.o4# RUN: ld.lld -shared -soname=t1.so %t1.o -o %t1.so5# RUN: echo '.globl __tls_get_addr; __tls_get_addr:' | llvm-mc -filetype=obj -triple=powerpc - -o %tga.o6 7# RUN: ld.lld -shared %t.o %t1.o -o %t.so8# RUN: llvm-readobj -d %t.so | FileCheck --check-prefix=GD-DYN %s9# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=GD-REL %s10# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=GD %s11 12# RUN: ld.lld %t.o %t1.o %tga.o -o %t13# RUN: llvm-readelf -r %t | FileCheck --check-prefix=NOREL %s14# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=LE %s15 16# RUN: ld.lld %t.o %t1.so -o %t17# RUN: llvm-readobj -r %t | FileCheck --check-prefix=IE-REL %s18# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=IE %s19 20## DT_PPC_GOT represents the address of _GLOBAL_OFFSET_TABLE_.21# GD-DYN: PPC_GOT 0x2035822 23# GD-REL:      .rela.dyn {24# GD-REL-NEXT:   0x20364 R_PPC_DTPMOD32 a 0x025# GD-REL-NEXT:   0x20368 R_PPC_DTPREL32 a 0x026# GD-REL-NEXT:   0x2036C R_PPC_DTPMOD32 b 0x027# GD-REL-NEXT:   0x20370 R_PPC_DTPREL32 b 0x028# GD-REL-NEXT:   0x20374 R_PPC_DTPMOD32 c 0x029# GD-REL-NEXT:   0x20378 R_PPC_DTPREL32 c 0x030# GD-REL-NEXT: }31 32## &DTPMOD(a) - _GLOBAL_OFFSET_TABLE_ = 1233# GD:      addi 3, 31, 1234# GD-NEXT: bl 0x1028c35# GD-NEXT: lwz 3, 0(3)36 37## &DTPMOD(b) - _GLOBAL_OFFSET_TABLE_ = 2038# GD-NEXT: addi 3, 31, 2039# GD-NEXT: bl 0x1028c40# GD-NEXT: lwz 3, 0(3)41 42## &DTPMOD(c) - _GLOBAL_OFFSET_TABLE_ = 2843# GD-NEXT: addi 3, 9, 2844# GD-NEXT: bl 0x1028c45# GD-NEXT: lwz 3, 0(3)46 47# NOREL: no relocations48 49## a@tprel = 8-0x7000 = -2866450# LE:      addis 3, 2, 051# LE-NEXT: addi 3, 3, -2866452# LE-NEXT: lwz 3, 0(3)53## b@tprel = 12-0x7000 = -2866054# LE-NEXT: addis 3, 2, 055# LE-NEXT: addi 3, 3, -2866056# LE-NEXT: lwz 3, 0(3)57## c@tprel = 16-0x7000 = -2865658# LE-NEXT: addis 3, 2, 059# LE-NEXT: addi 3, 3, -2865660# LE-NEXT: lwz 3, 0(3)61 62# IE-REL:      .rela.dyn {63# IE-REL-NEXT:   0x10020280 R_PPC_TPREL32 b 0x064# IE-REL-NEXT:   0x10020284 R_PPC_TPREL32 c 0x065# IE-REL-NEXT: }66 67## a is relaxed to use LE.68## a@tprel = st_value(a)-0x8000 = -2866469# IE:      addis 3, 2, 070# IE-NEXT: addi 3, 3, -2866471# IE-NEXT: lwz 3, 0(3)72## &.got[3] - _GLOBAL_OFFSET_TABLE_ = 1273# IE-NEXT: lwz 3, 12(31)74# IE-NEXT: add 3, 3, 275# IE-NEXT: lwz 3, 0(3)76## &.got[4] - _GLOBAL_OFFSET_TABLE_ = 1677# IE-NEXT: lwz 3, 16(9)78# IE-NEXT: add 3, 3, 279# IE-NEXT: lwz 3, 0(3)80 81addi 3, 31, a@got@tlsgd82bl __tls_get_addr(a@tlsgd)83lwz 3, 0(3)84 85addi 3, 31, b@got@tlsgd86bl __tls_get_addr(b@tlsgd)87lwz 3, 0(3)88 89## -fpic may use a different register (e.g. r9).90addi 3, 9, c@got@tlsgd91bl __tls_get_addr(c@tlsgd)92lwz 3, 0(3)93 94.section .tbss95.globl a96.zero 897a:98.zero 499