On 23/10/2021 14:04, Martin via fpc-devel wrote:
Could anyone from the team comment on the following issue please?
https://gitlab.com/freepascal.org/lazarus/lazarus/-/merge_requests/28

It seems with -O2 FPC may set the location of a variable to a register (which is correct).
But it then attempts
   DW_OP_push_object_address, DW_OP_deref
which may not be correct (not sure, but read my big comment on the issue)

While -O2 is normally not for debugging, it may still be desirable that debug info is at least conform to the DWARF standard.

Looking at GDB.

From what I can see, current gdb (git main) fails in the IDE, on the "ptype s", because the upper bound is expected to be a constant, but it is not. (gdb bug)
Outside the IDE "p S" returns without error, but empty result.


I looked at the code "expr.c"
DW_OP_deref will always call
        this->read_mem (buf, addr, addr_size);

So even if it gets a value from the register, gdb (most likely) would not take the register content as the deref value, but deref it again.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to