// RUN: llvm-mc -triple=powerpc64-pc-linux -filetype=obj %s -o - | \ // RUN: llvm-readobj -r | FileCheck %s // Test correct relocation generation for thread-local storage using // the local dynamic model. .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-ld-obj.ll" .text .globl main .align 2 .type main,@function .section .opd,"aw",@progbits main: # @main .align 3 .quad .L.main .quad .TOC.@tocbase .quad 0 .text .L.main: # BB#0: # %entry addis 3, 2, a@got@tlsld@ha addi 3, 3, a@got@tlsld@l li 4, 0 bl __tls_get_addr(a@tlsld) nop stw 4, -4(1) addis 3, 3, a@dtprel@ha addi 3, 3, a@dtprel@l lwz 4, 0(3) extsw 3, 4 blr .long 0 .quad 0 .Ltmp0: .size main, .Ltmp0-.L.main .hidden a # @a .type a,@object .section .tbss,"awT",@nobits .globl a .align 2 a: .long 0 # 0x0 .size a, 4 // Verify generation of R_PPC64_GOT_TLSLD16_HA, R_PPC64_GOT_TLSLD16_LO, // R_PPC64_TLSLD, R_PPC64_DTPREL16_HA, and R_PPC64_DTPREL16_LO for // accessing external variable a, and R_PPC64_REL24 for the call to // __tls_get_addr. // // CHECK: Relocations [ // CHECK: Section {{.*}} .rela.text { // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_HA a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_LO a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLSLD a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_REL24 __tls_get_addr // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_HA a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_LO a // CHECK: } // CHECK: ]