Ping... On 2015/7/20 21:33, Junling Zheng wrote: > When debugging a program on ARMv7 with thread-local storage declared using > "__thread", attempting to print a thread-local variable will result in the > following message: > > Cannot find thread-local storage for Thread <snip> (LWP <snip>), executable > file /tmp/tls: capability not available > > This can be traced back to uclibc libpthread/nptl_db/td_thr_tls_get_addr.c > which gdb uses to look up the address of the TLS. The function returns > TD_NOCAPAB due to a mismatch in size between the DTV pointer and the size > recorded in the db description. The problem lies in > libpthread/nptl_db/db_info.c > which initializes the db with the sizeof the union dtv. Instead it should > be the sizeof a pointer to union dtv. > > Fixed the initial size for dtvp to sizeof a pointer, instead of sizeof > the union. > > Refer to: > http://sourceware.org/ml/libc-alpha/2006-10/msg00088.html > https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=416b630981788c1f08e746e19765aa0e5c2a1360 > > Signed-off-by: Junling Zheng <zhengjunl...@huawei.com> > --- > libpthread/nptl_db/db_info.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libpthread/nptl_db/db_info.c b/libpthread/nptl_db/db_info.c > index a57a053..159a027 100644 > --- a/libpthread/nptl_db/db_info.c > +++ b/libpthread/nptl_db/db_info.c > @@ -60,7 +60,7 @@ extern bool __nptl_initial_report_events; > i.e. at the very end of the area covered by TLS_PRE_TCB_SIZE. */ > DESC (_thread_db_pthread_dtvp, > TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv) > - - (TLS_TCB_SIZE == 0 ? sizeof (tcbhead_t) : 0), union dtv) > + - (TLS_TCB_SIZE == 0 ? sizeof (tcbhead_t) : 0), union dtv *) > #endif > > >
_______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc