[PATCH] D147066: [DWARFLinker][DWARFv5] Add handling of DW_OP_addrx and DW_OP_constx expression operands.

Alexey Lapshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 14 04:27:25 PDT 2023


avl added a comment.

In D147066#4420549 <https://reviews.llvm.org/D147066#4420549>, @Michael137 wrote:

> Looks like this broke the lldb matrix bots for DWARFv2: https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-matrix/6580/execution/node/54/log/
>
>   ********************
>   Failed Tests (2):
>     lldb-api :: lang/c/tls_globals/TestTlsGlobals.py
>     lldb-api :: lang/cpp/thread_local/TestThreadLocal.py
>
> The problem is that dsymutil strips out thread_local variables when the binary is compiled with `-gdwarf-2`.
>
> Reproducer:
>
>   int storage = 45;                          
>   thread_local int tl_global_int = 123;      
>   thread_local int *tl_global_ptr = &storage;
>                                              
>   int main(int argc, char **argv) {          
>     thread_local int tl_local_int = 321;     
>     thread_local int *tl_local_ptr = nullptr;
>     tl_local_ptr = &tl_local_int;            
>     tl_local_int++;                          
>     return 0; // Set breakpoint here         
>   }                                          
>   
>   clang++ -g -O0 -gdwarf-2 -c main.cpp -o main.o -std=c++2a
>   clang++ main.o -o a.out
>   dsymutil a.out
>   dwarfdump a.out.dSYM --find tl_global_ptr
>
> Observe that there is no entry for `tl_global_ptr` anymore. Compiling with `-gdwarf-4` doesn't behave this way.

Thank you for reporting the issue. Will take a look.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147066/new/

https://reviews.llvm.org/D147066



More information about the llvm-commits mailing list