3 # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t
4 # RUN: ld.lld %t -o %t2
5 # RUN: llvm-objdump -D %t2 | FileCheck %s --check-prefix=DATALE
6 # RUN: llvm-objdump -D %t2 | FileCheck %s
8 # RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t
9 # RUN: ld.lld %t -o %t2
10 # RUN: llvm-objdump -D %t2 | FileCheck %s --check-prefix=DATABE
11 # RUN: llvm-objdump -D %t2 | FileCheck %s
21 .section .rodata,"a",@progbits
24 .long .LBB0_2-.LJTI0_0
26 .section .toc,"aw",@progbits
30 .tc .LJTI0_0[TC],.LJTI0_0
32 .section .R_PPC64_TOC16_LO_DS,"ax",@progbits
33 .globl .FR_PPC64_TOC16_LO_DS
34 .FR_PPC64_TOC16_LO_DS:
37 # CHECK: Disassembly of section .R_PPC64_TOC16_LO_DS:
38 # CHECK: .FR_PPC64_TOC16_LO_DS:
39 # CHECK: 1001000c: {{.*}} ld 1, -32768(2)
41 .section .R_PPC64_TOC16_LO,"ax",@progbits
42 .globl .FR_PPC64_TOC16_LO
46 # CHECK: Disassembly of section .R_PPC64_TOC16_LO:
47 # CHECK: .FR_PPC64_TOC16_LO:
48 # CHECK: 10010010: {{.*}} addi 1, 2, -32768
50 .section .R_PPC64_TOC16_HI,"ax",@progbits
51 .globl .FR_PPC64_TOC16_HI
55 # CHECK: Disassembly of section .R_PPC64_TOC16_HI:
56 # CHECK: .FR_PPC64_TOC16_HI:
57 # CHECK: 10010014: {{.*}} addis 1, 2, -1
59 .section .R_PPC64_TOC16_HA,"ax",@progbits
60 .globl .FR_PPC64_TOC16_HA
62 addis 1, 2, .L1@toc@ha
64 # CHECK: Disassembly of section .R_PPC64_TOC16_HA:
65 # CHECK: .FR_PPC64_TOC16_HA:
66 # CHECK: 10010018: {{.*}} addis 1, 2, 0
68 .section .R_PPC64_REL24,"ax",@progbits
69 .globl .FR_PPC64_REL24
72 .section .R_PPC64_REL24_2,"ax",@progbits
75 # CHECK: Disassembly of section .R_PPC64_REL24:
76 # CHECK: .FR_PPC64_REL24:
77 # CHECK: 1001001c: {{.*}} b .+4
79 .section .R_PPC64_ADDR16_LO,"ax",@progbits
80 .globl .FR_PPC64_ADDR16_LO
84 # CHECK: Disassembly of section .R_PPC64_ADDR16_LO:
85 # CHECK: .FR_PPC64_ADDR16_LO:
86 # CHECK: 10010020: {{.*}} li 1, 0
88 .section .R_PPC64_ADDR16_HI,"ax",@progbits
89 .globl .FR_PPC64_ADDR16_HI
93 # CHECK: Disassembly of section .R_PPC64_ADDR16_HI:
94 # CHECK: .FR_PPC64_ADDR16_HI:
95 # CHECK: 10010024: {{.*}} li 1, 4097
97 .section .R_PPC64_ADDR16_HA,"ax",@progbits
98 .globl .FR_PPC64_ADDR16_HA
102 # CHECK: Disassembly of section .R_PPC64_ADDR16_HA:
103 # CHECK: .FR_PPC64_ADDR16_HA:
104 # CHECK: 10010028: {{.*}} li 1, 4097
106 .section .R_PPC64_ADDR16_HIGHER,"ax",@progbits
107 .globl .FR_PPC64_ADDR16_HIGHER
108 .FR_PPC64_ADDR16_HIGHER:
111 # CHECK: Disassembly of section .R_PPC64_ADDR16_HIGHER:
112 # CHECK: .FR_PPC64_ADDR16_HIGHER:
113 # CHECK: 1001002c: {{.*}} li 1, 0
115 .section .R_PPC64_ADDR16_HIGHERA,"ax",@progbits
116 .globl .FR_PPC64_ADDR16_HIGHERA
117 .FR_PPC64_ADDR16_HIGHERA:
120 # CHECK: Disassembly of section .R_PPC64_ADDR16_HIGHERA:
121 # CHECK: .FR_PPC64_ADDR16_HIGHERA:
122 # CHECK: 10010030: {{.*}} li 1, 0
124 .section .R_PPC64_ADDR16_HIGHEST,"ax",@progbits
125 .globl .FR_PPC64_ADDR16_HIGHEST
126 .FR_PPC64_ADDR16_HIGHEST:
129 # CHECK: Disassembly of section .R_PPC64_ADDR16_HIGHEST:
130 # CHECK: .FR_PPC64_ADDR16_HIGHEST:
131 # CHECK: 10010034: {{.*}} li 1, 0
133 .section .R_PPC64_ADDR16_HIGHESTA,"ax",@progbits
134 .globl .FR_PPC64_ADDR16_HIGHESTA
135 .FR_PPC64_ADDR16_HIGHESTA:
138 # CHECK: Disassembly of section .R_PPC64_ADDR16_HIGHESTA:
139 # CHECK: .FR_PPC64_ADDR16_HIGHESTA:
140 # CHECK: 10010038: {{.*}} li 1, 0
142 .section .R_PPC64_REL32, "ax",@progbits
143 .globl .FR_PPC64_REL32
145 addis 5, 2, .LC0@toc@ha
150 # DATALE: Disassembly of section .rodata:
152 # DATALE: 10000190: b4 fe 00 00
154 # DATABE: Disassembly of section .rodata:
156 # DATABE: 10000190: 00 00 fe b4
158 # Address of rodata + value stored at rodata entry
159 # should equal address of LBB0_2.
160 # 0x10000190 + 0xfeb4 = 0x10010044
161 # CHECK: Disassembly of section .R_PPC64_REL32:
162 # CHECK: .FR_PPC64_REL32:
163 # CHECK: 1001003c: {{.*}} addis 5, 2, 0
164 # CHECK: 10010040: {{.*}} ld 5, -32736(5)
165 # CHECK: 10010044: {{.*}} add 3, 3, 4
167 .section .R_PPC64_REL64, "ax",@progbits
168 .globl .FR_PPC64_REL64
171 .cfi_personality 148, __foo
179 # Check that address of eh_frame entry + value stored
180 # should equal the address of foo. Since it is not aligned,
181 # the entry is not stored exactly at 100001a8. It starts at
182 # address 0x100001aa and has the value 0xfeaa.
183 # 0x100001aa + 0xfeaa = 0x10010054
184 # DATALE: Disassembly of section .eh_frame:
186 # DATALE: 100001a8: {{.*}} aa fe
188 # DATABE: Disassembly of section .eh_frame:
190 # DATABE: 100001b0: fe aa {{.*}}
193 # CHECK-NEXT: 10010054: {{.*}} li 3, 0