brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · a3a0630 Raw
104 lines · plain
1# REQUIRES: ppc2# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o3# RUN: echo '.tbss; .globl b, c; b: .zero 4; c:' | llvm-mc -filetype=obj -triple=powerpc64le - -o %t1.o4# RUN: ld.lld -shared -soname=t1.so %t1.o -o %t1.so5 6# RUN: ld.lld -shared %t.o %t1.o -o %t.so7# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=GD-REL %s8# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=GD %s9 10# RUN: ld.lld %t.o %t1.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: ld.lld %t.o %t1.so -o %t15# RUN: llvm-readobj -r %t | FileCheck --check-prefix=IE-REL %s16# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=IE %s17 18# GD-REL:      .rela.dyn {19# GD-REL-NEXT:   0x20560 R_PPC64_DTPMOD64 a 0x020# GD-REL-NEXT:   0x20568 R_PPC64_DTPREL64 a 0x021# GD-REL-NEXT:   0x20570 R_PPC64_DTPMOD64 b 0x022# GD-REL-NEXT:   0x20578 R_PPC64_DTPREL64 b 0x023# GD-REL-NEXT:   0x20580 R_PPC64_DTPMOD64 c 0x024# GD-REL-NEXT:   0x20588 R_PPC64_DTPREL64 c 0x025# GD-REL-NEXT: }26 27## Start with .got[1] as .got[0] is the .TOC.28## &DTPMOD(a) - .TOC. = &.got[1] - (.got+0x8000) = -3276029# GD:      addis 3, 2, 030# GD-NEXT: addi 3, 3, -3276031# GD-NEXT: bl 0x1040032# GD-NEXT: ld 2, 24(1)33 34## &DTPMOD(b) - .TOC. = &.got[3] - (.got+0x8000) = -3274435# GD-NEXT: addis 3, 2, 036# GD-NEXT: addi 3, 3, -3274437# GD-NEXT: bl 0x1040038# GD-NEXT: ld 2, 24(1)39 40## &DTPMOD(b) - .TOC. = &.got[5] - (.got+0x8000) = -3272841# GD-NEXT: li 3, -3272842# GD-NEXT: bl 0x1040043# GD-NEXT: ld 2, 24(1)44 45# NOREL: no relocations46 47## a@tprel = st_value(a)-0x7000 = -2866448# LE:      nop49# LE-NEXT: addis 3, 13, 050# LE-NEXT: nop51# LE-NEXT: addi 3, 3, -2866452## b@tprel = st_value(b)-0x7000 = -2866053# LE:      nop54# LE-NEXT: addis 3, 13, 055# LE-NEXT: nop56# LE-NEXT: addi 3, 3, -2866057## c@tprel = st_value(c)-0x7000 = -2865658# LE-NEXT: addis 3, 13, 059# LE-NEXT: nop60# LE-NEXT: addi 3, 3, -2865661 62# IE-REL:      .rela.dyn {63# IE-REL-NEXT:   0x10020430 R_PPC64_TPREL64 b 0x064# IE-REL-NEXT:   0x10020438 R_PPC64_TPREL64 c 0x065# IE-REL-NEXT: }66 67## a is relaxed to use LE.68## a@tprel = st_value(a)-0x7000 = -2866469# IE:      nop70# IE-NEXT: addis 3, 13, 071# IE-NEXT: nop72# IE-NEXT: addi 3, 3, -2866473## &DTPMOD(b) - .TOC. = &.got[1] - (.got+0x8000) = -3276074# IE-NEXT: addis 3, 2, 075# IE-NEXT: ld 3, -32760(3)76# IE-NEXT: nop77# IE-NEXT: add 3, 3, 1378## &DTPMOD(c) - .TOC. = &.got[2] - (.got+0x8000) = -3275279## r0 is wrong. R_PPC64_GOT_TLS16 cannot be relaxed to IE but the behavior is80## consistent with ld.bfd81# IE-NEXT: ld 3, -32752(0)82# IE-NEXT: nop83# IE-NEXT: add 3, 3, 1384 85addis 3, 2, a@got@tlsgd@ha86addi 3, 3, a@got@tlsgd@l87bl __tls_get_addr(a@tlsgd)88nop89 90addis 3, 2, b@got@tlsgd@ha91addi 3, 3, b@got@tlsgd@l92bl __tls_get_addr(b@tlsgd)93nop94 95addi 3, 0, c@got@tlsgd96bl __tls_get_addr(c@tlsgd)97nop98 99.section .tbss100.globl a101.zero 8102a:103.zero 4104