brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 9f2cea6 Raw
178 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 dtprel symbol modifiers for local-dynamic tls.8// Tests a 16 bit offset 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_offset15        .p2align	416        .type	short_offset,@function17short_offset:18.Lfunc_gep0:19        addis 2, 12, .TOC.-.Lfunc_gep0@ha20        addi 2, 2, .TOC.-.Lfunc_gep0@l21.Lfunc_lep0:22.localentry	short_offset, .Lfunc_lep0-.Lfunc_gep023        mflr 024        std 0, 16(1)25        stdu 1, -32(1)26        addis 3, 2, i@got@tlsld@ha27        addi 3, 3, i@got@tlsld@l28        bl __tls_get_addr(i@tlsld)29        nop30        lwa 4, i@dtprel(3)31        addi 5, 3, i@dtprel32        lwa 3, 0(5)33        add 3, 4, 334        addi 1, 1, 3235        ld 0, 16(1)36        mtlr 037        blr38 39        .globl	medium_offset40        .p2align	441        .type	medium_offset,@function42medium_offset:43.Lfunc_gep1:44        addis 2, 12, .TOC.-.Lfunc_gep1@ha45        addi 2, 2, .TOC.-.Lfunc_gep1@l46.Lfunc_lep1:47        .localentry	medium_offset, .Lfunc_lep1-.Lfunc_gep148        mflr 049        std 0, 16(1)50        stdu 1, -32(1)51        addis 3, 2, i@got@tlsld@ha52        addi 3, 3, i@got@tlsld@l53        bl __tls_get_addr(i@tlsld)54        nop55        addis 3, 3, i@dtprel@ha56        lwa 3, i@dtprel@l(3)57        addi 1, 1, 3258        ld 0, 16(1)59        mtlr 060        blr61 62        .globl  medium_not_adjusted63        .p2align        464        .type   medium_not_adjusted,@function65medium_not_adjusted:66.Lfunc_gep2:67        addis 2, 12, .TOC.-.Lfunc_gep2@ha68        addi 2, 2, .TOC.-.Lfunc_gep2@l69.Lfunc_lep2:70        .localentry     medium_not_adjusted, .Lfunc_lep2-.Lfunc_gep271        mflr 072        std 0, 16(1)73        stdu 1, -32(1)74        addis 3, 2, i@got@tlsld@ha75        addi 3, 3, i@got@tlsld@l76        bl __tls_get_addr(i@tlsld)77        nop78        lis 4, i@dtprel@h79        ori 4, 4, i@dtprel@l80        add 3, 3, 481        addi 1, 1, 3282        ld 0, 16(1)83        mtlr 084        blr85 86        .globl	large_offset87        .p2align	488        .type	large_offset,@function89large_offset:90.Lfunc_gep3:91        addis 2, 12, .TOC.-.Lfunc_gep3@ha92        addi 2, 2, .TOC.-.Lfunc_gep3@l93.Lfunc_lep3:94        .localentry	large_offset, .Lfunc_lep3-.Lfunc_gep395        mflr 096        std 0, 16(1)97        stdu 1, -32(1)98        addis 3, 2, i@got@tlsld@ha99        addi 3, 3, i@got@tlsld@l100        bl __tls_get_addr(i@tlsld)101        nop102        lis 4, i@dtprel@highesta103        ori 4, 4, i@dtprel@highera104        sldi 4, 4, 32105        addis 4, 4, i@dtprel@higha106        addi  4, 4, i@dtprel@l107        lwax 3, 4, 3108        addi 1, 1, 32109        ld 0, 16(1)110        mtlr 0111        blr112 113         .globl not_adjusted114         .p2align       4115         .type not_adjusted,@function116not_adjusted:117.Lfunc_gep4:118        addis 2, 12, .TOC.-.Lfunc_gep4@ha119        addi 2, 2, .TOC.-.Lfunc_gep4@l120.Lfunc_lep4:121        .localentry	not_adjusted, .Lfunc_lep4-.Lfunc_gep4122        mflr 0123        std 0, 16(1)124        stdu 1, -32(1)125        addis 3, 2, i@got@tlsld@ha126        addi 3, 3, i@got@tlsld@l127        bl __tls_get_addr(i@tlsld)128        nop129        lis 4, i@dtprel@highest130        ori 4, 4, i@dtprel@higher131        sldi 4, 4, 32132        oris 4, 4, i@dtprel@high133        ori  4, 4, i@dtprel@l134        lwax 3, 4, 3135        addi 1, 1, 32136        ld 0, 16(1)137        mtlr 0138        blr139 140        .type	i,@object141        .section	.tdata,"awT",@progbits142        .p2align	2143i:144        .long	55145        .size	i, 4146 147        .type j,@object148        .data149        .p2align        3150j:151        .quad i@dtprel152        .size j, 8153 154# CHECK: Relocations [155# CHECK:   Section {{.*}} .rela.text {156# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_GOT_TLSLD16_HA i157# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_GOT_TLSLD16_LO i158# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_TLSLD i159# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_REL24 __tls_get_addr160# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_DS i161# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16 i162# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HA i163# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_LO_DS i164# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HI i165# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGHESTA i166# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGHERA i167# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGHA i168# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_LO i169# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGHEST i170# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGHER i171# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_HIGH i172# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL16_LO i173# CHECK: }174# CHECK: Section {{.*}} .rela.data {175# CHECK: 0x{{[0-9A-F]+}}  R_PPC64_DTPREL64 i176# CHECK:   }177# CHECK: ]178