1*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple=powerpc64-unknown-linux-gnu -filetype=obj %s | \ 2*9880d681SAndroid Build Coastguard Worker# RUN: llvm-readobj -r | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker .section .opd,"aw",@progbits 5*9880d681SAndroid Build Coastguard Workeraccess_int64: 6*9880d681SAndroid Build Coastguard Worker .quad .L.access_int64 7*9880d681SAndroid Build Coastguard Worker .quad .TOC.@tocbase 8*9880d681SAndroid Build Coastguard Worker .quad 0 9*9880d681SAndroid Build Coastguard Worker .text 10*9880d681SAndroid Build Coastguard Worker.L.access_int64: 11*9880d681SAndroid Build Coastguard Worker ld 4, .LC1@toc(2) 12*9880d681SAndroid Build Coastguard Worker bl sin 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker .section .toc,"aw",@progbits 15*9880d681SAndroid Build Coastguard Worker.LC1: 16*9880d681SAndroid Build Coastguard Worker .tc number64[TC],number64 17*9880d681SAndroid Build Coastguard Worker .data 18*9880d681SAndroid Build Coastguard Worker .globl number64 19*9880d681SAndroid Build Coastguard Workernumber64: 20*9880d681SAndroid Build Coastguard Worker .quad 10 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker# CHECK: Relocations [ 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker# The relocations in .rela.text are the 'number64' load using a 25*9880d681SAndroid Build Coastguard Worker# R_PPC64_TOC16_DS against the .toc and the 'sin' external function 26*9880d681SAndroid Build Coastguard Worker# address using a R_PPC64_REL24 27*9880d681SAndroid Build Coastguard Worker# CHECK: Section ({{[0-9]+}}) .rela.text { 28*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC16_DS .toc 29*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_REL24 sin 30*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: } 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker# The .opd entry for the 'access_int64' function creates 2 relocations: 33*9880d681SAndroid Build Coastguard Worker# 1. A R_PPC64_ADDR64 against the .text segment plus addend (the function 34*9880d681SAndroid Build Coastguard Worker# address itself); 35*9880d681SAndroid Build Coastguard Worker# 2. And a R_PPC64_TOC against no symbol (the linker will replace for the 36*9880d681SAndroid Build Coastguard Worker# module's TOC base). 37*9880d681SAndroid Build Coastguard Worker# CHECK: Section ({{[0-9]+}}) .rela.opd { 38*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_ADDR64 .text 0x0 39*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_TOC - 0x0 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker# Finally the TOC creates the relocation for the 'number64'. 42*9880d681SAndroid Build Coastguard Worker# CHECK: Section ({{[0-9]+}}) .rela.toc { 43*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 0x{{[0-9,A-F]+}} R_PPC64_ADDR64 number64 0x0 44*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: } 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: ] 47