mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Move DebugInfo to DebugInfo/DWARF.
In preparation for adding PDB support to LLVM, this moves the DWARF parsing code to its own subdirectory under DebugInfo, and renames LLVMDebugInfo to LLVMDebugInfoDWARF. This is purely a mechanical / build system change. Differential Revision: http://reviews.llvm.org/D7269 Reviewed by: Eric Christopher git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227586 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
70
include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
Normal file
70
include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
Normal file
@@ -0,0 +1,70 @@
|
||||
//===-- DWARFDebugArangeSet.h -----------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIB_DEBUGINFO_DWARFDEBUGARANGESET_H
|
||||
#define LLVM_LIB_DEBUGINFO_DWARFDEBUGARANGESET_H
|
||||
|
||||
#include "llvm/ADT/iterator_range.h"
|
||||
#include "llvm/Support/DataExtractor.h"
|
||||
#include <vector>
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class raw_ostream;
|
||||
|
||||
class DWARFDebugArangeSet {
|
||||
public:
|
||||
struct Header {
|
||||
// The total length of the entries for that set, not including the length
|
||||
// field itself.
|
||||
uint32_t Length;
|
||||
// The offset from the beginning of the .debug_info section of the
|
||||
// compilation unit entry referenced by the table.
|
||||
uint32_t CuOffset;
|
||||
// The DWARF version number.
|
||||
uint16_t Version;
|
||||
// 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 AddrSize;
|
||||
// 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.
|
||||
uint8_t SegSize;
|
||||
};
|
||||
|
||||
struct Descriptor {
|
||||
uint64_t Address;
|
||||
uint64_t Length;
|
||||
uint64_t getEndAddress() const { return Address + Length; }
|
||||
};
|
||||
|
||||
private:
|
||||
typedef std::vector<Descriptor> DescriptorColl;
|
||||
typedef iterator_range<DescriptorColl::const_iterator> desc_iterator_range;
|
||||
|
||||
uint32_t Offset;
|
||||
Header HeaderData;
|
||||
DescriptorColl ArangeDescriptors;
|
||||
|
||||
public:
|
||||
DWARFDebugArangeSet() { clear(); }
|
||||
void clear();
|
||||
bool extract(DataExtractor data, uint32_t *offset_ptr);
|
||||
void dump(raw_ostream &OS) const;
|
||||
|
||||
uint32_t getCompileUnitDIEOffset() const { return HeaderData.CuOffset; }
|
||||
|
||||
desc_iterator_range descriptors() const {
|
||||
return desc_iterator_range(ArangeDescriptors.begin(),
|
||||
ArangeDescriptors.end());
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user