// 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 general dynamic model and integrated assembly. .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-gd-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@tlsgd@ha addi 3, 3, a@got@tlsgd@l li 4, 0 bl __tls_get_addr(a@tlsgd) nop stw 4, -4(1) lwz 4, 0(3) extsw 3, 4 blr .long 0 .quad 0 .Ltmp0: .size main, .Ltmp0-.L.main .type a,@object # @a .section .tbss,"awT",@nobits .globl a .align 2 a: .long 0 # 0x0 .size a, 4 // Verify generation of R_PPC64_GOT_TLSGD16_HA, R_PPC64_GOT_TLSGD16_LO, // and R_PPC64_TLSGD 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_TLSGD16_HA a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSGD16_LO a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLSGD a // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_REL24 __tls_get_addr // CHECK: } // CHECK: ]