DIERef.cpp revision 296417
1//===-- DIERef.cpp ----------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "DIERef.h" 11#include "DWARFCompileUnit.h" 12#include "DWARFFormValue.h" 13 14DIERef::DIERef() : 15 cu_offset(DW_INVALID_OFFSET), 16 die_offset(DW_INVALID_OFFSET) 17{} 18 19DIERef::DIERef(dw_offset_t d) : 20 cu_offset(DW_INVALID_OFFSET), 21 die_offset(d) 22{} 23 24DIERef::DIERef(dw_offset_t c, dw_offset_t d) : 25 cu_offset(c), 26 die_offset(d) 27{} 28 29DIERef::DIERef(lldb::user_id_t uid) : 30 cu_offset(uid>>32), 31 die_offset(uid&0xffffffff) 32{} 33 34DIERef::DIERef(const DWARFFormValue& form_value) : 35 cu_offset(DW_INVALID_OFFSET), 36 die_offset(DW_INVALID_OFFSET) 37{ 38 if (form_value.IsValid()) 39 { 40 const DWARFCompileUnit* dwarf_cu = form_value.GetCompileUnit(); 41 if (dwarf_cu) 42 { 43 if (dwarf_cu->GetBaseObjOffset() != DW_INVALID_OFFSET) 44 cu_offset = dwarf_cu->GetBaseObjOffset(); 45 else 46 cu_offset = dwarf_cu->GetOffset(); 47 } 48 die_offset = form_value.Reference(); 49 } 50} 51 52lldb::user_id_t 53DIERef::GetUID() const 54{ 55 return ((lldb::user_id_t)cu_offset) << 32 | die_offset; 56} 57