patches/gdb/6.4/120-thread-timeout.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 23 14:48:10 2008 +0000 (2008-09-23)
changeset 872 fd4bf138f08f
parent 96 aa1a9fbd6eb8
permissions -rw-r--r--
Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.

/trunk/scripts/build/libc/glibc.sh | 14 2 12 0 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
     1 --- gdb-6.3.org/gdb/gdbserver/thread-db.c	2004-10-17 02:42:00.000000000 +0900
     2 +++ gdb-6.3/gdb/gdbserver/thread-db.c	2005-01-27 12:19:29.000000000 +0900
     3 @@ -21,6 +21,7 @@
     4     Foundation, Inc., 59 Temple Place - Suite 330,
     5     Boston, MA 02111-1307, USA.  */
     6  
     7 +#include <unistd.h>
     8  #include "server.h"
     9  
    10  #include "linux-low.h"
    11 @@ -142,6 +143,7 @@
    12    td_event_msg_t msg;
    13    td_err_e err;
    14    struct inferior_linux_data *tdata;
    15 +  int timeout;
    16  
    17    if (debug_threads)
    18      fprintf (stderr, "Thread creation event.\n");
    19 @@ -152,7 +154,13 @@
    20       In the LinuxThreads implementation, this is safe,
    21       because all events come from the manager thread
    22       (except for its own creation, of course).  */
    23 -  err = td_ta_event_getmsg (thread_agent, &msg);
    24 +  for (timeout = 0; timeout < 50000; timeout++)
    25 +    {
    26 +      err = td_ta_event_getmsg (thread_agent, &msg);
    27 +      if (err != TD_NOMSG)
    28 +	break;
    29 +      usleep(1000);
    30 +    }
    31    if (err != TD_OK)
    32      fprintf (stderr, "thread getmsg err: %s\n",
    33  	     thread_db_err_str (err));
    34