# REQUIRES: riscv # RUN: llvm-mc -filetype=obj -triple=riscv64 %s -o %t.o # RUN: not ld.lld %t.o 2>&1 | FileCheck %s # CHECK: error: {{.*}}:(.text.sec_one+0x0): R_RISCV_PCREL_LO12 relocation points to a symbol '.Lpcrel_hi0' in a different section '.text.sec_two' # CHECK: error: {{.*}}:(.text.sec_one+0x4): R_RISCV_PCREL_LO12 relocation points to a symbol '.Lpcrel_hi1' in a different section '.text.sec_two' # CHECK-NOT: R_RISCV_PCREL_LO12 relocation points to a symbol '.Lpcrel_hi2' ## This test is checking that we warn the user when the relocations in their ## object don't follow the RISC-V psABI. In particular, the psABI requires ## that PCREL_LO12 relocations are in the same section as the pcrel_hi ## instruction they point to. .section .text.sec_one,"ax" addi a0, a0, %pcrel_lo(.Lpcrel_hi0) sw a0, %pcrel_lo(.Lpcrel_hi1)(a1) .section .text.sec_two,"ax" .Lpcrel_hi0: auipc a0, %pcrel_hi(a) .Lpcrel_hi1: auipc a1, %pcrel_hi(a) .Lpcrel_hi2: auipc a2, %pcrel_hi(a) addi a2, a2, %pcrel_lo(.Lpcrel_hi2) .data .global a a: .word 50