Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Kevin Buettner <kevinb@redhat.com>
To: gdb-patches@sourceware.org
Subject: Re: [RFC] mips-tdep.c: Ignore use of sw after sd in prologue  scanner
Date: Sat, 15 Mar 2008 00:04:00 -0000	[thread overview]
Message-ID: <20080314170325.090af32c@ironwood.lan> (raw)
In-Reply-To: <20080306224040.GA31830@caradoc.them.org>

On Thu, 6 Mar 2008 17:40:40 -0500
Daniel Jacobowitz <drow@false.org> wrote:

> Seems reasonable enough.  Making it ABI-regsize-dependent would make
> sense too.

Thanks for looking it over.

I decided that I liked the "ABI-regsize-dependent" approach better than
my original patch.  Here is what I've committed:

	* mips-tdep.c (mips32_scan_prologue): Use the ABI register size
	to decide whether to match instruction patterns using "sw" and "sd".

Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.470
diff -u -p -r1.470 mips-tdep.c
--- mips-tdep.c	13 Mar 2008 12:22:13 -0000	1.470
+++ mips-tdep.c	14 Mar 2008 23:55:32 -0000
@@ -1931,6 +1931,7 @@ mips32_scan_prologue (CORE_ADDR start_pc
   int seen_sp_adjust = 0;
   int load_immediate_bytes = 0;
   struct gdbarch *gdbarch = get_frame_arch (next_frame);
+  int regsize_is_64_bits = (mips_abi_regsize (gdbarch) == 8);
 
   /* Can be called when there's no process, and hence when there's no
      NEXT_FRAME.  */
@@ -1973,11 +1974,13 @@ restart:
 	    break;
           seen_sp_adjust = 1;
 	}
-      else if ((high_word & 0xFFE0) == 0xafa0)	/* sw reg,offset($sp) */
+      else if (((high_word & 0xFFE0) == 0xafa0) /* sw reg,offset($sp) */
+               && !regsize_is_64_bits)
 	{
 	  set_reg_offset (this_cache, reg, sp + low_word);
 	}
-      else if ((high_word & 0xFFE0) == 0xffa0)	/* sd reg,offset($sp) */
+      else if (((high_word & 0xFFE0) == 0xffa0)	/* sd reg,offset($sp) */
+               && regsize_is_64_bits)
 	{
 	  /* Irix 6.2 N32 ABI uses sd instructions for saving $gp and $ra.  */
 	  set_reg_offset (this_cache, reg, sp + low_word);
@@ -2041,7 +2044,8 @@ restart:
 	        }
 	    }
 	}
-      else if ((high_word & 0xFFE0) == 0xafc0)	/* sw reg,offset($30) */
+      else if ((high_word & 0xFFE0) == 0xafc0 	/* sw reg,offset($30) */
+               && !regsize_is_64_bits)
 	{
 	  set_reg_offset (this_cache, reg, frame_addr + low_word);
 	}


  reply	other threads:[~2008-03-15  0:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-06 22:13 Kevin Buettner
2008-03-06 22:41 ` Daniel Jacobowitz
2008-03-15  0:04   ` Kevin Buettner [this message]
2008-03-15  3:00     ` Daniel Jacobowitz

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=20080314170325.090af32c@ironwood.lan \
    --to=kevinb@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /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