mugiwaraluffy56 wrote:

> Parsing `STT_TLS` doesn't work on FreeBSD. Is this implementation issue on 
> `Process/FreeBSD`?
> 
> ```
> ➜ ./build/bin/lldb 
> ./build/lldb-test-build.noindex/lang/cpp/thread_local/TestThreadLocal.test_thread_local_dwo/a.out
> (lldb) target create 
> "./build/lldb-test-build.noindex/lang/cpp/thread_local/TestThreadLocal.test_thread_local_dwo/a.out"
> Current executable set to 
> '/usr/src/llvm/tls/build/lldb-test-build.noindex/lang/cpp/thread_local/TestThreadLocal.test_thread_local_dwo/a.out'
>  (x86_64).
> (lldb) b main.cpp:10
> Breakpoint 1: where = a.out`main + 76 at main.cpp:10:3, address = 
> 0x00000000002016ec
> (lldb) r
> Process 24792 launched: 
> '/usr/src/llvm/tls/build/lldb-test-build.noindex/lang/cpp/thread_local/TestThreadLocal.test_thread_local_dwo/a.out'
>  (x86_64)
> Process 24792 stopped
> * thread #1, name = 'a.out', stop reason = breakpoint 1.1
>     frame #0: 0x00000000002016ec a.out`main(argc=1, argv=0x0000000820795330) 
> at main.cpp:10:3
>    7      thread_local int *tl_local_ptr = nullptr;
>    8      tl_local_ptr = &tl_local_int;
>    9      tl_local_int++;
> -> 10     return 0; // Set breakpoint here
>           ^
>    11   }
> (lldb) expr tl_local_int + 1
> 
> error: Couldn't materialize: couldn't get the value of variable tl_local_int: 
> no TLS data currently exists for this thread
> error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression]
> ```

This PR only fixes STT_TLS symbol parsing (recognizing the symbol type in the 
ELF table). The runtime TLS variable evaluation you're showing is a separate 
issue in the Process plugin .My PR doesn't address that. The yaml test confirms 
parsing works correctly.

https://github.com/llvm/llvm-project/pull/178975
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to