[all-commits] [llvm/llvm-project] 9bb01e: [lldb/DWARF] Add is_dwo member to DWARFUnit

Pavel Labath via All-commits all-commits at lists.llvm.org
Thu Jan 9 04:16:50 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 9bb01efa49ca7f069bc7acba7e4c9bf64d972e79
      https://github.com/llvm/llvm-project/commit/9bb01efa49ca7f069bc7acba7e4c9bf64d972e79
  Author: Pavel Labath <pavel at labath.sk>
  Date:   2020-01-09 (Thu, 09 Jan 2020)

  Changed paths:
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.h
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFTypeUnit.h
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.h

  Log Message:
  -----------
  [lldb/DWARF] Add is_dwo member to DWARFUnit

Summary:
A skeleton unit can easily be detected by checking the m_dwo_symbol_file
member, but we cannot tell a split unit from a normal unit from the
"inside", which is sometimes useful.

This patch adds a m_is_dwo member to enable this, and align the code
with llvm::DWARFUnit. Right now it's only used to avoid creating a split
unit inside another split unit (which removes one override from
SymbolFileDWARFDwo and brings us a step closer to deleting it), but my
main motivation is fixing the handling of location lists in mixed v4&v5
files. This comes in a separate patch.

Reviewers: JDevlieghere, aprantl, clayborg

Subscribers: dblaikie, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D71750


  Commit: cd5da94d80b2b0f2bdb2d0157e24705a4cbd2a4e
      https://github.com/llvm/llvm-project/commit/cd5da94d80b2b0f2bdb2d0157e24705a4cbd2a4e
  Author: Pavel Labath <pavel at labath.sk>
  Date:   2020-01-09 (Thu, 09 Jan 2020)

  Changed paths:
    M lldb/include/lldb/Expression/DWARFExpression.h
    M lldb/source/Expression/DWARFExpression.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.h
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.h
    A lldb/test/Shell/SymbolFile/DWARF/debug_loc_and_loclists.s

  Log Message:
  -----------
  [lldb/DWARF] Fix mixed v4+v5 location lists

Summary:
Our code was expecting that a single (symbol) file contains only one
kind of location lists. This is not correct (on non-apple platforms, at
least) as a file can compile units with different dwarf versions.

This patch moves the deteremination of location list flavour down to the
compile unit level, fixing this problem. I have also tried to rougly
align the code with the llvm DWARFUnit. Fully matching the API is not
possible because of how lldb's DWARFExpression lives separately from the
rest of the DWARF code, but this is at least a step in the right
direction.

Reviewers: JDevlieghere, aprantl, clayborg

Subscribers: dblaikie, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D71751


Compare: https://github.com/llvm/llvm-project/compare/e315ce2bd3a5...cd5da94d80b2


More information about the All-commits mailing list