The "fp" register name is an alias for "s0" which is an alias for "x8".
The "fp" name is only understood by very recent Binutils and thus not
used by GCC. GCC does not emit a frame pointer with common optimization
options such as -Og or -O2.
It is still possible to use the "fp" register name, e.g.
(gdb) p/x $fp
$1 = 0x800367c8
works.
However, in the register dump you see now:
(gdb) info registers
...
t2 0xffffffffffffffff
18446744073709551615
s0 0x800367c8 0x800367c8
s1 0x80033280
2147693184
...
gdb/
* riscv-tdep.c (riscv_register_aliases): Swap "fp" and "s0"
entries.
+2018-07-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * riscv-tdep.c (riscv_register_aliases): Swap "fp" and "s0" entries.
+
2018-06-29 Joel Brobecker <brobecker@adacore.com>
* amd64-darwin-tdep.c (x86_darwin_init_abi_64): Add missing
{ "t0", 5 },
{ "t1", 6 },
{ "t2", 7 },
- { "fp", 8 },
{ "s0", 8 },
+ { "fp", 8 },
{ "s1", 9 },
{ "a0", 10 },
{ "a1", 11 },