Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Randolph Chung <randolph@tausq.org>
To: gdb-patches@sources.redhat.com
Subject: [patch] Fix unwind handling for hppa
Date: Sat, 17 Apr 2004 07:32:00 -0000	[thread overview]
Message-ID: <20040417080536.GB17842@tausq.org> (raw)

Frame unwinding on hppa was broken when the frame unwind started at a 
location before the current frame is created (as noted by the comment
below). This patch fixes it and brings the failure count on 
hppa2.0w-hp-hpux11 down from 1000 to 668, and on hppa-linux from 2700+ 
to 1214. still some ways to go :) 

Many thanks to Dan for patiently answering my questions.

ok to commit?

hppa2.0w-hp-hpux11 results:

                === gdb Summary ===

# of expected passes            9348
# of unexpected failures        668
# of unexpected successes       6
# of expected failures          62
# of known failures             21
# of unresolved testcases       12
# of untested testcases         5
# of unsupported tests          15



hppa-unknown-linux results:

                === gdb Summary ===

# of expected passes            8663
# of unexpected failures        1214
# of expected failures          46
# of known failures             35
# of unresolved testcases       80
# of untested testcases         9
# of unsupported tests          3

thanks,
randolph
-- 
Randolph Chung
Debian GNU/Linux Developer, hppa/ia64 ports
http://www.tausq.org/

2004-04-16  Randolph Chung  <tausq@debian.org>

	* hppa-tdep.c (hppa_frame_cache): Handle the case when frame unwind
	starts at a pc before the frame is created.

--- gdb/gdb/hppa-tdep.c.orig	2004-04-14 21:49:24.000000000 -0700
+++ gdb/gdb/hppa-tdep.c	2004-04-16 20:19:32.161667784 -0700
@@ -2207,17 +2207,31 @@
        the current function (and is thus equivalent to the "saved"
        stack pointer.  */
     CORE_ADDR this_sp = frame_unwind_register_unsigned (next_frame, HPPA_SP_REGNUM);
-    /* FIXME: cagney/2004-02-22: This assumes that the frame has been
-       created.  If it hasn't everything will be out-of-wack.  */
-    if (u->Save_SP && trad_frame_addr_p (cache->saved_regs, HPPA_SP_REGNUM))
-      /* Both we're expecting the SP to be saved and the SP has been
-	 saved.  The entry SP value is saved at this frame's SP
-	 address.  */
-      cache->base = read_memory_integer (this_sp, TARGET_PTR_BIT / 8);
+
+    if (frame_relative_level (next_frame) >= 0 || 
+        frame_pc_unwind (next_frame) >= 
+	hppa_skip_prologue (frame_func_unwind (next_frame)))
+    {
+      if (u->Save_SP && trad_frame_addr_p (cache->saved_regs, HPPA_SP_REGNUM))
+        {
+          /* Both we're expecting the SP to be saved and the SP has been
+	     saved.  The entry SP value is saved at this frame's SP
+	     address.  */
+          cache->base = read_memory_integer (this_sp, TARGET_PTR_BIT / 8);
+        }
+      else
+        {
+          /* The prologue has been slowly allocating stack space.  Adjust
+	     the SP back.  */
+          cache->base = this_sp - frame_size;
+        }
+      }
     else
-      /* The prologue has been slowly allocating stack space.  Adjust
-	 the SP back.  */
-      cache->base = this_sp - frame_size;
+      {
+	/* This frame has not yet been created. */
+        cache->base = this_sp;
+      }
+
     trad_frame_set_value (cache->saved_regs, HPPA_SP_REGNUM, cache->base);
   }
 


             reply	other threads:[~2004-04-17  7:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-17  7:32 Randolph Chung [this message]
2004-04-17 16:35 ` Daniel Jacobowitz
2004-04-17 16:43   ` Randolph Chung
2004-04-17 16:54     ` Daniel Jacobowitz
2004-04-17 18:13       ` Randolph Chung
2004-04-21 14:55   ` Andrew Cagney
2004-04-21 15:18     ` Randolph Chung
2004-04-21 21:53       ` Andrew Cagney
2004-04-22  0:06         ` Randolph Chung
2004-04-22  0:49           ` Andrew Cagney
2004-04-22  2:38             ` Randolph Chung
2004-04-22  2:54             ` Randolph Chung
2004-04-22  3:00             ` Randolph Chung
2004-04-22 19:27               ` Andrew Cagney
2004-04-23  3:12                 ` Randolph Chung
2004-04-23  3:40                   ` Daniel Jacobowitz
2004-04-24  0:03                   ` Andrew Cagney

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=20040417080536.GB17842@tausq.org \
    --to=randolph@tausq.org \
    --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