Files
clang-p2996/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.h
Zachary Turner 611d1f98c5 Delete more dead code.
All of this is code that is unreferenced.  Removing as much of
this as possible makes it more easy to determine what functionality
is missing and/or shared between LLVM and LLDB's DWARF interfaces.

llvm-svn: 356509
2019-03-19 20:08:56 +00:00

64 lines
2.3 KiB
C++

//===-- DWARFDebugArangeSet.h -----------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef SymbolFileDWARF_DWARFDebugArangeSet_h_
#define SymbolFileDWARF_DWARFDebugArangeSet_h_
#include "SymbolFileDWARF.h"
#include <vector>
class SymbolFileDWARF;
class DWARFDebugArangeSet {
public:
struct Header {
uint32_t length; // The total length of the entries for that set, not
// including the length field itself.
uint16_t version; // The DWARF version number
uint32_t cu_offset; // The offset from the beginning of the .debug_info
// section of the compilation unit entry referenced by
// the table.
uint8_t addr_size; // The size in bytes of an address on the target
// architecture. For segmented addressing, this is the
// size of the offset portion of the address
uint8_t seg_size; // The size in bytes of a segment descriptor on the target
// architecture. If the target system uses a flat address
// space, this value is 0.
};
struct Descriptor {
dw_addr_t address;
dw_addr_t length;
dw_addr_t end_address() const { return address + length; }
};
DWARFDebugArangeSet();
void Clear();
void SetOffset(uint32_t offset) { m_offset = offset; }
llvm::Error extract(const lldb_private::DWARFDataExtractor &data,
lldb::offset_t *offset_ptr);
dw_offset_t FindAddress(dw_addr_t address) const;
size_t NumDescriptors() const { return m_arange_descriptors.size(); }
const Header &GetHeader() const { return m_header; }
const Descriptor &GetDescriptorRef(uint32_t i) const {
return m_arange_descriptors[i];
}
protected:
typedef std::vector<Descriptor> DescriptorColl;
typedef DescriptorColl::iterator DescriptorIter;
typedef DescriptorColl::const_iterator DescriptorConstIter;
uint32_t m_offset;
Header m_header;
DescriptorColl m_arange_descriptors;
};
#endif // SymbolFileDWARF_DWARFDebugArangeSet_h_