| // 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 initial-exec model and integrated assembly. |
| |
| .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-ie-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 |
| li 3, 0 |
| addis 4, 2, a@got@tprel@ha |
| ld 4, a@got@tprel@l(4) |
| add 4, 4, a@tls |
| stw 3, -4(1) |
| lwz 3, 0(4) |
| extsw 3, 3 |
| blr |
| .long 0 |
| .quad 0 |
| .Ltmp0: |
| .size main, .Ltmp0-.L.main |
| |
| |
| // Verify generation of R_PPC64_GOT_TPREL16_DS and R_PPC64_TLS for |
| // accessing external variable a. |
| // |
| // CHECK: Relocations [ |
| // CHECK: Section {{.*}} .rela.text { |
| // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_HA a |
| // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_LO_DS a |
| // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLS a |
| // CHECK: } |
| // CHECK: ] |