Rafael Espindola | 3a8c073 | 2013-10-28 22:11:47 +0000 | [diff] [blame] | 1 | // RUN: llvm-mc -triple=powerpc64-pc-linux -filetype=obj %s -o - | \ |
| 2 | // RUN: llvm-readobj -r | FileCheck %s |
| 3 | |
| 4 | // Test correct relocation generation for thread-local storage using |
| 5 | // the local dynamic model. |
| 6 | |
| 7 | .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-ld-obj.ll" |
| 8 | .text |
| 9 | .globl main |
| 10 | .align 2 |
| 11 | .type main,@function |
| 12 | .section .opd,"aw",@progbits |
| 13 | main: # @main |
| 14 | .align 3 |
| 15 | .quad .L.main |
| 16 | .quad .TOC.@tocbase |
| 17 | .quad 0 |
| 18 | .text |
| 19 | .L.main: |
| 20 | # BB#0: # %entry |
| 21 | addis 3, 2, a@got@tlsld@ha |
| 22 | addi 3, 3, a@got@tlsld@l |
| 23 | li 4, 0 |
| 24 | bl __tls_get_addr(a@tlsld) |
| 25 | nop |
| 26 | stw 4, -4(1) |
| 27 | addis 3, 3, a@dtprel@ha |
| 28 | addi 3, 3, a@dtprel@l |
| 29 | lwz 4, 0(3) |
| 30 | extsw 3, 4 |
| 31 | blr |
| 32 | .long 0 |
| 33 | .quad 0 |
| 34 | .Ltmp0: |
| 35 | .size main, .Ltmp0-.L.main |
| 36 | |
| 37 | .hidden a # @a |
| 38 | .type a,@object |
| 39 | .section .tbss,"awT",@nobits |
| 40 | .globl a |
| 41 | .align 2 |
| 42 | a: |
| 43 | .long 0 # 0x0 |
| 44 | .size a, 4 |
| 45 | |
| 46 | |
| 47 | // Verify generation of R_PPC64_GOT_TLSLD16_HA, R_PPC64_GOT_TLSLD16_LO, |
| 48 | // R_PPC64_TLSLD, R_PPC64_DTPREL16_HA, and R_PPC64_DTPREL16_LO for |
| 49 | // accessing external variable a, and R_PPC64_REL24 for the call to |
| 50 | // __tls_get_addr. |
| 51 | // |
| 52 | // CHECK: Relocations [ |
Rafael Espindola | 10f3de6 | 2015-04-15 15:59:37 +0000 | [diff] [blame] | 53 | // CHECK: Section {{.*}} .rela.text { |
Rafael Espindola | 3a8c073 | 2013-10-28 22:11:47 +0000 | [diff] [blame] | 54 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_HA a |
| 55 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSLD16_LO a |
| 56 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLSLD a |
| 57 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_REL24 __tls_get_addr |
| 58 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_HA a |
| 59 | // CHECK: 0x{{[0-9,A-F]+}} R_PPC64_DTPREL16_LO a |
| 60 | // CHECK: } |
| 61 | // CHECK: ] |