Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Mark Kettenis <kettenis@chello.nl>
To: drow@mvista.com
Cc: gdb@sources.redhat.com
Subject: Re: Bizarre internal errors in regcache
Date: Mon, 26 Aug 2002 13:28:00 -0000	[thread overview]
Message-ID: <200208262028.g7QKS88T001023@elgar.kettenis.dyndns.org> (raw)
In-Reply-To: <20020826195247.GA22760@nevyn.them.org> (message from Daniel Jacobowitz on Mon, 26 Aug 2002 15:52:47 -0400)

   Date: Mon, 26 Aug 2002 15:52:47 -0400
   From: Daniel Jacobowitz <drow@mvista.com>

   On Mon, Aug 26, 2002 at 02:56:39PM -0400, Daniel Jacobowitz wrote:
   > I see this error on my laptop but not on my desktop; both current trees,
   > both rebuilt from scratch, both i386-linux.  Any ideas?

   [ snip ]

   My desktop has SSE, my laptop doesn't, it seems.  We can't call
   supply_register on an MMX register if we don't have any. 
   dummy_sse_registers seems to be the culprit.

Hmm, and my desktop sort of pretends it has the SSE registers.

Anyway, I'm pretty certain that the problem is caused by the fact that
the binary produced by the gdb.asm test isn't branded.  Therefore GDB
doesn't select the Linux OS/ABI but the generic OS/ABI which doesn't
include the SSE regs.  Since you're running on Linux, the native code
tries to supply these registers anyway.  i387_supply_fxsave() does
deal with this gracefully, but dummy_sse_regs() doesn't.

Can you try the attached patch?

Note that I'm still open to suggestions on what registers to include
in any of the i386 OS/ABI variants.  Ideally we would let the user
choose somehow.  For now I selected something that most closely
resembles what we did in previous GDB releases, although there are
some differences.  For example, on Linux, you'll always get the SSE
registers now.

Any thoughts?

Mark

Index: i386-linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-linux-nat.c,v
retrieving revision 1.40
diff -u -p -r1.40 i386-linux-nat.c
--- i386-linux-nat.c 15 Jun 2002 16:43:54 -0000 1.40
+++ i386-linux-nat.c 26 Aug 2002 20:11:48 -0000
@@ -540,15 +540,17 @@ store_fpxregs (int tid, int regno)
 static void
 dummy_sse_values (void)
 {
+  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
   /* C doesn't have a syntax for NaN's, so write it out as an array of
      longs.  */
   static long dummy[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff };
   static long mxcsr = 0x1f80;
   int reg;
 
-  for (reg = 0; reg < 8; reg++)
+  for (reg = 0; reg < tdep->num_xmm_regs; reg++)
     supply_register (XMM0_REGNUM + reg, (char *) dummy);
-  supply_register (MXCSR_REGNUM, (char *) &mxcsr);
+  if (tdep->num_xmm_regs > 0)
+    supply_register (MXCSR_REGNUM, (char *) &mxcsr);
 }
 
 #else


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

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-26 11:55 Daniel Jacobowitz
2002-08-26 12:51 ` Daniel Jacobowitz
2002-08-26 13:28   ` Mark Kettenis [this message]
2002-08-26 13:54     ` Daniel Jacobowitz
2002-09-01 15:12       ` [PATCH] " Mark Kettenis

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=200208262028.g7QKS88T001023@elgar.kettenis.dyndns.org \
    --to=kettenis@chello.nl \
    --cc=drow@mvista.com \
    --cc=gdb@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