From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26496 invoked by alias); 29 Jun 2011 17:14:32 -0000 Received: (qmail 26485 invoked by uid 22791); 29 Jun 2011 17:14:31 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from smtp-out11.han.skanova.net (HELO smtp-out11.han.skanova.net) (195.67.226.200) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 29 Jun 2011 17:14:04 +0000 Received: from [130.237.20.66] (130.237.20.66) by smtp-out11.han.skanova.net (8.5.133) (authenticated as u84406617) id 4D6512CA02EAA8E6; Wed, 29 Jun 2011 19:14:02 +0200 Subject: Patch to enable a fully working gdb for GNU/Hurd From: Svante Signell Reply-To: svante.signell@telia.com To: gdb-patches@sourceware.org Content-Type: text/plain; charset="UTF-8" Date: Wed, 29 Jun 2011 17:14:00 -0000 Message-ID: <1309367642.3172.82.camel@s1499.it.kth.se> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-06/txt/msg00458.txt.bz2 Dear list, Here is an attempt to create a complete patch for gdb to make it run successfully on GNU/Hurd. Problem description: When starting gdb the following output is written: Can't fetch registers from thread bogus thread id 1: No such thread This makes gdb completely unusable for debugging purposes without this patch. Patch size: Small change ChangeLog: gdb/ 2011-06-29 Svante Signell * gnu_nat.c: Activate prune_threads() for Hurd * thread.c: Make prune_threads() visible outside current scope. * gdbthread.h: Declare prune_threads() * Fix PR gdb/12222 gdb-7.2.patch --- gdb-7.2/gdb/gnu-nat.c.orig 2010-05-14 22:17:37.000000000 +0200 +++ gdb-7.2/gdb/gnu-nat.c 2011-03-28 09:07:49.000000000 +0200 @@ -1578,8 +1578,8 @@ if (--inf->pending_execs == 0) /* We're done! */ { + prune_threads (); /* Get rid of the old shell threads */ #if 0 /* do we need this? */ - prune_threads (1); /* Get rid of the old shell threads */ renumber_threads (0); /* Give our threads reasonable names. */ #endif } --- gdb-7.2/gdb/thread.c.orig 2010-08-06 21:51:49.000000000 +0200 +++ gdb-7.2/gdb/thread.c 2011-03-28 09:04:52.000000000 +0200 @@ -61,7 +61,6 @@ static void info_threads_command (char *, int); static void thread_apply_command (char *, int); static void restore_current_thread (ptid_t); -static void prune_threads (void); /* Frontend view of the thread state. Possible extensions: stepping, finishing, until(ling),... */ @@ -518,7 +517,7 @@ return 1; } -static void +void prune_threads (void) { struct thread_info *tp, *next; --- gdb-7.2/gdb/gdbthread.h.orig 2010-01-12 22:40:24.000000000 +0100 +++ gdb-7.2/gdb/gdbthread.h 2011-03-28 09:03:55.000000000 +0200 @@ -213,6 +213,9 @@ /* Delete an existing thread list entry. */ extern void delete_thread (ptid_t); +/* Prune inactive threads */ +extern void prune_threads (void); + /* Delete an existing thread list entry, and be quiet about it. Used after the process this thread having belonged to having already exited, for example. */