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/riscv: Don't use default bfd to define required features


* Andrew Burgess <andrew.burgess@embecosm.com> [2019-07-04 22:07:58 +0100]:

> When we initialise a gdbarch object we perform a check to try and
> detect if the user is doing something silly; trying to run an RV64
> binary on an RV32 target.  To perform this check we compare the xlen
> from the target description with the xlen specified in the headers on
> the ELF being debugged.
> 
> If there is no ELF being debugged then we (currently) try to use the
> bfd_arch_info from the gdbarch_info object, which will have been set
> to the default architecture if no bfd is currently being debugged.
> For RISC-V the default architecture is RV64.
> 
> What this means is that if a user tries to connect to an RV32 target
> without specifying the BFD to debug then GDB will assume RV64.  The
> sanity check mentioned above will failed (xlen difference) and GDB
> will throw an error.  The error causes GDB to disconnect from the
> remote target.
> 
> After this commit GDB no longer relies on the default bfd
> architecture.  If the user tries to connect without specifying the bfd
> then GDB will simply make use of the xlen extracted from the target
> description in order to find or create a suitable gdbarch object.
> 
> gdb/ChangeLog:
> 
> 	* riscv-tdep.c (riscv_features_from_gdbarch_info): Don't modify
> 	required features based on default bfd type when no specific bfd
> 	is present.

This is now pushed.

Thanks,
Andrew


> ---
>  gdb/ChangeLog    |  6 ++++++
>  gdb/riscv-tdep.c | 12 ------------
>  2 files changed, 6 insertions(+), 12 deletions(-)
> 
> diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
> index bae987cf66b..828beea7e2b 100644
> --- a/gdb/riscv-tdep.c
> +++ b/gdb/riscv-tdep.c
> @@ -2917,18 +2917,6 @@ riscv_features_from_gdbarch_info (const struct gdbarch_info info)
>        else if (e_flags & EF_RISCV_FLOAT_ABI_SINGLE)
>  	features.flen = 4;
>      }
> -  else
> -    {
> -      const struct bfd_arch_info *binfo = info.bfd_arch_info;
> -
> -      if (binfo->bits_per_word == 32)
> -	features.xlen = 4;
> -      else if (binfo->bits_per_word == 64)
> -	features.xlen = 8;
> -      else
> -	internal_error (__FILE__, __LINE__, _("unknown bits_per_word %d"),
> -			binfo->bits_per_word);
> -    }
>  
>    return features;
>  }
> -- 
> 2.14.5
> 


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