[RFC PATCH] nptl_db/db_info: fix the incorrect initial size for dtvp

Junling Zheng zhengjunling at huawei.com
Fri Aug 7 02:28:10 UTC 2015


Ping again...

This patch fixed the following issue:
http://lists.uclibc.org/pipermail/uclibc/2015-May/048966.html

Does anybody suffer this problem ?

On 2015/7/31 18:37, Junling Zheng wrote:
> 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 <zhengjunling at 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 at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
> 
> 




More information about the uClibc mailing list