70 lines · plain
1# REQUIRES: riscv2## Test that we can handle --emit-relocs while relaxing.3 4# RUN: rm -rf %t && mkdir %t && cd %t5 6# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax %s -o 32.o -riscv-align-rvc=07# RUN: ld.lld -Ttext=0x10000 --emit-relocs 32.o -o 328# RUN: llvm-objdump -dr --no-show-raw-insn -M no-aliases 32 | FileCheck %s9 10# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+relax %s -o 64.o -riscv-align-rvc=011# RUN: ld.lld -Ttext=0x10000 --emit-relocs 64.o -o 6412# RUN: llvm-objdump -dr --no-show-raw-insn -M no-aliases 64 | FileCheck %s13 14## -r should keep original relocations.15# RUN: ld.lld -r 64.o -o 64.r16# RUN: llvm-objdump -dr --no-show-raw-insn -M no-aliases 64.r | FileCheck %s --check-prefix=CHECKR17 18## --no-relax should keep original relocations.19# RUN: ld.lld --emit-relocs --no-relax 64.o -o 64.norelax20# RUN: llvm-objdump -dr --no-show-raw-insn -M no-aliases 64.norelax | FileCheck %s --check-prefix=CHECKNORELAX21 22# CHECK: <_start>:23# CHECK-NEXT: jal ra, 0x10008 <f>24# CHECK-NEXT: R_RISCV_JAL f25# CHECK-NEXT: R_RISCV_RELAX *ABS*26# CHECK-NEXT: jal ra, 0x10008 <f>27# CHECK-NEXT: R_RISCV_JAL f28# CHECK-NEXT: R_RISCV_RELAX *ABS*29# CHECK-EMPTY:30# CHECK-NEXT: <f>:31# CHECK-NEXT: jalr zero, 0x0(ra)32# CHECK-NEXT: R_RISCV_ALIGN *ABS*+0x433 34# CHECKR: <_start>:35# CHECKR-NEXT: auipc ra, 0x036# CHECKR-NEXT: R_RISCV_CALL_PLT f37# CHECKR-NEXT: R_RISCV_RELAX *ABS*38# CHECKR-NEXT: jalr ra, 0x0(ra)39# CHECKR-NEXT: auipc ra, 0x040# CHECKR-NEXT: R_RISCV_CALL_PLT f41# CHECKR-NEXT: R_RISCV_RELAX *ABS*42# CHECKR-NEXT: jalr ra, 0x0(ra)43# CHECKR-NEXT: addi zero, zero, 0x044# CHECKR-NEXT: R_RISCV_ALIGN *ABS*+0x445# CHECKR-EMPTY:46# CHECKR-NEXT: <f>:47# CHECKR-NEXT: jalr zero, 0x0(ra)48 49# CHECKNORELAX: <_start>:50# CHECKNORELAX-NEXT: auipc ra, 0x051# CHECKNORELAX-NEXT: R_RISCV_CALL_PLT f52# CHECKNORELAX-NEXT: R_RISCV_RELAX *ABS*53# CHECKNORELAX-NEXT: jalr ra, 0x10(ra)54# CHECKNORELAX-NEXT: auipc ra, 0x055# CHECKNORELAX-NEXT: R_RISCV_CALL_PLT f56# CHECKNORELAX-NEXT: R_RISCV_RELAX *ABS*57# CHECKNORELAX-NEXT: jalr ra, 0x8(ra)58# CHECKNORELAX-EMPTY:59# CHECKNORELAX-NEXT: <f>:60# CHECKNORELAX-NEXT: jalr zero, 0x0(ra)61# CHECKNORELAX-NEXT: R_RISCV_ALIGN *ABS*+0x462 63.global _start64_start:65 call f66 call f67 .balign 868f:69 ret70