Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Kevin Buettner <kevinb@redhat.com>
To: Andrew Cagney <ac131313@ges.redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [PATCH] 64-bit support for Irix 6
Date: Thu, 01 Aug 2002 13:08:00 -0000	[thread overview]
Message-ID: <1020801200749.ZM29220@localhost.localdomain> (raw)
In-Reply-To: Andrew Cagney <ac131313@ges.redhat.com> "Re: [PATCH] 64-bit support for Irix 6" (Aug  1,  1:42pm)

On Aug 1,  1:42pm, Andrew Cagney wrote:

> Even though it removes a macro, I think it is still fudging things.

Okay.

> The patch should be converting REGISTER_VIRTUAL_TYPE() to a function and 
> then adding it to the multi-arch vector.
> 
> Add an #undef to tm-irix6.h.

I've committed the change below.  As the MIPS maintainer, you may want
to ponder my note in the mips_register_virtual_type() comment.  (It
doesn't affect Irix because (for good or ill) Irix redefines
FP_REGNUM.)

	* mips-tdep.c (mips_register_virtual_type): New function.
	(mips_gdbarch_init): Register mips_register_virtual_type()
	with gdbarch machinery.
	* config/mips/tm-irix6.h (mips/tm-bigmips64.h): Include
	this file instead of tm-bigmips.h.
	(MIPS_REGSIZE): Delete this macro.
	(REGISTER_VIRTUAL_TYPE): Delete macro.  Undef macro so that
	multiarch version in mips-tdep.c will be found.

Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.85
diff -u -p -r1.85 mips-tdep.c
--- mips-tdep.c	31 Jul 2002 20:26:49 -0000	1.85
+++ mips-tdep.c	1 Aug 2002 19:49:59 -0000
@@ -483,6 +483,36 @@ mips_register_convert_to_raw (struct typ
 	    TYPE_LENGTH (virtual_type));
 }
 
+/* Return the GDB type object for the "standard" data type
+   of data in register REG.  
+   
+   Note: kevinb/2002-08-01: The definition below should faithfully
+   reproduce the behavior of each of the REGISTER_VIRTUAL_TYPE
+   definitions found in config/mips/tm-*.h.  I'm concerned about
+   the ``FCRCS_REGNUM <= reg && reg <= LAST_EMBED_REGNUM'' clause
+   though.  In some cases FP_REGNUM is in this range, and I doubt
+   that this code is correct for the 64-bit case.  */
+
+static struct type *
+mips_register_virtual_type (int reg)
+{
+  if (FP0_REGNUM <= reg && reg < FP0_REGNUM + 32)
+    return builtin_type_double;
+  else if (reg == PS_REGNUM /* CR */)
+    return builtin_type_uint32;
+  else if (FCRCS_REGNUM <= reg && reg <= LAST_EMBED_REGNUM)
+    return builtin_type_uint32;
+  else
+    {
+      /* Everything else... return ``long long'' when registers
+         are 64-bits wide, ``int'' otherwise.  */
+      if (MIPS_REGSIZE == TYPE_LENGTH (builtin_type_long_long))
+	return builtin_type_long_long;
+      else
+	return builtin_type_int;
+    }
+}
+
 /* Should the upper word of 64-bit addresses be zeroed? */
 enum auto_boolean mask_address_var = AUTO_BOOLEAN_AUTO;
 
@@ -4634,6 +4664,8 @@ mips_gdbarch_init (struct gdbarch_info i
   set_gdbarch_pointer_to_address (gdbarch, signed_pointer_to_address);
   set_gdbarch_address_to_pointer (gdbarch, address_to_signed_pointer);
   set_gdbarch_integer_to_address (gdbarch, mips_integer_to_address);
+
+  set_gdbarch_register_virtual_type (gdbarch, mips_register_virtual_type);
 
   /* Hook in OS ABI-specific overrides, if they have been registered.  */
   gdbarch_init_osabi (info, gdbarch, osabi);
Index: config/mips/tm-irix6.h
===================================================================
RCS file: /cvs/src/src/gdb/config/mips/tm-irix6.h,v
retrieving revision 1.3
diff -u -p -r1.3 tm-irix6.h
--- config/mips/tm-irix6.h	31 Jul 2002 17:22:06 -0000	1.3
+++ config/mips/tm-irix6.h	1 Aug 2002 19:49:59 -0000
@@ -19,10 +19,7 @@
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include "mips/tm-bigmips.h"
-
-#undef MIPS_REGSIZE
-#define MIPS_REGSIZE 8
+#include "mips/tm-bigmips64.h"
 
 /* SGI's assembler doesn't grok dollar signs in identifiers.
    So we use dots instead.  This item must be coordinated with G++. */
@@ -91,14 +88,6 @@
       ((N) - FP0_REGNUM) * sizeof(double) : \
       32 * sizeof(double) + ((N) - 32) * MIPS_REGSIZE)
 
-#undef  REGISTER_VIRTUAL_TYPE
-/* define 8 byte register type */
-#define REGISTER_VIRTUAL_TYPE(N) \
-	(((N) >= FP0_REGNUM && (N) < FP0_REGNUM+32) ? builtin_type_double \
-	 : ((N) == 32 /*SR*/) ? builtin_type_uint32 \
-	 : ((N) >= 70 && (N) <= 89) ? builtin_type_uint32 \
-	 : builtin_type_long_long)
-
 /* Force N32 ABI as the default. */
 #define MIPS_DEFAULT_ABI MIPS_ABI_N32
 
@@ -129,3 +118,6 @@
 /* Select the disassembler */
 #undef TM_PRINT_INSN_MACH
 #define TM_PRINT_INSN_MACH bfd_mach_mips8000
+
+/* Undefine those methods which have been multiarched.  */
+#undef REGISTER_VIRTUAL_TYPE


  reply	other threads:[~2002-08-01 20:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-31 11:23 Kevin Buettner
2002-08-01  8:11 ` Andrew Cagney
2002-08-01  9:53   ` Kevin Buettner
2002-08-01 10:42     ` Andrew Cagney
2002-08-01 13:08       ` Kevin Buettner [this message]
2002-08-01 13:28         ` Andrew Cagney
2002-08-01 16:17           ` Kevin Buettner
2002-08-01 13:54   ` Michael Snyder
2002-08-01 14:25     ` Andrew Cagney
2002-08-01 14:47       ` Michael Snyder
2002-08-01 16:38         ` 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=1020801200749.ZM29220@localhost.localdomain \
    --to=kevinb@redhat.com \
    --cc=ac131313@ges.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