Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@cygnus.com>
To: gdb-patches@sources.redhat.com
Cc: Mark Kettenis <kettenis@wins.uva.nl>
Subject: [RFA] Off-by-one error in linux thread-db.c?
Date: Tue, 27 Mar 2001 17:20:00 -0000	[thread overview]
Message-ID: <3AC13C62.6AE49717@cygnus.com> (raw)

Mark, what do you think?  There's no signal zero...
2001-03-27  Michael Snyder  <msnyder@redhat.com>

	* thread-db.c (check_thread_signals): Off by one error in loop.

Index: thread-db.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/thread-db.c,v
retrieving revision 2.5
diff -c -3 -p -r2.5 thread-db.c
*** thread-db.c	2001/03/26 19:54:42	2.5
--- thread-db.c	2001/03/28 00:57:02
*************** check_thread_signals (void)
*** 469,475 ****
        sigemptyset (&thread_stop_set);
        sigemptyset (&thread_print_set);
  
!       for (i = 0; i < NSIG; i++)
  	{
  	  if (sigismember (&mask, i))
  	    {
--- 469,475 ----
        sigemptyset (&thread_stop_set);
        sigemptyset (&thread_print_set);
  
!       for (i = 1; i < NSIG; i++)
  	{
  	  if (sigismember (&mask, i))
  	    {
From kettenis@wins.uva.nl Wed Mar 28 01:15:00 2001
From: Mark Kettenis <kettenis@wins.uva.nl>
To: gdb-patches@sources.redhat.com
Subject: [PATCH] Fix gdbserver for Linux/x86
Date: Wed, 28 Mar 2001 01:15:00 -0000
Message-id: <200103280915.f2S9FPc00875@delius.kettenis.local>
X-SW-Source: 2001-03/msg00516.html
Content-length: 3357

The attached patch makes gdbserver work again on Linux/x86.

Checked in.

Mark


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* gdbserver/low-linux.c [I386_GNULINUX_TARGET]: Cleanup code and
	make it work again.
	(NUM_FREGS): Redefine to 0.
	(NUM_REGS): Redefine as NUM_GREGS.
	(i386_register_byte, i386_register_raw_size): Update from
	i386-tdep.c.  Add comment about their origin.
	(regmap, register_u_addr): Take these from i386-linux-nat.c.
	(i386_register_u_addr): Removed.

Index: gdbserver/low-linux.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/low-linux.c,v
retrieving revision 1.8
diff -u -p -r1.8 low-linux.c
--- gdbserver/low-linux.c 2001/03/13 23:31:14 1.8
+++ gdbserver/low-linux.c 2001/03/28 09:12:37
@@ -155,8 +155,26 @@ myresume (int step, int signal)
 #endif
 
 #ifdef I386_GNULINUX_TARGET
-/* i386_register_raw_size[i] is the number of bytes of storage in the
-   actual machine representation for register i.  */
+/* This module only supports access to the general purpose registers.
+   Adjust the relevant constants accordingly.
+
+   FIXME: kettenis/2001-03-28: We should really use PTRACE_GETREGS to
+   get at the registers.  Better yet, we should try to share code with
+   i386-linux-nat.c.  */
+#undef NUM_FREGS
+#define NUM_FREGS 0
+#undef NUM_REGS
+#define NUM_REGS NUM_GREGS
+
+/* This stuff comes from i386-tdep.c.  */
+
+/* i386_register_byte[i] is the offset into the register file of the
+   start of register number i.  We initialize this from
+   i386_register_raw_size.  */
+int i386_register_byte[MAX_NUM_REGS];
+
+/* i386_register_raw_size[i] is the number of bytes of storage in
+   GDB's register array occupied by register i.  */
 int i386_register_raw_size[MAX_NUM_REGS] = {
    4,  4,  4,  4,
    4,  4,  4,  4,
@@ -171,8 +189,6 @@ int i386_register_raw_size[MAX_NUM_REGS]
    4
 };
 
-int i386_register_byte[MAX_NUM_REGS];
-
 static void
 initialize_arch (void)
 {
@@ -189,37 +205,26 @@ initialize_arch (void)
       }
   }
 }
+
+/* This stuff comes from i386-linux-nat.c.  */
 
-/* this table must line up with REGISTER_NAMES in tm-i386v.h */
-/* symbols like 'EAX' come from <sys/reg.h> */
-static int regmap[] =
+/* Mapping between the general-purpose registers in `struct user'
+   format and GDB's register array layout.  */
+static int regmap[] = 
 {
   EAX, ECX, EDX, EBX,
   UESP, EBP, ESI, EDI,
   EIP, EFL, CS, SS,
-  DS, ES, FS, GS,
+  DS, ES, FS, GS
 };
 
-int
-i386_register_u_addr (int blockend, int regnum)
-{
-#if 0
-  /* this will be needed if fp registers are reinstated */
-  /* for now, you can look at them with 'info float'
-   * sys5 wont let you change them with ptrace anyway
-   */
-  if (regnum >= FP0_REGNUM && regnum <= FP7_REGNUM)
-    {
-      int ubase, fpstate;
-      struct user u;
-      ubase = blockend + 4 * (SS + 1) - KSTKSZ;
-      fpstate = ubase + ((char *) &u.u_fpstate - (char *) &u);
-      return (fpstate + 0x1c + 10 * (regnum - FP0_REGNUM));
-    }
-  else
-#endif
-    return (blockend + 4 * regmap[regnum]);
+/* Return the address of register REGNUM.  BLOCKEND is the value of
+   u.u_ar0, which should point to the registers.  */
 
+CORE_ADDR
+register_u_addr (CORE_ADDR blockend, int regnum)
+{
+  return (blockend + 4 * regmap[regnum]);
 }
 #elif defined(TARGET_M68K)
 static void


             reply	other threads:[~2001-03-27 17:20 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-27 17:20 Michael Snyder [this message]
2001-03-28  1:36 ` Mark Kettenis
2001-04-17 12:15   ` Michael Snyder

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=3AC13C62.6AE49717@cygnus.com \
    --to=msnyder@cygnus.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=kettenis@wins.uva.nl \
    /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