[PATCH] D59687: [DebugInfo] Prologue inserter need to insert DW_OP_deref_size

Paul Robinson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 16 07:23:31 PDT 2019


probinson added a comment.

In D59687#1468536 <https://reviews.llvm.org/D59687#1468536>, @markus wrote:

> The Chromium compilation segfault comes down to two issues:
>
> 1. `DW_OP_deref_size` is supposed to take a single byte argument (and not a ULEB128). If a `size` argument larger than 127 was used ULEB128 does not encode the same way as data1 so the extractor in `DwarfDebug::emitDebugLocEntry` looses track and that results in the crash.


DWARF says that's illegal.  The deref is fetching a value to push onto the expression stack.  "This operand is a 1-byte unsigned integral constant whose value may not be larger than the size of the generic type."

It sounds like you're trying to do this with aggregate types, and that won't work. Only base types (for DWARF 5) or address-like types (for DWARF <= 4) should end up on the stack.


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

https://reviews.llvm.org/D59687





More information about the llvm-commits mailing list