* [RFA] Off-by-one error in linux thread-db.c?
@ 2001-03-27 17:20 Michael Snyder
2001-03-28 1:36 ` Mark Kettenis
0 siblings, 1 reply; 3+ messages in thread
From: Michael Snyder @ 2001-03-27 17:20 UTC (permalink / raw)
To: gdb-patches; +Cc: Mark Kettenis
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] Off-by-one error in linux thread-db.c?
2001-03-27 17:20 [RFA] Off-by-one error in linux thread-db.c? Michael Snyder
@ 2001-03-28 1:36 ` Mark Kettenis
2001-04-17 12:15 ` Michael Snyder
0 siblings, 1 reply; 3+ messages in thread
From: Mark Kettenis @ 2001-03-28 1:36 UTC (permalink / raw)
To: msnyder; +Cc: gdb-patches
Date: Tue, 27 Mar 2001 17:20:34 -0800
From: Michael Snyder <msnyder@cygnus.com>
Mark, what do you think? There's no signal zero...
Makes sense to me. In a sense there is a signal zero: you can send
one to a process to check for its existence, but the program itself
will never see it (at least not as a signal).
Go ahead and check it in.
Mark
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] Off-by-one error in linux thread-db.c?
2001-03-28 1:36 ` Mark Kettenis
@ 2001-04-17 12:15 ` Michael Snyder
0 siblings, 0 replies; 3+ messages in thread
From: Michael Snyder @ 2001-04-17 12:15 UTC (permalink / raw)
To: Mark Kettenis; +Cc: gdb-patches
Mark Kettenis wrote:
>
> Date: Tue, 27 Mar 2001 17:20:34 -0800
> From: Michael Snyder <msnyder@cygnus.com>
>
> Mark, what do you think? There's no signal zero...
>
> Makes sense to me. In a sense there is a signal zero: you can send
> one to a process to check for its existence, but the program itself
> will never see it (at least not as a signal).
>
> Go ahead and check it in.
Committed.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2001-04-17 12:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-03-27 17:20 [RFA] Off-by-one error in linux thread-db.c? Michael Snyder
2001-03-28 1:36 ` Mark Kettenis
2001-04-17 12:15 ` Michael Snyder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox