> On Sep 24, 2019, at 11:36 AM, Nat! via lldb-dev <lldb-dev@lists.llvm.org> 
> wrote:
> 
> 
> 
> On 24.09.19 19:28, Jim Ingham wrote:
>> We've had many requests to elide some classes of entries in backtraces - 
>> like to mirror the Xcode display I mentioned previously.  Most of these 
>> requests don't depend on the functions being marked artificial.  So if we're 
>> going to do this, something more general than just "marked artificial" -> 
>> elided anyway.
>> 
>> Jim
>> 
>> 
> 
> Yes.
> 
> Having done a little further research... Artificial won't work for general 
> cases anyway, since it's restricted to inline code (for some reason) on gcc 
> and clang. I wonder why, since for a function the only real effect is to emit 
> DW_AT_artificial (AFAIK). The restriction seems arbitrary and DWARF wouldn't 
> mind.. But the compilers do, so it seems out anyway.
> 
> DW_AT_trampoline isn't supported by llvm. As I read the description of 
> DW_AT_trampoline, its more like a hardcoded vector (a->b), so not useful for 
> cases like objc_msgSend, where you don't know the destination a priori.
> 
> If I look at the DWARF spec, I don't see any other way to mark a function as 
> "boring". I still think this would be a good thing, as this would be useful 
> for other debuggers as well, which could instantly work. Also a lot of code 
> in the lldb Trampoline classes, for step-in and step-out could probably just 
> be removed.

I don't think that is right for "step-in".  As you said above, in the classic 
example of a trampoline: objc_msgSend you can't statically know the 
destination.  So the DWARF can't help resolve this; you would still need to do 
the work the lldb trampoline classes do at runtime.  

step-out past trampolines could just "keep stepping past boring functions".  
There's no need to support this for ObjC - at least the Apple & NeXT versions - 
since the dispatch function is a tail call function.  But we do do something 
like for Swift.  But that part is very little code compared to figuring how to 
step in correctly.

Jim


> 
> Ciao
>    Nat!
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

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

Reply via email to