From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32765 invoked by alias); 14 Mar 2005 16:23:09 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 32581 invoked from network); 14 Mar 2005 16:23:01 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sourceware.org with SMTP; 14 Mar 2005 16:23:01 -0000 Received: from drow by nevyn.them.org with local (Exim 4.44 #1 (Debian)) id 1DAsLE-0006HQ-Re; Mon, 14 Mar 2005 11:22:52 -0500 Date: Mon, 14 Mar 2005 16:23:00 -0000 From: Daniel Jacobowitz To: "Amit S. Kale" Cc: GDB patches Subject: Re: [patch] gdbserver fails on 32-bit ppc rfs running in a-64 bit 2.6 linux kernel Message-ID: <20050314162252.GA23939@nevyn.them.org> Mail-Followup-To: "Amit S. Kale" , GDB patches References: <200503142137.35799.amitkale@linsyssoft.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200503142137.35799.amitkale@linsyssoft.com> User-Agent: Mutt/1.5.6+20040907i X-SW-Source: 2005-03/txt/msg00203.txt.bz2 On Mon, Mar 14, 2005 at 09:37:35PM +0530, Amit S. Kale wrote: > Hi, > > I found that gdbserver fails on a 32-bit ppc rfs running in a 64-bit 2.6 linux "rfs"? It'd be nice to explain one's acronyms... > 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? Please see: 2005-03-03 Daniel Jacobowitz * inferiors.c (change_inferior_id, add_thread, find_inferior_id): Take unsigned long arguments for PIDs. * linux-low.c (add_process, linux_attach_lwp, linux_attach) (linux_thread_alive, linux_wait_for_event, kill_lwp, send_sigstop) (wait_for_sigstop, linux_resume_one_process) (regsets_fetch_inferior_registers, linux_send_signal) (linux_read_auxv): Likewise. Update the types of variables holding PIDs. Update format string specifiers. * linux-low.h (struct process_info, linux_attach_lwp): Likewise. * remote-utils.c (prepare_resume_reply): Likewise. * server.c (cont_thread, general_thread, step_thread) (thread_from_wait, old_thread_from_wait, signal_pid): Change type to unsigned long. (handle_query): Update format specifiers. (handle_v_cont, main): Use strtoul for thread IDs. * server.h (struct inferior_list_entry): Use unsigned long for ID. (add_thread, find_inferior_id, change_inferior_id, cont_thread) (general_thread, step_thread, thread_from_wait) (old_thread_from_wait): Update. * target.h (struct thread_resume): Use unsigned long for THREAD. (struct target_ops): Use unsigned long for arguments to attach and thread_alive. Your sources are dated after this but don't seem to include this fix. -- Daniel Jacobowitz CodeSourcery, LLC