| # REQUIRES: ppc |
| # RUN: rm -rf %t && split-file %s %t && cd %t |
| # RUN: llvm-mc -filetype=obj -triple=powerpc -crel a.s -o a.o |
| # RUN: llvm-mc -filetype=obj -triple=powerpc -crel b.s -o b.o |
| # RUN: ld.lld -r b.o a.o -o out |
| # RUN: llvm-readobj -r out | FileCheck %s --check-prefixes=CHECK,CRELFOO |
| |
| # RUN: llvm-mc -filetype=obj -triple=powerpc a.s -o a1.o |
| # RUN: ld.lld -r b.o a1.o -o out1 |
| # RUN: llvm-readobj -r out1 | FileCheck %s --check-prefixes=CHECK,RELAFOO |
| # RUN: ld.lld -r a1.o b.o -o out2 |
| # RUN: llvm-readobj -r out2 | FileCheck %s --check-prefixes=CHECK2 |
| |
| # CHECK: Relocations [ |
| # CHECK-NEXT: Section (2) .crel.text { |
| # CHECK-NEXT: 0x0 R_PPC_REL24 fb 0x0 |
| # CHECK-NEXT: 0x4 R_PPC_REL24 foo 0x0 |
| # CHECK-NEXT: 0x8 R_PPC_REL24 .text.foo 0x0 |
| # CHECK-NEXT: 0xE R_PPC_ADDR16_HA .rodata.str1.1 0x4 |
| # CHECK-NEXT: 0x12 R_PPC_ADDR16_LO .rodata.str1.1 0x4 |
| # CHECK-NEXT: 0x16 R_PPC_ADDR16_HA .rodata.str1.1 0x0 |
| # CHECK-NEXT: 0x1A R_PPC_ADDR16_LO .rodata.str1.1 0x0 |
| # CHECK-NEXT: } |
| # CRELFOO-NEXT: Section (4) .crel.text.foo { |
| # RELAFOO-NEXT: Section (4) .rela.text.foo { |
| # CHECK-NEXT: 0x0 R_PPC_REL24 g 0x0 |
| # CHECK-NEXT: 0x4 R_PPC_REL24 g 0x0 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| |
| # CHECK2: Relocations [ |
| # CHECK2-NEXT: Section (2) .crel.text { |
| # CHECK2-NEXT: 0x0 R_PPC_REL24 foo 0x0 |
| # CHECK2-NEXT: 0x4 R_PPC_REL24 .text.foo 0x0 |
| # CHECK2-NEXT: 0xA R_PPC_ADDR16_HA .rodata.str1.1 0x4 |
| # CHECK2-NEXT: 0xE R_PPC_ADDR16_LO .rodata.str1.1 0x4 |
| # CHECK2-NEXT: 0x12 R_PPC_ADDR16_HA .rodata.str1.1 0x0 |
| # CHECK2-NEXT: 0x16 R_PPC_ADDR16_LO .rodata.str1.1 0x0 |
| # CHECK2-NEXT: 0x18 R_PPC_REL24 fb 0x0 |
| # CHECK2-NEXT: } |
| # CHECK2-NEXT: Section (4) .rela.text.foo { |
| # CHECK2-NEXT: 0x0 R_PPC_REL24 g 0x0 |
| # CHECK2-NEXT: 0x4 R_PPC_REL24 g 0x0 |
| # CHECK2-NEXT: } |
| # CHECK2-NEXT: ] |
| |
| #--- a.s |
| .global _start, foo |
| _start: |
| bl foo |
| bl .text.foo |
| lis 3, .L.str@ha |
| la 3, .L.str@l(3) |
| lis 3, .L.str1@ha |
| la 3, .L.str1@l(3) |
| |
| .section .text.foo,"ax" |
| foo: |
| bl g |
| bl g |
| |
| .section .rodata.str1.1,"aMS",@progbits,1 |
| .L.str: |
| .asciz "abc" |
| .L.str1: |
| .asciz "def" |
| |
| #--- b.s |
| .globl fb |
| fb: |
| bl fb |