Michael137 wrote:

> While logically correct I think we might have to teach LLDB how to handle 
> this. LLDB has a special "frame recognizer" where it looks for frames using 
> this fake debug info mechanism (e.g. __builtin_verbose_trap) and it assumes 
> the frame below it is the real source code and automatically selects this 
> frame when trapping so that the user sees the correct source location when 
> the trap is hit. If the frame below the fake frame isn't the user's code and 
> is instead another fake frame this won't work properly.

Yea everything that  @delcypher said here is accurate from the LLDB-side. 
Here's the logic that LLDB uses to pick which frame to display: 
https://github.com/llvm/llvm-project/blob/9ba332f9963561bb5ac6933266afe38eb8fde8cd/lldb/source/Target/VerboseTrapFrameRecognizer.cpp#L22-L50

Currently we just pick the frame just above the fake inlined frame (and skip 
over any `std::` frames). We can definitely adjust the heuristic to accommodate 
the case where we have another fake frame above the UBSan trap one.

> It's probably possible to make LLDB work with which ever top frame we decide 
> but we'd probably want the fake frame names be easily recognizable and stable 
> so that LLDB's feature continues to work reliably.

Agreed, for the `__builtin_verbose_trap` we picked `__clang_trap_msg` as the 
prefix for the fake frame. And that's how LLDB knows to activate the frame 
recognizer: 
https://github.com/llvm/llvm-project/blob/9ba332f9963561bb5ac6933266afe38eb8fde8cd/lldb/source/Target/VerboseTrapFrameRecognizer.cpp#L145-L146

We'll want a similar prefix for any other fake frames that LLDB is supposed to 
recognize

> Given that -fsanitize-annotate-debug-info is off by default my suggestion is 
> that @anthonyhatran land the simplest version of his patch possible by not 
> concerning himself with  -fsanitize-annotate-debug-info at this stage. And 
> after it's landed we can then decide how to make the two features interact in 
> a way that the LLDB folks are happy with.

Agreed

https://github.com/llvm/llvm-project/pull/141997
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to