[Lldb-commits] [PATCH] D17449: Handle the case when a variable is only valid in part of the enclosing scope

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Fri Feb 19 10:54:50 PST 2016


clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

DWARF already has support for this using location lists. I would rather see this done by having the DWARF parser modify the DWARF expression to be a location list based. I don't mean have the compiler change, but just how we store the location in the variable. This would mean the ONLY change will be in the DWARF parser. We don't need to track any ranges or anything in the variable this way.

So if you have a variable:

  DW_TAG_subprogram:
  DW_AT_name("main")
  DW_AT_low_pc(0x1000)
  DW_AT_high_pc(0x2000)
  
      DW_TAG_variable:
      DW_AT_name("a")
      DW_AT_start_scope (0x20)
      DW_AT_location (0x11 0x22 0x33) (location is described by a block of DW_OP_expression bytes)

Then we would make a location list expression where the DWARFExpression's type is switched from:

NonLocationList with bytes of 0x11, 0x22, 0x33

over to a DWARFExpression whose type is:

RegularLocationList with [0x1020-0x2000): 0x11, 0x22, 0x33

If that doesn't make sense let me know. If we do this, then the ONLY change is in the DWARF parser since we already support location list based expressions.


http://reviews.llvm.org/D17449





More information about the lldb-commits mailing list