On Tue, 14 May 2019 13:38:57 +0200, Florian Weimer via lldb-dev wrote:
> The target process has loaded libpthread.so.0, so it's not the usual
> problem of libthread_db not working without libpthread.
> 
> On the other hand, I realize now that the lldb command cannot access TLS
> variables, either.  Is this expected to work at all?

TLS is implemented only for FreeBSD as there is
FreeBSDThread::GetThreadPointer() but on Linux it falls back to unimplemented:
        lldb::addr_t Thread::GetThreadPointer() { return LLDB_INVALID_ADDRESS; }

On Linux it uses DynamicLoaderPOSIXDYLD::GetThreadLocalData() which may work
without libthread_db as it is reading "_thread_db_*" symbols in
DYLDRendezvous::GetThreadInfo().  But it needs that GetThreadPointer() which
could get implemented (for x86_64) by reading %fs_base.  LLDB currently does
not know anything about %fs_base+%gs_base.

Is it a good idea to implement %fs_base+%gs_base to make TLS working on Linux?


Jan
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to