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]

Problem converting ia64 to use new frame model


I am having problems converting the ia64-tdep.c file to use the new frame model.

The main problem stems from the fact that the next frame is asked for the current
registers.  When dealing with the innermost frame, the sentinel frame doesn't know how
to get all of the ia64 registers.

In the current code, the bsp register is calculated based on the cfm and the bsp
values returned from the system.  For the innermost frame, the sentinel frame just
goes to the sytem bsp value.  The argument registers (32, 33, ...) need to be fetched
from a memory location based on the calculated bsp value.  These registers are not accessible
via ptrace.  When the sentinel frame is asked to fetch them, it ends up just grabbing
them from the regcache which returns zero.

Some of this used to be handled by the deprecated_init_extra_frame_info routine
which would calculate the bsp.  The rest would get filled in by prologue examination.
In the new model, the prologue examination code doesn't get called by the sentinel
frame when it gets the "current" registers.

I have looked into pseudo registers, but this doesn't solve the problem because there isn't
a way AFAICT to notify the frame code to convert a register number into a pseudo register
number.  The dwarf2_reg_to_regnum() interface, for example, isn't used by the frame code when
performing an info registers call.

Anybody have any other ideas? Is a new exit routine required?

-- Jeff J.


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