This is the mail archive of the gdb@sources.redhat.com 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] |
You mean: [just for the record]: new prologue analyzer for S/390 http://sources.redhat.com/ml/gdb-patches/2003-04/msg00352.html
/* A traditional saved regs table, indexed by REGNUM, encoding where the value of REGNUM for the previous frame can be found in this frame.
The table is initialized with an identity encoding (ADDR == -1, REALREG == REGNUM) indicating that the value of REGNUM in the previous frame can be found in register REGNUM (== REALREG) in this frame.
The initial encoding can then be changed:
Modify ADDR (REALREG >= 0, ADDR != -1) to indicate that the value of register REGNUM in the previous frame can be found in memory at ADDR in this frame (addr_p, !realreg_p, !value_p).
Modify REALREG (REALREG >= 0, ADDR == -1) to indicate that the value of register REGNUM in the previous frame is found in register REALREG in this frame (!addr_p, realreg_p, !value_p).
Call trad_frame_register_value (REALREG == -1) to indicate that the value of register REGNUM in the previous frame is found in ADDR (!addr_p, !realreg_p, value_p). */
struct trad_frame_saved_reg { LONGEST addr; /* A CORE_ADDR fits in a longest. */ int realreg; };
! struct prologue_value {
! ! /* What sort of value is this? This determines the interpretation
! of subsequent fields. */
! enum {
! ! /* We don't know anything about the value. This is also used for
! values we could have kept track of, when doing so would have
! been too complex and we don't want to bother. The bottom of
! our lattice. */
! pv_unknown,
! ! /* A known constant. K is its value. */
! pv_constant,
! ! /* The value that register REG originally had *UPON ENTRY TO THE
! FUNCTION*, plus K. If K is zero, this means, obviously, just
! the value REG had upon entry to the function. REG is a GDB
! register number. Before we start interpreting, we initialize
! every register R to { pv_register, R, 0 }. */
! pv_register,
! ! } kind;
! ! /* The meanings of the following fields depend on 'kind'; see the
! comments for the specific 'kind' values. */
! int reg;
! CORE_ADDR k;
! };
enjoy, Andrew
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |