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]

[PING][PATCH 2/2] Involve gdbarch in taking DWARF register pieces


Ping:

  https://sourceware.org/ml/gdb-patches/2016-04/msg00437.html

IIRC, there was some uncertainty about the clarity/meaning of the new
gdbarch method's description below.  Or has this cleared up by now?

On Tue, Apr 19 2016, Andreas Arnez wrote:

> Here's another attempt:
>
> Determine the physical placement of a piece of size LEN within register
> *REGNUM, possibly overwriting *REGNUM.  (E.g., some ABIs have unwindable
> sub-registers embedded in non-unwindable full registers, and this method
> diverts from the full register to the sub-register if possible.)
> Returns the byte offset of the data within the (possibly adjusted)
> register.  This method is used for determining the placement of a
> LEN-sized DWARF piece (DW_OP_piece) and when interpreting a register as
> a LEN-sized type (unless convert_register_p indicates that the type
> needs a special conversion).

[...]

> gdb/ChangeLog:
>
> 	* gdbarch.sh (value_from_register): Remove.
> 	(register_piece_placement): New.
> 	* gdbarch.c: Regenerate.
> 	* gdbarch.h: Likewise.
> 	* dwarf2loc.c (read_pieced_value): Get arch-specific placement of
> 	a register piece from gdbarch_register_piece_placement.
> 	(write_pieced_value): Likewise.
> 	* value.h (default_value_from_register): Remove.
> 	(default_register_piece_placement): Declare.
> 	* findvar.c (default_value_from_register): Remove.
> 	(default_register_piece_placement): New.
> 	(value_from_register): Call gdbarch_register_piece_placement
> 	instead of gdbarch_value_from_register.
> 	(address_from_register): Likewise.
> 	* s390-linux-tdep.c (s390_value_from_register): Remove.
> 	(s390_register_piece_placement): New.
> 	(s390_gdbarch_init): Set new gdbarch method
> 	register_piece_placement instead of value_from_register.
> 	* spu-tdep.c (spu_value_from_register): Remove.
> 	(spu_register_piece_placement): New.
> 	(spu_gdbarch_init): Set new gdbarch method
> 	register_piece_placement instead of value_from_register.


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