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

Re: [PATCH] S/390 DWARF-2 CFI frame support


On Thu, Dec 04, 2003 at 09:09:12PM +0100, Ulrich Weigand wrote:

To fix this, I suggest the following. What GCC assumes to happen
when it leaves a register unspecified in the CFI depends on whether
the register is call-saved or call-clobbered according to the target's ABI. If it is call-saved (and unspecified), the function
doesn't save/restore it because it does not in fact ever modify it.
Thus, in this case the debugger should copy the value from the inner frame. If it is call-clobbered (those will always be left
unspecified), it should be assumed undefined.


This is wrong.  The debugger should just assume *all* registers
that are not explicitly saved are preserved.  In the case of
call-clobbered registers, you just won't *know* that they are
actually dead.  But so what?  This is no worse than not having
location list information that tells you that a value is dead
after its register gets re-used for something else.

However, when I made this argument before, it wasn't good enough
for some people, and they added the annoying warning anyway.

From what I've seen of the PPC64, Ulrich's change and even more is likely needed. PPC64, for instance, appears to point the return-address column and FPSCR and then forget to specify that it is initally found in LR.


Andrew



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