This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] gdb: Prefer RISC-V register name "s0" over "fp"
- From: Andrew Burgess <andrew dot burgess at embecosm dot com>
- To: Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- Cc: gdb-patches at sourceware dot org, Jim Wilson <jimw at sifive dot com>
- Date: Fri, 29 Jun 2018 13:08:08 +0100
- Subject: Re: [PATCH] gdb: Prefer RISC-V register name "s0" over "fp"
- References: <20180629085731.8439-1-sebastian.huber@embedded-brains.de>
* Sebastian Huber <sebastian.huber@embedded-brains.de> [2018-06-29 10:57:31 +0200]:
> The "fp" register name is an alias for "s0" which is an alias for "x8".
> The "fp" name is not understood by the 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.
This is fine with me based on GCC no generating $fp relative code by
default. However, I think we need to get binutils fixed too, $fp _is_
a valid register name.
Thanks,
Andrew
> ---
> gdb/riscv-tdep.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
> index 154567136e..4c68ef73fc 100644
> --- a/gdb/riscv-tdep.c
> +++ b/gdb/riscv-tdep.c
> @@ -128,8 +128,8 @@ static const struct register_alias riscv_register_aliases[] =
> { "t0", 5 },
> { "t1", 6 },
> { "t2", 7 },
> - { "fp", 8 },
> { "s0", 8 },
> + { "fp", 8 },
> { "s1", 9 },
> { "a0", 10 },
> { "a1", 11 },
> --
> 2.13.7
>