mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
2007-11-02 Markus Deuling <deuling@de.ibm.com>
* frame.c (frame_id_inner): Add gdbarch parameter. Replace current_gdbarch by gdbarch. (frame_find_by_id, get_prev_frame_1): Use get_frame_arch to get at the current architecture by frame_info. * frame.h (frame_id_inner): Add gdbarch parameter. * stack.c (return_command): Use get_frame_arch to get at the current architecture by frame_info. Update call of frame_id_inner. * infrun.c (handle_inferior_event): Likewise. * dummy-frame.c (dummy_frame_push): Use get_regcache_arch to get at the current architecture by regcache. Update call of frame_id_inner.
This commit is contained in:
parent
d93859e2e8
commit
09a7aba80a
@ -1,3 +1,16 @@
|
|||||||
|
2007-11-02 Markus Deuling <deuling@de.ibm.com>
|
||||||
|
|
||||||
|
* frame.c (frame_id_inner): Add gdbarch parameter. Replace
|
||||||
|
current_gdbarch by gdbarch.
|
||||||
|
(frame_find_by_id, get_prev_frame_1): Use get_frame_arch to get at the
|
||||||
|
current architecture by frame_info.
|
||||||
|
* frame.h (frame_id_inner): Add gdbarch parameter.
|
||||||
|
* stack.c (return_command): Use get_frame_arch to get at the current
|
||||||
|
architecture by frame_info. Update call of frame_id_inner.
|
||||||
|
* infrun.c (handle_inferior_event): Likewise.
|
||||||
|
* dummy-frame.c (dummy_frame_push): Use get_regcache_arch to get at the
|
||||||
|
current architecture by regcache. Update call of frame_id_inner.
|
||||||
|
|
||||||
2007-11-02 Markus Deuling <deuling@de.ibm.com>
|
2007-11-02 Markus Deuling <deuling@de.ibm.com>
|
||||||
|
|
||||||
* gdbarch.sh (register_name): Add gdbarch parameter.
|
* gdbarch.sh (register_name): Add gdbarch parameter.
|
||||||
|
@ -87,6 +87,7 @@ void
|
|||||||
dummy_frame_push (struct regcache *caller_regcache,
|
dummy_frame_push (struct regcache *caller_regcache,
|
||||||
const struct frame_id *dummy_id)
|
const struct frame_id *dummy_id)
|
||||||
{
|
{
|
||||||
|
struct gdbarch *gdbarch = get_regcache_arch (caller_regcache);
|
||||||
struct dummy_frame *dummy_frame;
|
struct dummy_frame *dummy_frame;
|
||||||
|
|
||||||
/* Check to see if there are stale dummy frames, perhaps left over
|
/* Check to see if there are stale dummy frames, perhaps left over
|
||||||
@ -95,7 +96,7 @@ dummy_frame_push (struct regcache *caller_regcache,
|
|||||||
dummy_frame = dummy_frame_stack;
|
dummy_frame = dummy_frame_stack;
|
||||||
while (dummy_frame)
|
while (dummy_frame)
|
||||||
/* FIXME: cagney/2004-08-02: Should just test IDs. */
|
/* FIXME: cagney/2004-08-02: Should just test IDs. */
|
||||||
if (frame_id_inner (dummy_frame->id, (*dummy_id)))
|
if (frame_id_inner (gdbarch, dummy_frame->id, (*dummy_id)))
|
||||||
/* Stale -- destroy! */
|
/* Stale -- destroy! */
|
||||||
{
|
{
|
||||||
dummy_frame_stack = dummy_frame->next;
|
dummy_frame_stack = dummy_frame->next;
|
||||||
|
@ -369,7 +369,7 @@ frame_id_eq (struct frame_id l, struct frame_id r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
frame_id_inner (struct frame_id l, struct frame_id r)
|
frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
|
||||||
{
|
{
|
||||||
int inner;
|
int inner;
|
||||||
if (!l.stack_addr_p || !r.stack_addr_p)
|
if (!l.stack_addr_p || !r.stack_addr_p)
|
||||||
@ -380,7 +380,7 @@ frame_id_inner (struct frame_id l, struct frame_id r)
|
|||||||
comment in "frame.h", there is some fuzz here. Frameless
|
comment in "frame.h", there is some fuzz here. Frameless
|
||||||
functions are not strictly inner than (same .stack but
|
functions are not strictly inner than (same .stack but
|
||||||
different .code and/or .special address). */
|
different .code and/or .special address). */
|
||||||
inner = gdbarch_inner_than (current_gdbarch, l.stack_addr, r.stack_addr);
|
inner = gdbarch_inner_than (gdbarch, l.stack_addr, r.stack_addr);
|
||||||
if (frame_debug)
|
if (frame_debug)
|
||||||
{
|
{
|
||||||
fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
|
fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
|
||||||
@ -410,7 +410,7 @@ frame_find_by_id (struct frame_id id)
|
|||||||
if (frame_id_eq (id, this))
|
if (frame_id_eq (id, this))
|
||||||
/* An exact match. */
|
/* An exact match. */
|
||||||
return frame;
|
return frame;
|
||||||
if (frame_id_inner (id, this))
|
if (frame_id_inner (get_frame_arch (frame), id, this))
|
||||||
/* Gone to far. */
|
/* Gone to far. */
|
||||||
return NULL;
|
return NULL;
|
||||||
/* Either we're not yet gone far enough out along the frame
|
/* Either we're not yet gone far enough out along the frame
|
||||||
@ -1175,7 +1175,8 @@ get_prev_frame_1 (struct frame_info *this_frame)
|
|||||||
go backwards) and sentinel frames (the test is meaningless). */
|
go backwards) and sentinel frames (the test is meaningless). */
|
||||||
if (this_frame->next->level >= 0
|
if (this_frame->next->level >= 0
|
||||||
&& this_frame->next->unwind->type != SIGTRAMP_FRAME
|
&& this_frame->next->unwind->type != SIGTRAMP_FRAME
|
||||||
&& frame_id_inner (this_id, get_frame_id (this_frame->next)))
|
&& frame_id_inner (get_frame_arch (this_frame), this_id,
|
||||||
|
get_frame_id (this_frame->next)))
|
||||||
{
|
{
|
||||||
if (frame_debug)
|
if (frame_debug)
|
||||||
{
|
{
|
||||||
|
@ -175,7 +175,8 @@ extern int frame_id_eq (struct frame_id l, struct frame_id r);
|
|||||||
/* Returns non-zero when L is strictly inner-than R (they have
|
/* Returns non-zero when L is strictly inner-than R (they have
|
||||||
different frame .bases). Neither L, nor R can be `null'. See note
|
different frame .bases). Neither L, nor R can be `null'. See note
|
||||||
above about frameless functions. */
|
above about frameless functions. */
|
||||||
extern int frame_id_inner (struct frame_id l, struct frame_id r);
|
extern int frame_id_inner (struct gdbarch *gdbarch, struct frame_id l,
|
||||||
|
struct frame_id r);
|
||||||
|
|
||||||
/* Write the internal representation of a frame ID on the specified
|
/* Write the internal representation of a frame ID on the specified
|
||||||
stream. */
|
stream. */
|
||||||
|
@ -2726,8 +2726,10 @@ process_event_stop_test:
|
|||||||
function. Fortunately, those days are nearly upon us. */
|
function. Fortunately, those days are nearly upon us. */
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
struct frame_id current_frame = get_frame_id (get_current_frame ());
|
struct frame_info *frame = get_current_frame ();
|
||||||
if (!(frame_id_inner (current_frame, step_frame_id)))
|
struct frame_id current_frame = get_frame_id (frame);
|
||||||
|
if (!(frame_id_inner (get_frame_arch (frame), current_frame,
|
||||||
|
step_frame_id)))
|
||||||
step_frame_id = current_frame;
|
step_frame_id = current_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1824,7 +1824,9 @@ If you continue, the return value that you specified will be ignored.\n";
|
|||||||
struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
|
struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
|
||||||
while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
|
while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
|
||||||
{
|
{
|
||||||
if (frame_id_inner (selected_id, get_frame_id (get_current_frame ())))
|
struct frame_info *frame = get_current_frame ();
|
||||||
|
if (frame_id_inner (get_frame_arch (frame), selected_id,
|
||||||
|
get_frame_id (frame)))
|
||||||
/* Caught in the safety net, oops! We've gone way past the
|
/* Caught in the safety net, oops! We've gone way past the
|
||||||
selected frame. */
|
selected frame. */
|
||||||
error (_("Problem while popping stack frames (corrupt stack?)"));
|
error (_("Problem while popping stack frames (corrupt stack?)"));
|
||||||
|
Loading…
Reference in New Issue
Block a user