xref: /aosp_15_r20/external/llvm/test/MC/PowerPC/ppc64-relocs-01.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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