From e81d9d49145e432d917eea3a70d2ae74dcad1d89 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 30 Dec 2015 11:55:28 +0000 Subject: Vendor import of stripped lldb trunk r256633: https://llvm.org/svn/llvm-project/lldb/trunk@256633 --- source/Plugins/SymbolFile/DWARF/DIERef.cpp | 56 ++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 source/Plugins/SymbolFile/DWARF/DIERef.cpp (limited to 'source/Plugins/SymbolFile/DWARF/DIERef.cpp') diff --git a/source/Plugins/SymbolFile/DWARF/DIERef.cpp b/source/Plugins/SymbolFile/DWARF/DIERef.cpp new file mode 100644 index 0000000000000..c0754a1fdd542 --- /dev/null +++ b/source/Plugins/SymbolFile/DWARF/DIERef.cpp @@ -0,0 +1,56 @@ +//===-- DIERef.cpp ----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "DIERef.h" +#include "DWARFCompileUnit.h" +#include "DWARFFormValue.h" + +DIERef::DIERef() : + cu_offset(DW_INVALID_OFFSET), + die_offset(DW_INVALID_OFFSET) +{} + +DIERef::DIERef(dw_offset_t d) : + cu_offset(DW_INVALID_OFFSET), + 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) : + cu_offset(uid>>32), + die_offset(uid&0xffffffff) +{} + +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() const +{ + return ((lldb::user_id_t)cu_offset) << 32 | die_offset; +} -- cgit v1.2.3