105 lines · plain
1// RUN: llvm-mc -triple=powerpc64le-pc-linux -filetype=obj %s -o - | \2// RUN: llvm-readobj -r - | FileCheck %s3 4// RUN: llvm-mc -triple=powerpc64-pc-linux -filetype=obj %s -o - | \5// RUN: llvm-readobj -r - | FileCheck %s6 7// Verify we can handle all the tprel symbol modifiers for local exec tls.8// Tests 16 bit offsets on both DS-form and D-form instructions, 32 bit9// adjusted and non-adjusted offsets and 64 bit adjusted and non-adjusted10// offsets.11 .text12 .abiversion 213 14 .globl short_offset_ds15 .p2align 416 .type short_offset_ds,@function17short_offset_ds:18 lwa 3, i@tprel(13)19 blr20 21 .globl short_offset22 .p2align 423 .type short_offset,@function24short_offset:25 addi 3, 13, i@tprel26 blr27 28 .globl medium_offset29 .p2align 430 .type medium_offset,@function31medium_offset:32 addis 3, 13, i@tprel@ha33 lwa 3, i@tprel@l(3)34 blr35 36 .globl medium_not_adjusted37 .p2align 438 .type medium_not_adjusted,@function39medium_not_adjusted:40 lis 3, i@tprel@h41 ori 3, 3, i@tprel@l42 lwax 3, 3, 1343 blr44 45 .globl large_offset46 .p2align 447 .type large_offset,@function48large_offset:49 lis 3, i@tprel@highesta50 ori 3, 3, i@tprel@highera51 sldi 3, 3, 3252 oris 3, 3, i@tprel@higha53 addi 3, 3, i@tprel@l54 lwax 3, 3, 1355 blr56 57 .globl not_adjusted58 .p2align 459 .type not_adjusted,@function60not_adjusted:61 lis 3, i@tprel@highest62 ori 3, 3, i@tprel@higher63 sldi 3, 3, 3264 oris 3, 3, i@tprel@high65 ori 3, 3, i@tprel@l66 lwax 3, 3, 1367 blr68 69 .type i,@object70 .section .tdata,"awT",@progbits71 .p2align 272i:73 .long 5574 .size i, 475 76 .type j,@object77 .data78 .p2align 379j:80 .quad i@tprel81 .size j, 882 83 84# CHECK: Relocations [85# CHECK: Section {{.*}} .rela.text {86# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_DS i87# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16 i88# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HA i89# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_LO_DS i90# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HI i91# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_LO i92# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGHESTA i93# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGHERA i94# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGHA i95# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_LO i96# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGHEST i97# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGHER i98# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_HIGH i99# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL16_LO i100# CHECK: }101# CHECK: Section (6) .rela.data {102# CHECK: 0x{{[0-9A-F]+}} R_PPC64_TPREL64 i103# CHECK: }104# CHECK: ]105