59 lines · plain
1# REQUIRES: riscv2# RUN: rm -rf %t && split-file %s %t && cd %t3# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+relax a.s -o a.o4 5# RUN: ld.lld -T lds a.o -o a6# RUN: llvm-objdump -d --no-show-raw-insn -M no-aliases a | FileCheck %s7 8## Unsure whether this needs a diagnostic. GNU ld allows this.9# RUN: ld.lld -T lds -pie a.o -o a.pie10# RUN: llvm-objdump -d --no-show-raw-insn -M no-aliases a.pie | FileCheck %s11 12# RUN: ld.lld -T lds -pie -z notext -z ifunc-noplt a.o -o a.ifunc-noplt13# RUN: llvm-objdump -d --no-show-raw-insn -M no-aliases a.ifunc-noplt | FileCheck %s --check-prefix=CHECK214 15# CHECK-LABEL: <_start>:16# CHECK-NEXT: jal zero, 0x8 <abs>17# CHECK-NEXT: jal zero, 0x8 <abs>18# CHECK-NEXT: jal ra, 0x8 <abs>19# CHECK-NEXT: auipc t1, 0xfff0020# CHECK-NEXT: jalr zero, -0x4(t1)21# CHECK-EMPTY:22 23# CHECK-LABEL: <.mid>:24# CHECK-NEXT: jal zero, 0x10100025# CHECK-NEXT: c.j 0x10100026# CHECK-EMPTY:27 28# CHECK2-LABEL: <.mid>:29# CHECK2-NEXT: auipc t1, 0x030# CHECK2-NEXT: jalr zero, 0x0(t1)31# CHECK2-NEXT: auipc t1, 0x032# CHECK2-NEXT: jalr zero, 0x0(t1)33# CHECK2-EMPTY:34 35#--- a.s36.global _start, ifunc37_start:38 jump abs, t239 jump abs, t340 call abs41 tail abs # not relaxed42 43.section .mid,"ax",@progbits44.balign 1645 tail ifunc@plt # not relaxed46 tail ifunc@plt47 48.type ifunc, @gnu_indirect_function49ifunc:50 ret51 52#--- lds53SECTIONS {54 .text 0x100000 : { *(.text) }55 .mid 0x100800 : { *(.mid) }56 .iplt 0x101000 : { *(.iplt) }57}58abs = 8;59