1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=powerpc64-pc-linux -filetype=obj %s -o - | \ 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-readobj -r | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker// Test correct relocation generation for thread-local storage 5*9880d681SAndroid Build Coastguard Worker// using the initial-exec model and integrated assembly. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-ie-obj.ll" 8*9880d681SAndroid Build Coastguard Worker .text 9*9880d681SAndroid Build Coastguard Worker .globl main 10*9880d681SAndroid Build Coastguard Worker .align 2 11*9880d681SAndroid Build Coastguard Worker .type main,@function 12*9880d681SAndroid Build Coastguard Worker .section .opd,"aw",@progbits 13*9880d681SAndroid Build Coastguard Workermain: # @main 14*9880d681SAndroid Build Coastguard Worker .align 3 15*9880d681SAndroid Build Coastguard Worker .quad .L.main 16*9880d681SAndroid Build Coastguard Worker .quad .TOC.@tocbase 17*9880d681SAndroid Build Coastguard Worker .quad 0 18*9880d681SAndroid Build Coastguard Worker .text 19*9880d681SAndroid Build Coastguard Worker.L.main: 20*9880d681SAndroid Build Coastguard Worker# BB#0: # %entry 21*9880d681SAndroid Build Coastguard Worker li 3, 0 22*9880d681SAndroid Build Coastguard Worker addis 4, 2, a@got@tprel@ha 23*9880d681SAndroid Build Coastguard Worker ld 4, a@got@tprel@l(4) 24*9880d681SAndroid Build Coastguard Worker add 4, 4, a@tls 25*9880d681SAndroid Build Coastguard Worker stw 3, -4(1) 26*9880d681SAndroid Build Coastguard Worker lwz 3, 0(4) 27*9880d681SAndroid Build Coastguard Worker extsw 3, 3 28*9880d681SAndroid Build Coastguard Worker blr 29*9880d681SAndroid Build Coastguard Worker .long 0 30*9880d681SAndroid Build Coastguard Worker .quad 0 31*9880d681SAndroid Build Coastguard Worker.Ltmp0: 32*9880d681SAndroid Build Coastguard Worker .size main, .Ltmp0-.L.main 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker// Verify generation of R_PPC64_GOT_TPREL16_DS and R_PPC64_TLS for 36*9880d681SAndroid Build Coastguard Worker// accessing external variable a. 37*9880d681SAndroid Build Coastguard Worker// 38*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [ 39*9880d681SAndroid Build Coastguard Worker// CHECK: Section {{.*}} .rela.text { 40*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_HA a 41*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TPREL16_LO_DS a 42*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLS a 43*9880d681SAndroid Build Coastguard Worker// CHECK: } 44*9880d681SAndroid Build Coastguard Worker// CHECK: ] 45