[PATCH] D75326: [entry values] X86: Describe effects of MOV{8,16}ri (PR45053)

Vedant Kumar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 14:25:16 PST 2020


vsk added a comment.

Sorry for the delay here.

@dstenb wrote:

> When I print that in GDB 8.2.1, 0x5566 is printed instead of 0x11225566 which is the actual parameter value:

Yeah, this sounds like a debugger bug to me. The debugger should print something that indicates that the upper bits of "param" are unknown. Although, to be fair, lldb has the same bug (or it might be worse, and print out "param" as 0x00005566 -- it doesn't track the bits of a variable that are uncovered by pieces).

> The DW_OP_entry_value operation at the callee expects a value to be pushed to the DWARF stack when evaluating the DW_AT_call_value at the caller. How should/would that work with composite descriptions?

Well, in lldb at least, I think the idea is that while OP_piece doesn't push anything to the stack, it changes the debugger's notion of which bits in the evaluated result are "valid". So one way this could work is: the result of evaluating the DW_AT_call_value is pushed onto the stack when evaluating DW_OP_entry_value (and if it's e.g. a 2-byte piece, so be it).

All of which sounds a little iffy for me for what appears to be a pretty uncommon case (fwiw I was able to build all of clang & LNT for x86 without hitting this).


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75326/new/

https://reviews.llvm.org/D75326





More information about the llvm-commits mailing list