This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] gdbserver fails on 32-bit ppc rfs running in a-64 bit 2.6 linux kernel


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  <dan@codesourcery.com>

        * 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]