labath wrote:

> It is the combination of the first and third. For completeness.
> 
> we do an step-over, which lands us at an instruction, which happens to be the 
> first instruction of an inlined function. lldb-dap takes the PC value and 
> resolves it to a function/block on its own. This returns the inlined function 
> line entry (because the resolving function tries to be as accurate as 
> possible).
> 
> This only happens in lldb-dap not lldb.

okay, so would something like this be sufficient to reproduce the issue (you 
can put the functions in different files as needed):
```
void __attribute__((noinline)) fn1() {}
void __attribute__((always_inline)) fn2() { fn1(); }

int main() {
  fn1();
  fn2();
}
```

Stop and the `fn1` line, step over the call to fn1(), which should land you at 
the call to fn1 (inlined through fn2, you can use a different function to make 
it clearer). lldb-dap should show you stopped at the fn2() line. Probably best 
to build the whole program with -O1 (CFLAGS_EXTRAS=-O1), to ensure the compiler 
doesn't insert any unnecessary goo between the two calls.

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

Reply via email to