* [RFC] Fix some frame problems in the mn10300 prologue analyzer
@ 2003-07-22 18:58 Kevin Buettner
2003-07-30 20:45 ` Kevin Buettner
0 siblings, 1 reply; 2+ messages in thread
From: Kevin Buettner @ 2003-07-22 18:58 UTC (permalink / raw)
To: gdb-patches
The mn10300 prologue analyzer has bit-rotted since the addition of
Andrew's new frame code -- calling get_frame_pc() with a frame
constructed in analyze_dummy_frame() triggers an assertion failure.
The patch below reduced the number of FAILs (when run against the
simulator) from 671 to 357.
Comments?
* mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that
the prologue analyzer won't need to attempt to extract the pc
value from the woefully incomplete dummy frame.
(mn10300_analyze_prologue): Avoid calls to get_frame_pc() when
possible. Disable code which modifies the frame.
Index: mn10300-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v
retrieving revision 1.83
diff -u -p -r1.83 mn10300-tdep.c
--- mn10300-tdep.c 16 Jun 2003 16:47:42 -0000 1.83
+++ mn10300-tdep.c 22 Jul 2003 18:45:47 -0000
@@ -169,7 +169,7 @@ analyze_dummy_frame (CORE_ADDR pc, CORE_
get_frame_extra_info (dummy)->status = 0;
get_frame_extra_info (dummy)->stack_size = 0;
memset (get_frame_saved_regs (dummy), '\000', SIZEOF_FRAME_SAVED_REGS);
- mn10300_analyze_prologue (dummy, 0);
+ mn10300_analyze_prologue (dummy, pc);
return dummy;
}
@@ -401,8 +401,13 @@ mn10300_analyze_prologue (struct frame_i
char *name;
/* Use the PC in the frame if it's provided to look up the
- start of this function. */
- pc = (fi ? get_frame_pc (fi) : pc);
+ start of this function.
+
+ Note: kevinb/2003-07-16: We used to do the following here:
+ pc = (fi ? get_frame_pc (fi) : pc);
+ But this is (now) badly broken when called from analyze_dummy_frame().
+ */
+ pc = (pc ? pc : get_frame_pc (fi));
/* Find the start of this function. */
status = find_pc_partial_function (pc, &name, &func_addr, &func_end);
@@ -432,6 +437,9 @@ mn10300_analyze_prologue (struct frame_i
if (status != 0)
return pc;
+#if 0
+ /* Note: kevinb/2003-07-16: We shouldn't be making these sorts of
+ changes to the frame in prologue examination code. */
/* If we're physically on an "rets" instruction, then our frame has
already been deallocated. Note this can also be true for retf
and ret if they specify a size of zero.
@@ -452,9 +460,10 @@ mn10300_analyze_prologue (struct frame_i
deprecated_update_frame_base_hack (fi, read_sp ());
return get_frame_pc (fi);
}
+#endif
/* Figure out where to stop scanning. */
- stop = fi ? get_frame_pc (fi) : func_end;
+ stop = fi ? pc : func_end;
/* Don't walk off the end of the function. */
stop = stop > func_end ? func_end : stop;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [RFC] Fix some frame problems in the mn10300 prologue analyzer
2003-07-22 18:58 [RFC] Fix some frame problems in the mn10300 prologue analyzer Kevin Buettner
@ 2003-07-30 20:45 ` Kevin Buettner
0 siblings, 0 replies; 2+ messages in thread
From: Kevin Buettner @ 2003-07-30 20:45 UTC (permalink / raw)
To: gdb-patches
On Jul 22, 11:58am, Kevin Buettner wrote:
> * mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that
> the prologue analyzer won't need to attempt to extract the pc
> value from the woefully incomplete dummy frame.
> (mn10300_analyze_prologue): Avoid calls to get_frame_pc() when
> possible. Disable code which modifies the frame.
Committed.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-07-30 20:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-22 18:58 [RFC] Fix some frame problems in the mn10300 prologue analyzer Kevin Buettner
2003-07-30 20:45 ` Kevin Buettner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox