brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 38c081f Raw
249 lines · plain
1# REQUIRES: ppc2 3# RUN: split-file %s %t4 5# RUN: llvm-mc -filetype=obj -triple=powerpc64le %t/asm -o %t.o6# RUN: llvm-mc -filetype=obj -triple=powerpc64le %t/defs -o %t-defs.o7# RUN: ld.lld --shared %t-defs.o --soname=t-defs -o %t-defs.so8# RUN: ld.lld -T %t/lds %t.o %t-defs.so -o %t-ie9# RUN: ld.lld -T %t/lds %t.o %t-defs.o -o %t-le10 11# RUN: llvm-readelf -r %t-ie | FileCheck %s --check-prefix=IE-RELOC12# RUN: llvm-readelf -s %t-ie | FileCheck %s --check-prefix=IE-SYM13# RUN: llvm-readelf -x .got %t-ie | FileCheck %s --check-prefix=IE-GOT14# RUN: llvm-objdump -d --no-show-raw-insn %t-ie | FileCheck %s --check-prefix=IE15 16# RUN: llvm-readelf -r %t-le | FileCheck %s --check-prefix=LE-RELOC17# RUN: llvm-readelf -s %t-le | FileCheck %s --check-prefix=LE-SYM18# RUN: llvm-readelf -x .got %t-le 2>&1 | FileCheck %s --check-prefix=LE-GOT19# RUN: llvm-objdump -d --no-show-raw-insn %t-le | FileCheck %s --check-prefix=LE20 21## This test checks the Initial Exec PC Relative TLS implementation.22## The IE version checks that the relocations are generated correctly.23## The LE version checks that the Initial Exec to Local Exec relaxation is24## done correctly.25 26#--- lds27SECTIONS {28  .text_addr 0x1001000 : { *(.text_addr) }29  .text_val 0x1002000 : { *(.text_val) }30  .text_twoval 0x1003000 : { *(.text_twoval) }31  .text_incrval 0x1004000 : { *(.text_incrval) }32  .text_incrval_half 0x1005000 : { *(.text_incrval_half) }33  .text_incrval_word 0x1006000 : { *(.text_incrval_word) }34  .text_incrval_float 0x1007000 : { *(.text_incrval_float) }35  .text_incrval_double 0x1008000 : { *(.text_incrval_double) }36  .text_incrval_dword 0x1009000 : { *(.text_incrval_dword) }37  .text_incrval_half_zero 0x1010000 : { *(.text_incrval_half_zero) }38}39 40#--- defs41.section .tbss,"awT",@nobits42.globl	x43x:44	.long	045.globl	y46y:47	.long	048 49#--- asm50# IE-RELOC: Relocation section '.rela.dyn' at offset 0x10090 contains 2 entries:51# IE-RELOC: 00000000010100f0  0000000100000049 R_PPC64_TPREL64        0000000000000000 x + 052# IE-RELOC-NEXT: 00000000010100f8  0000000200000049 R_PPC64_TPREL64        0000000000000000 y + 053 54# IE-SYM:   Symbol table '.dynsym' contains 3 entries:55# IE-SYM:   1: 0000000000000000     0 TLS     GLOBAL DEFAULT   UND x56# IE-SYM:   2: 0000000000000000     0 TLS     GLOBAL DEFAULT   UND y57 58# IE-GOT:      Hex dump of section '.got':59# IE-GOT-NEXT: 0x010100e8 e8800101 00000000 00000000 0000000060 61# LE-RELOC: There are no relocations in this file.62 63# LE-SYM: Symbol table '.symtab' contains 14 entries:64# LE-SYM: 0000000000000000     0 TLS     GLOBAL DEFAULT     [[#]] x65# LE-SYM: 0000000000000004     0 TLS     GLOBAL DEFAULT     [[#]] y66 67# LE-GOT: could not find section '.got'68 69# IE-LABEL: <IEAddr>:70# IE-NEXT:    pld 3, 61680(0), 171# IE-NEXT:    add 3, 3, 1372# IE-NEXT:    blr73# LE-LABEL: <IEAddr>:74# LE-NEXT:    paddi 3, 13, -28672, 075# LE-NEXT:    nop76# LE-NEXT:    blr77.section .text_addr, "ax", %progbits78IEAddr:79	pld 3, x@got@tprel@pcrel(0), 180	add 3, 3, x@tls@pcrel81	blr82 83# IE-LABEL: <IEAddrCopy>:84# IE-NEXT:    pld 3, 61664(0), 185# IE-NEXT:    add 4, 3, 1386# IE-NEXT:    blr87# LE-LABEL: <IEAddrCopy>:88# LE-NEXT:    paddi 3, 13, -28672, 089# LE-NEXT:    mr 4, 390# LE-NEXT:    blr91.section .text_addr, "ax", %progbits92IEAddrCopy:93	pld 3, x@got@tprel@pcrel(0), 194	add 4, 3, x@tls@pcrel95	blr96 97# IE-LABEL: <IEVal>:98# IE-NEXT:    pld 3, 57584(0), 199# IE-NEXT:    lwzx 3, 3, 13100# IE-NEXT:    blr101# LE-LABEL: <IEVal>:102# LE-NEXT:    paddi 3, 13, -28672, 0103# LE-NEXT:    lwz 3, 0(3)104# LE-NEXT:    blr105.section .text_val, "ax", %progbits106IEVal:107	pld 3, x@got@tprel@pcrel(0), 1108	lwzx 3, 3, x@tls@pcrel109	blr110 111# IE-LABEL: <IETwoVal>:112# IE-NEXT:    pld 3, 53488(0), 1113# IE-NEXT:    pld 4, 53488(0), 1114# IE-NEXT:    lwzx 3, 3, 13115# IE-NEXT:    lwzx 4, 4, 13116# IE-NEXT:    blr117# LE-LABEL: <IETwoVal>:118# LE-NEXT:    paddi 3, 13, -28672, 0119# LE-NEXT:    paddi 4, 13, -28668, 0120# LE-NEXT:    lwz 3, 0(3)121# LE-NEXT:    lwz 4, 0(4)122# LE-NEXT:    blr123.section .text_twoval, "ax", %progbits124IETwoVal:125	pld 3, x@got@tprel@pcrel(0), 1126	pld 4, y@got@tprel@pcrel(0), 1127	lwzx 3, 3, x@tls@pcrel128	lwzx 4, 4, y@tls@pcrel129	blr130 131# IE-LABEL: <IEIncrementVal>:132# IE-NEXT:    pld 4, 49400(0), 1133# IE-NEXT:    lwzx 3, 4, 13134# IE-NEXT:    stwx 3, 4, 13135# IE-NEXT:    blr136# LE-LABEL: <IEIncrementVal>:137# LE-NEXT:    paddi 4, 13, -28668, 0138# LE-NEXT:    lwz 3, 0(4)139# LE-NEXT:    stw 3, 0(4)140# LE-NEXT:    blr141.section .text_incrval, "ax", %progbits142IEIncrementVal:143	pld 4, y@got@tprel@pcrel(0), 1144	lwzx 3, 4, y@tls@pcrel145	stwx 3, 4, y@tls@pcrel146	blr147 148# IE-LABEL: <IEIncrementValHalf>:149# IE-NEXT:    pld 4, 45304(0), 1150# IE-NEXT:    lhax 3, 4, 13151# IE-NEXT:    sthx 3, 4, 13152# IE-NEXT:    blr153# LE-LABEL: <IEIncrementValHalf>:154# LE-NEXT:    paddi 4, 13, -28668, 0155# LE-NEXT:    lha 3, 0(4)156# LE-NEXT:    sth 3, 0(4)157# LE-NEXT:    blr158.section .text_incrval_half, "ax", %progbits159IEIncrementValHalf:160	pld 4, y@got@tprel@pcrel(0), 1161	lhax 3, 4, y@tls@pcrel162	sthx 3, 4, y@tls@pcrel163	blr164 165# IE-LABEL: <IEIncrementValWord>:166# IE-NEXT:    pld 4, 41208(0), 1167# IE-NEXT:    lwax 3, 4, 13168# IE-NEXT:    stwx 3, 4, 13169# IE-NEXT:    blr170# LE-LABEL: <IEIncrementValWord>:171# LE-NEXT:    paddi 4, 13, -28668, 0172# LE-NEXT:    lwa 3, 0(4)173# LE-NEXT:    stw 3, 0(4)174# LE-NEXT:    blr175.section .text_incrval_word, "ax", %progbits176IEIncrementValWord:177	pld 4, y@got@tprel@pcrel(0), 1178	lwax 3, 4, y@tls@pcrel179	stwx 3, 4, y@tls@pcrel180	blr181 182# IE-LABEL: <IEIncrementValFloat>:183# IE-NEXT:    pld 4, 37112(0), 1184# IE-NEXT:    lfsx 3, 4, 13185# IE-NEXT:    stfsx 3, 4, 13186# IE-NEXT:    blr187# LE-LABEL: <IEIncrementValFloat>:188# LE-NEXT:    paddi 4, 13, -28668, 0189# LE-NEXT:    lfs 3, 0(4)190# LE-NEXT:    stfs 3, 0(4)191# LE-NEXT:    blr192.section .text_incrval_float, "ax", %progbits193IEIncrementValFloat:194	pld 4, y@got@tprel@pcrel(0), 1195	lfsx 3, 4, y@tls@pcrel196	stfsx 3, 4, y@tls@pcrel197	blr198 199# IE-LABEL: <IEIncrementValDouble>:200# IE-NEXT:    pld 4, 33016(0), 1201# IE-NEXT:    lfdx 3, 4, 13202# IE-NEXT:    stfdx 3, 4, 13203# IE-NEXT:    blr204# LE-LABEL: <IEIncrementValDouble>:205# LE-NEXT:    paddi 4, 13, -28668, 0206# LE-NEXT:    lfd 3, 0(4)207# LE-NEXT:    stfd 3, 0(4)208# LE-NEXT:    blr209.section .text_incrval_double, "ax", %progbits210IEIncrementValDouble:211	pld 4, y@got@tprel@pcrel(0), 1212	lfdx 3, 4, y@tls@pcrel213	stfdx 3, 4, y@tls@pcrel214	blr215 216# IE-LABEL: <IEIncrementValDword>:217# IE-NEXT:    pld 4, 28920(0), 1218# IE-NEXT:    ldx 3, 4, 13219# IE-NEXT:    stdx 3, 4, 13220# IE-NEXT:    blr221# LE-LABEL: <IEIncrementValDword>:222# LE-NEXT:    paddi 4, 13, -28668, 0223# LE-NEXT:    ld 3, 0(4)224# LE-NEXT:    std 3, 0(4)225# LE-NEXT:    blr226.section .text_incrval_dword, "ax", %progbits227IEIncrementValDword:228	pld 4, y@got@tprel@pcrel(0), 1229	ldx 3, 4, y@tls@pcrel230	stdx 3, 4, y@tls@pcrel231	blr232 233# IE-LABEL: <IEIncrementValHalfZero>:234# IE-NEXT:    pld 4, 248(0), 1235# IE-NEXT:    lhzx 3, 4, 13236# IE-NEXT:    sthx 3, 4, 13237# IE-NEXT:    blr238# LE-LABEL: <IEIncrementValHalfZero>:239# LE-NEXT:    paddi 4, 13, -28668, 0240# LE-NEXT:    lhz 3, 0(4)241# LE-NEXT:    sth 3, 0(4)242# LE-NEXT:    blr243.section .text_incrval_half_zero, "ax", %progbits244IEIncrementValHalfZero:245	pld 4, y@got@tprel@pcrel(0), 1246	lhzx 3, 4, y@tls@pcrel247	sthx 3, 4, y@tls@pcrel248	blr249