From: "Amit S. Kale" <amitkale@linsyssoft.com>
To: GDB patches <gdb-patches@sources.redhat.com>
Subject: [patch] gdbserver fails on 32-bit ppc rfs running in a-64 bit 2.6 linux kernel
Date: Mon, 14 Mar 2005 16:07:00 -0000 [thread overview]
Message-ID: <200503142137.35799.amitkale@linsyssoft.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 593 bytes --]
Hi,
I found that gdbserver fails on a 32-bit ppc rfs running in a 64-bit 2.6 linux
kernel. The thread id's fetched from thread-db library are above 0x7fffffff.
gdbserver has implicit assumptions that thread id's are "signed integers".
This is true when running under a 32-bit kernel, but not true here. Attached
patch fixes this problem by changing the "strtol" that scans the thread-id to
"strtoul" and by changing the "cont_thread > 0" comparison to "cont_thread !=
-1".
Is there any likelyhood of this assumption being made in some other places in
gdbserver or gdb?
Thanks.
-Amit
[-- Attachment #2: threadidrange.patch --]
[-- Type: text/x-diff, Size: 1685 bytes --]
Index: src/gdb/gdbserver/linux-low.c
===================================================================
--- src.orig/gdb/gdbserver/linux-low.c 2005-03-10 19:31:24.000000000 +0530
+++ src/gdb/gdbserver/linux-low.c 2005-03-14 20:49:11.589413080 +0530
@@ -667,7 +667,7 @@
then we need to make sure we restart the other threads. We could
pick a thread at random or restart all; restarting all is less
arbitrary. */
- if (cont_thread > 0)
+ if (cont_thread != -1)
{
child = (struct thread_info *) find_inferior_id (&all_threads,
cont_thread);
@@ -1430,7 +1430,7 @@
{
extern unsigned long signal_pid;
- if (cont_thread > 0)
+ if (cont_thread != -1)
{
struct process_info *process;
Index: src/gdb/gdbserver/server.c
===================================================================
--- src.orig/gdb/gdbserver/server.c 2005-03-10 19:31:24.000000000 +0530
+++ src/gdb/gdbserver/server.c 2005-03-14 21:05:22.774770464 +0530
@@ -193,7 +193,7 @@
if (p[0] == 'S' || p[0] == 'C')
{
int sig;
- sig = strtol (p + 1, &q, 16);
+ sig = strtoul (p + 1, &q, 16);
if (p == q)
goto err;
p = q;
@@ -281,7 +281,7 @@
struct thread_resume resume_info[2];
int n = 0;
- if (step || sig || cont_thread > 0)
+ if (step || sig || cont_thread != -1)
{
resume_info[0].thread
= ((struct inferior_list_entry *) current_inferior)->id;
@@ -293,7 +293,7 @@
resume_info[n].thread = -1;
resume_info[n].step = 0;
resume_info[n].sig = 0;
- resume_info[n].leave_stopped = (cont_thread > 0);
+ resume_info[n].leave_stopped = (cont_thread != -1);
(*the_target->resume) (resume_info);
}
next reply other threads:[~2005-03-14 16:07 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-14 16:07 Amit S. Kale [this message]
2005-03-14 16:23 ` Daniel Jacobowitz
2005-03-14 16:57 ` Christopher Faylor
2005-03-14 17:02 ` Daniel Jacobowitz
2005-03-15 13:07 ` Amit S. Kale
2005-03-16 3:16 ` Daniel Jacobowitz
2005-06-17 4:00 ` Daniel Jacobowitz
2005-03-16 16:54 Jitendra Pawar
2005-03-16 16:57 ` Daniel Jacobowitz
2005-03-22 14:11 ` Jitendra Pawar
2005-03-22 14:23 ` Daniel Jacobowitz
2005-03-22 14:50 ` Jitendra Pawar
2005-03-22 14:54 ` Daniel Jacobowitz
2005-03-23 10:03 ` Jitendra Pawar
2005-03-23 15:43 ` Daniel Jacobowitz
2005-03-24 13:42 ` Jitendra Pawar
2005-03-24 14:02 ` Daniel Jacobowitz
2005-03-22 18:49 ` 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=200503142137.35799.amitkale@linsyssoft.com \
--to=amitkale@linsyssoft.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