1 // RUN
: llvm-mc
-triple riscv64
-mattr
=+c
,+relax
-filetype obj
-o
%t.o
%s
2 // RUN
: ld.lld
--emit-relocs
-o
%t %t.o
3 // RUN
: llvm-bolt
--print-cfg
--print-fix-riscv-calls
--print-only
=_start \
4 // RUN
: -o
%t.bolt
%t | FileCheck
%s
5 // RUN
: llvm-objdump
-d
%t.bolt | FileCheck
--check-prefix
=OBJDUMP
%s
7 // CHECK
: Binary Function
"_start" after building cfg
{
8 // CHECK
: jal ra
, near_f
9 // CHECK-NEXT
: auipc ra
, far_f@plt
10 // CHECK-NEXT
: jalr ra
, 12(ra
)
11 // CHECK-NEXT
: j near_f
13 // CHECK
: Binary Function
"_start" after fix-riscv-calls
{
15 // CHECK-NEXT
: call far_f
16 // CHECK-NEXT
: tail near_f
18 // OBJDUMP
: 0000000000600000 <_start
>:
19 // OBJDUMP-NEXT
: jal
0x600040 <near_f
>
20 // OBJDUMP-NEXT
: auipc ra
, 512
21 // OBJDUMP-NEXT
: jalr
124(ra
)
22 // OBJDUMP-NEXT
: j
0x600040 <near_f
>
23 // OBJDUMP
: 0000000000600040 <near_f
>:
24 // OBJDUMP
: 0000000000800080 <far_f
>:
33 .size _start, .-_start
39 .size near_f, .-near_f