diff options
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp')
-rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp | 113 |
1 files changed, 47 insertions, 66 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp index 5fe0cc4d416..5ed9c6ab728 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp @@ -9,83 +9,64 @@ #include "DIERef.h" #include "DWARFCompileUnit.h" -#include "DWARFFormValue.h" #include "DWARFDebugInfo.h" +#include "DWARFFormValue.h" #include "SymbolFileDWARF.h" #include "SymbolFileDWARFDebugMap.h" -DIERef::DIERef() : - cu_offset(DW_INVALID_OFFSET), - die_offset(DW_INVALID_OFFSET) -{} +DIERef::DIERef() + : cu_offset(DW_INVALID_OFFSET), die_offset(DW_INVALID_OFFSET) {} -DIERef::DIERef(dw_offset_t c, dw_offset_t d) : - cu_offset(c), - die_offset(d) -{} +DIERef::DIERef(dw_offset_t c, dw_offset_t d) : cu_offset(c), die_offset(d) {} -DIERef::DIERef(lldb::user_id_t uid, SymbolFileDWARF *dwarf) : - cu_offset(DW_INVALID_OFFSET), - die_offset(uid&0xffffffff) -{ - SymbolFileDWARFDebugMap *debug_map = dwarf->GetDebugMapSymfile(); - if (debug_map) - { - const uint32_t oso_idx = debug_map->GetOSOIndexFromUserID(uid); - SymbolFileDWARF *actual_dwarf = debug_map->GetSymbolFileByOSOIndex(oso_idx); - if (actual_dwarf) - { - DWARFDebugInfo *debug_info = actual_dwarf->DebugInfo(); - if (debug_info) - { - DWARFCompileUnit *dwarf_cu = debug_info->GetCompileUnitContainingDIEOffset(die_offset); - if (dwarf_cu) - { - cu_offset = dwarf_cu->GetOffset(); - return; - } - } +DIERef::DIERef(lldb::user_id_t uid, SymbolFileDWARF *dwarf) + : cu_offset(DW_INVALID_OFFSET), die_offset(uid & 0xffffffff) { + SymbolFileDWARFDebugMap *debug_map = dwarf->GetDebugMapSymfile(); + if (debug_map) { + const uint32_t oso_idx = debug_map->GetOSOIndexFromUserID(uid); + SymbolFileDWARF *actual_dwarf = debug_map->GetSymbolFileByOSOIndex(oso_idx); + if (actual_dwarf) { + DWARFDebugInfo *debug_info = actual_dwarf->DebugInfo(); + if (debug_info) { + DWARFCompileUnit *dwarf_cu = + debug_info->GetCompileUnitContainingDIEOffset(die_offset); + if (dwarf_cu) { + cu_offset = dwarf_cu->GetOffset(); + return; } - die_offset = DW_INVALID_OFFSET; - } - else - { - cu_offset = uid>>32; + } } + die_offset = DW_INVALID_OFFSET; + } else { + cu_offset = uid >> 32; + } } -DIERef::DIERef(const DWARFFormValue& form_value) : - cu_offset(DW_INVALID_OFFSET), - die_offset(DW_INVALID_OFFSET) -{ - if (form_value.IsValid()) - { - const DWARFCompileUnit* dwarf_cu = form_value.GetCompileUnit(); - if (dwarf_cu) - { - if (dwarf_cu->GetBaseObjOffset() != DW_INVALID_OFFSET) - cu_offset = dwarf_cu->GetBaseObjOffset(); - else - cu_offset = dwarf_cu->GetOffset(); - } - die_offset = form_value.Reference(); +DIERef::DIERef(const DWARFFormValue &form_value) + : cu_offset(DW_INVALID_OFFSET), die_offset(DW_INVALID_OFFSET) { + if (form_value.IsValid()) { + const DWARFCompileUnit *dwarf_cu = form_value.GetCompileUnit(); + if (dwarf_cu) { + if (dwarf_cu->GetBaseObjOffset() != DW_INVALID_OFFSET) + cu_offset = dwarf_cu->GetBaseObjOffset(); + else + cu_offset = dwarf_cu->GetOffset(); } + die_offset = form_value.Reference(); + } } -lldb::user_id_t -DIERef::GetUID(SymbolFileDWARF *dwarf) const -{ - //---------------------------------------------------------------------- - // Each SymbolFileDWARF will set its ID to what is expected. - // - // SymbolFileDWARF, when used for DWARF with .o files on MacOSX, has the - // ID set to the compile unit index. - // - // SymbolFileDWARFDwo sets the ID to the compile unit offset. - //---------------------------------------------------------------------- - if (dwarf) - return dwarf->GetID() | die_offset; - else - return LLDB_INVALID_UID; +lldb::user_id_t DIERef::GetUID(SymbolFileDWARF *dwarf) const { + //---------------------------------------------------------------------- + // Each SymbolFileDWARF will set its ID to what is expected. + // + // SymbolFileDWARF, when used for DWARF with .o files on MacOSX, has the + // ID set to the compile unit index. + // + // SymbolFileDWARFDwo sets the ID to the compile unit offset. + //---------------------------------------------------------------------- + if (dwarf) + return dwarf->GetID() | die_offset; + else + return LLDB_INVALID_UID; } - |