Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Kevin Buettner <kevinb@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFC] Fix some frame problems in the mn10300 prologue analyzer
Date: Tue, 22 Jul 2003 18:58:00 -0000	[thread overview]
Message-ID: <1030722185805.ZM4236@localhost.localdomain> (raw)

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;


             reply	other threads:[~2003-07-22 18:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-22 18:58 Kevin Buettner [this message]
2003-07-30 20:45 ` Kevin Buettner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1030722185805.ZM4236@localhost.localdomain \
    --to=kevinb@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox