On riscv64-linux, with test-case gdb.trace/entry-values.exp I run into:
...
(gdb) disassemble bar^M
Dump of assembler code for function bar:^M
0x0000000000000646 <+0>: addi sp,sp,-48^M
0x0000000000000648 <+2>: sd ra,40(sp)^M
0x000000000000064a <+4>: sd s0,32(sp)^M
0x000000000000064c <+6>: addi s0,sp,48^M
0x000000000000064e <+8>: mv a5,a0^M
0x0000000000000650 <+10>: sw a5,-36(s0)^M
0x0000000000000654 <+14>: li a5,2^M
0x0000000000000656 <+16>: sw a5,-20(s0)^M
0x000000000000065a <+20>: lw a4,-20(s0)^M
0x000000000000065e <+24>: lw a5,-36(s0)^M
0x0000000000000662 <+28>: mv a1,a4^M
0x0000000000000664 <+30>: mv a0,a5^M
0x0000000000000666 <+32>: jal 0x628 <foo>^M
0x000000000000066a <+36>: mv a5,a0^M
0x000000000000066c <+38>: mv a0,a5^M
0x000000000000066e <+40>: ld ra,40(sp)^M
0x0000000000000670 <+42>: ld s0,32(sp)^M
0x0000000000000672 <+44>: addi sp,sp,48^M
0x0000000000000674 <+46>: ret^M
End of assembler dump.^M
(gdb) FAIL: gdb.trace/entry-values.exp: disassemble bar
FAIL: gdb.trace/entry-values.exp: find the call or branch instruction offset in bar
...
Fix this by setting call_insn to jal for riscv64.
Tested on riscv64-linux and x86_64-linux.
# returns. The only exception is JALRC, in which case execution
# resumes from `insn1' instead.
set call_insn {jalrc|[jb]al[sxr]*[ \t][^\r\n]+\r\n}
+} elseif { [istarget "riscv64*-*-*"] } {
+ set call_insn jal
} else {
set call_insn "call"
}