[all-commits] [llvm/llvm-project] 7dc84e: [lldb] Support reading DW_OP_piece from file addre...

Jonas Devlieghere via All-commits all-commits at lists.llvm.org
Tue Jun 4 10:25:21 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7dc84e225e11e37925db6f4f08269f447d2f2347
      https://github.com/llvm/llvm-project/commit/7dc84e225e11e37925db6f4f08269f447d2f2347
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2024-06-04 (Tue, 04 Jun 2024)

  Changed paths:
    M lldb/include/lldb/Target/Target.h
    M lldb/source/Expression/DWARFExpression.cpp
    M lldb/unittests/Expression/DWARFExpressionTest.cpp

  Log Message:
  -----------
  [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



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list