This is the mail archive of the gdb@sourceware.cygnus.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]

virtual and raw



I'd appreciate it if folks could check my understanding of a certain
bit of logic in GDB, and its consequences.

If one is cross-debugging, then the REGISTER_CONVERTIBLE macro
indicates which registers have values in some format that can't be
interpreted directly by GDB.  The REGISTER_CONVERT_TO_VIRTUAL and
REGISTER_CONVERT_TO_RAW macros will convert back and forth between the
machine's format, and one that GDB can understand.

So, for example, if you are debugging an x86 target from some other
kind of host which does not support the x86's 80-bit long double type,
then REGISTER_CONVERTIBLE will indicate that all the floating-point
registers need conversion, and R_C_T_VIRTUAL and R_C_T_RAW will
convert between the x86 long double and something the host can handle.

Am I correct in thinking that, if there is an x86 long double in
memory, not in a register, then GDB is at present incapable of
converting that value to a format it can understand?  That is, the
virtual / raw conversion system is only set up to handle registers, so
even though the exact same conversions could be usefully applied to
values in memory, GDB doesn't know how to do them?

(Note that my real problem isn't floating-point values at all, so
conversations about how GDB ought to emulate the target's floating-
point system won't help me much.  My question is really about values
that need different representations within GDB and on the target.)

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