felipepiovezan wrote:
Are you saying that this line:
```
ValueObjectSP value_sp = frame->FindVariable(g_this);
```
Doesn't work if we are stopped at the prologue? Function arguments (also
`this`) should be available at any address, including the first instruction.
(assuming O0)
```
1 │ struct Blah {
2 │ int x;
3 │ double d;
4 │
5 │ double do_something(int x) {
6 │ return x + this->x;
7 │ }
8 │ };
9 │
10 │
11 │ void foo() {
12 │ Blah x{1, 2.0};
13 │ x.do_something(10);
14 │ }
```
We get:
```
clang++ test.cpp -g -O0 -c -o - | dwarfdump - --name do_something -c
0x00000077: DW_TAG_subprogram
DW_AT_low_pc (0x0000000000000034)
DW_AT_high_pc (0x000000000000005c)
DW_AT_APPLE_omit_frame_ptr (true)
DW_AT_frame_base (DW_OP_reg31 WSP)
DW_AT_object_pointer (0x00000087)
DW_AT_specification (0x00000055 "_ZN4Blah12do_somethingEi")
0x00000087: DW_TAG_formal_parameter
DW_AT_location (DW_OP_fbreg +8)
DW_AT_name ("this")
DW_AT_type (0x0000009c "Blah *")
DW_AT_artificial (true)
```
https://github.com/llvm/llvm-project/pull/209629
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits