Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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);
 }

             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