2 # RUN: rm -rf %t && split-file %s %t && cd %t
3 # RUN: llvm-mc -filetype=obj -triple=powerpc -crel a.s -o a.o
4 # RUN: llvm-mc -filetype=obj -triple=powerpc -crel b.s -o b.o
5 # RUN: ld.lld -r b.o a.o -o out
6 # RUN: llvm-readobj -r out | FileCheck %s --check-prefixes=CHECK,CRELFOO
8 # RUN: llvm-mc -filetype=obj -triple=powerpc a.s -o a1.o
9 # RUN: ld.lld -r b.o a1.o -o out1
10 # RUN: llvm-readobj -r out1 | FileCheck %s --check-prefixes=CHECK,RELAFOO
11 # RUN: ld.lld -r a1.o b.o -o out2
12 # RUN: llvm-readobj -r out2 | FileCheck %s --check-prefixes=CHECK2
14 # CHECK: Relocations [
15 # CHECK-NEXT: Section (2) .crel.text {
16 # CHECK-NEXT: 0x0 R_PPC_REL24 fb 0x0
17 # CHECK-NEXT: 0x4 R_PPC_REL24 foo 0x0
18 # CHECK-NEXT: 0x8 R_PPC_REL24 .text.foo 0x0
19 # CHECK-NEXT: 0xE R_PPC_ADDR16_HA .rodata.str1.1 0x4
20 # CHECK-NEXT: 0x12 R_PPC_ADDR16_LO .rodata.str1.1 0x4
21 # CHECK-NEXT: 0x16 R_PPC_ADDR16_HA .rodata.str1.1 0x0
22 # CHECK-NEXT: 0x1A R_PPC_ADDR16_LO .rodata.str1.1 0x0
24 # CRELFOO-NEXT: Section (4) .crel.text.foo {
25 # RELAFOO-NEXT: Section (4) .rela.text.foo {
26 # CHECK-NEXT: 0x0 R_PPC_REL24 g 0x0
27 # CHECK-NEXT: 0x4 R_PPC_REL24 g 0x0
31 # CHECK2: Relocations [
32 # CHECK2-NEXT: Section (2) .crel.text {
33 # CHECK2-NEXT: 0x0 R_PPC_REL24 foo 0x0
34 # CHECK2-NEXT: 0x4 R_PPC_REL24 .text.foo 0x0
35 # CHECK2-NEXT: 0xA R_PPC_ADDR16_HA .rodata.str1.1 0x4
36 # CHECK2-NEXT: 0xE R_PPC_ADDR16_LO .rodata.str1.1 0x4
37 # CHECK2-NEXT: 0x12 R_PPC_ADDR16_HA .rodata.str1.1 0x0
38 # CHECK2-NEXT: 0x16 R_PPC_ADDR16_LO .rodata.str1.1 0x0
39 # CHECK2-NEXT: 0x18 R_PPC_REL24 fb 0x0
41 # CHECK2-NEXT: Section (4) .rela.text.foo {
42 # CHECK2-NEXT: 0x0 R_PPC_REL24 g 0x0
43 # CHECK2-NEXT: 0x4 R_PPC_REL24 g 0x0
57 .section .text.foo,"ax"
62 .section .rodata.str1.1,"aMS",@progbits,1