From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13280 invoked by alias); 25 Jun 2007 23:20:40 -0000 Received: (qmail 13203 invoked by uid 22791); 25 Jun 2007 23:20:39 -0000 X-Spam-Check-By: sourceware.org Received: from mu-out-0910.google.com (HELO mu-out-0910.google.com) (209.85.134.187) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 25 Jun 2007 23:20:37 +0000 Received: by mu-out-0910.google.com with SMTP id g7so1899591muf for ; Mon, 25 Jun 2007 16:20:34 -0700 (PDT) Received: by 10.82.127.14 with SMTP id z14mr13638949buc.1182813634731; Mon, 25 Jun 2007 16:20:34 -0700 (PDT) Received: by 10.82.136.19 with HTTP; Mon, 25 Jun 2007 16:20:34 -0700 (PDT) Message-ID: Date: Mon, 25 Jun 2007 23:20:00 -0000 From: "John Bates" To: gdb@sourceware.org Subject: Re: thread local storage (__thread) variables aren't working in gdb 6.5/6.6? In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-06/txt/msg00281.txt.bz2 It would be helpful to update the GDB man/info/docs to state that thread local storage is not supported. It would also help to print an error when attempting to access TLS __thread variable that says "thread local storage is not supported." Currently, GDB implies that __thread variables are bad addresses--for example, "Cannot access memory at address 0x0". I have verified the same result in GDB 6.4, 6.5 and 6.6, with and without libpthread linked with the ELF. A simple test case is in the email below if anyone is interested in checking this. Best regards, John On 6/19/07, John Bates wrote: > I can't find any confirmation of support or non-support of thread > local storage on the web or in the gdb documentation. I already tried > 6.6 and it was the same problem. The test below seems to confirm > non-support on my fedora core 6 (kernel 2.6.18) x86 distribution with > gdb 6.5. Please let me know if I am doing something wrong for > debugging __thread global variables. > > Thanks, > John > > > --- begin main.cpp --- > __thread int tlstest = 5; > > int main() > { > tlstest = 4; // line 5 > return 0; > } > > --- begin Makefile --- > CXXFLAGS += -g > main : main.o > > jbates@localhost:~/samples/tls_test$ make > g++ -g -c -o main.o main.cpp > cc main.o -o main > jbates@localhost:~/samples/tls_test$ gdb main > GNU gdb Red Hat Linux (6.5-15.fc6rh) > Copyright (C) 2006 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "i386-redhat-linux-gnu"...Using host > libthread_db library "/lib/libthread_db.so.1". > > (gdb) b main.cpp:5 > Breakpoint 1 at 0x8048352: file main.cpp, line 5. > (gdb) run > Starting program: /home/jbates/samples/tls_test/main > > Breakpoint 1, main () at main.cpp:5 > 5 tlstest = 4; > (gdb) p tlstest > Cannot access memory at address 0x0 > (gdb) >