182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// RUN: llvm-mc -triple=powerpc64-pc-linux -filetype=obj %s -o - | \ 282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// RUN: llvm-readobj -r | FileCheck %s 382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// Test correct relocation generation for thread-local storage using 582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// the general dynamic model and integrated assembly. 682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 782c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 882c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .file "/home/espindola/llvm/llvm/test/CodeGen/PowerPC/tls-gd-obj.ll" 982c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .text 1082c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .globl main 1182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .align 2 1282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .type main,@function 1382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .section .opd,"aw",@progbits 1482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindolamain: # @main 1582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .align 3 1682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .quad .L.main 1782c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .quad .TOC.@tocbase 1882c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .quad 0 1982c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .text 2082c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola.L.main: 2182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola# BB#0: # %entry 2282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola addis 3, 2, a@got@tlsgd@ha 2382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola addi 3, 3, a@got@tlsgd@l 2482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola li 4, 0 2582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola bl __tls_get_addr(a@tlsgd) 2682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola nop 2782c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola stw 4, -4(1) 2882c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola lwz 4, 0(3) 2982c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola extsw 3, 4 3082c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola blr 3182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .long 0 3282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .quad 0 3382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola.Ltmp0: 3482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .size main, .Ltmp0-.L.main 3582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 3682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .type a,@object # @a 3782c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .section .tbss,"awT",@nobits 3882c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .globl a 3982c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .align 2 4082c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindolaa: 4182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .long 0 # 0x0 4282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola .size a, 4 4382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 4482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola 4582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// Verify generation of R_PPC64_GOT_TLSGD16_HA, R_PPC64_GOT_TLSGD16_LO, 4682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// and R_PPC64_TLSGD for accessing external variable a, and R_PPC64_REL24 4782c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// for the call to __tls_get_addr. 4882c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// 4982c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: Relocations [ 5082c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: Section (2) .rela.text { 5182c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSGD16_HA a 5282c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_GOT_TLSGD16_LO a 5382c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_TLSGD a 5482c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: 0x{{[0-9,A-F]+}} R_PPC64_REL24 __tls_get_addr 5582c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: } 5682c2703167bcc4132ff6eeff128268d8d13029a1Rafael Espindola// CHECK: ] 57