This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] gdb: Prefer RISC-V register name "s0" over "fp"


* 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
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]