llvm/lld/test/ELF/relocatable-crel-32.s

# 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