diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2024-06-04 10:24:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-04 10:24:59 -0700 |
commit | 7dc84e225e11e37925db6f4f08269f447d2f2347 (patch) | |
tree | 61326c5301048f00532c202417b5a73148c80b88 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | dfd1a2f081bdc9566cdcd03937534ec4897c9056 (diff) | |
download | llvm-7dc84e225e11e37925db6f4f08269f447d2f2347.zip llvm-7dc84e225e11e37925db6f4f08269f447d2f2347.tar.gz llvm-7dc84e225e11e37925db6f4f08269f447d2f2347.tar.bz2 |
[lldb] Support reading DW_OP_piece from file address (#94026)
We received a bug report where someone was trying to print a global
variable without a process. This would succeed in a debug build but fail
in a on optimized build. We traced the issue back to the location being
described by a DW_OP_addr + DW_OP_piece.
The issue is that the DWARF expression evaluator only support reading
pieces from a load address. There's no reason it cannot do the same for
a file address, and indeed, that solves the problem.
I unsuccessfully tried to craft a test case to illustrate the original
example, using a global struct and trying to trick the compiler into
breaking it apart with SROA. Instead I wrote a unit test that uses a
mock target to read memory from.
rdar://127435923
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions