48 lines · plain
1// RUN: llvm-mc -triple riscv64 -mattr=+c,+relax -filetype obj -o %t.o %s2// RUN: ld.lld --emit-relocs -o %t %t.o3// RUN: llvm-bolt --print-cfg --print-fix-riscv-calls --print-only=_start \4// RUN: -o %t.bolt %t | FileCheck %s5// RUN: llvm-objdump -d %t.bolt | FileCheck --check-prefix=OBJDUMP %s6 7// CHECK: Binary Function "_start" after building cfg {8// CHECK: jal near_f9// CHECK-NEXT: auipc ra, far_f10// CHECK-NEXT: jalr 0xc(ra)11// CHECK-NEXT: j near_f12 13// CHECK: Binary Function "_start" after fix-riscv-calls {14// CHECK: call near_f15// CHECK-NEXT: call far_f16// CHECK-NEXT: tail near_f17 18// OBJDUMP: 0000000000600000 <_start>:19// OBJDUMP-NEXT: jal 0x600040 <near_f>20// OBJDUMP-NEXT: auipc ra, 0x20021// OBJDUMP-NEXT: jalr 0x7c(ra)22// OBJDUMP-NEXT: j 0x600040 <near_f>23// OBJDUMP: 0000000000600040 <near_f>:24// OBJDUMP: 0000000000800080 <far_f>:25 26 .text27 .globl _start28 .p2align 129_start:30 call near_f31 call far_f32 tail near_f33 .size _start, .-_start34 35 .global near_f36 .p2align 137near_f:38 ret39 .size near_f, .-near_f40 41 .skip (1 << 21)42 43 .global far_f44 .p2align 145far_f:46 ret47 .size far_f, .-far_f48