mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-02 13:21:43 +00:00
Move DIContext.h to common DebugInfo location.
This will enable us to create a PDBContext so as to expose some amount of debug info functionality through a common interace. Differential Revision: http://reviews.llvm.org/D9205 Reviewed by: Alexey Samsonov git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235612 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1aa9710c60
commit
45e7e93c6f
@ -113,25 +113,16 @@ enum DIDumpType {
|
||||
DIDT_AppleObjC
|
||||
};
|
||||
|
||||
// In place of applying the relocations to the data we've read from disk we use
|
||||
// a separate mapping table to the side and checking that at locations in the
|
||||
// dwarf where we expect relocated values. This adds a bit of complexity to the
|
||||
// dwarf parsing/extraction at the benefit of not allocating memory for the
|
||||
// entire size of the debug info sections.
|
||||
typedef DenseMap<uint64_t, std::pair<uint8_t, int64_t> > RelocAddrMap;
|
||||
|
||||
class DIContext {
|
||||
public:
|
||||
enum DIContextKind {
|
||||
CK_DWARF
|
||||
CK_DWARF,
|
||||
CK_PDB
|
||||
};
|
||||
DIContextKind getKind() const { return Kind; }
|
||||
|
||||
DIContext(DIContextKind K) : Kind(K) {}
|
||||
virtual ~DIContext();
|
||||
|
||||
/// getDWARFContext - get a context for binary DWARF data.
|
||||
static DIContext *getDWARFContext(const object::ObjectFile &Obj);
|
||||
virtual ~DIContext() {}
|
||||
|
||||
virtual void dump(raw_ostream &OS, DIDumpType DumpType = DIDT_All) = 0;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFDebugAranges.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFDebugFrame.h"
|
||||
@ -25,6 +25,13 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
// In place of applying the relocations to the data we've read from disk we use
|
||||
// a separate mapping table to the side and checking that at locations in the
|
||||
// dwarf where we expect relocated values. This adds a bit of complexity to the
|
||||
// dwarf parsing/extraction at the benefit of not allocating memory for the
|
||||
// entire size of the debug info sections.
|
||||
typedef DenseMap<uint64_t, std::pair<uint8_t, int64_t> > RelocAddrMap;
|
||||
|
||||
/// DWARFContext
|
||||
/// This data structure is the top level entity that deals with dwarf debug
|
||||
/// information parsing. The actual data is supplied through pure virtual
|
||||
|
@ -11,7 +11,7 @@
|
||||
#define LLVM_LIB_DEBUGINFO_DWARFDEBUGINFOENTRY_H
|
||||
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
|
@ -10,7 +10,7 @@
|
||||
#ifndef LLVM_LIB_DEBUGINFO_DWARFDEBUGLINE_H
|
||||
#define LLVM_LIB_DEBUGINFO_DWARFDEBUGLINE_H
|
||||
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFRelocMap.h"
|
||||
#include "llvm/Support/DataExtractor.h"
|
||||
#include <map>
|
||||
|
@ -1,5 +1,4 @@
|
||||
add_llvm_library(LLVMDebugInfoDWARF
|
||||
DIContext.cpp
|
||||
DWARFAbbreviationDeclaration.cpp
|
||||
DWARFAcceleratorTable.cpp
|
||||
DWARFCompileUnit.cpp
|
||||
@ -19,4 +18,5 @@ add_llvm_library(LLVMDebugInfoDWARF
|
||||
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo/DWARF
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/DebugInfo
|
||||
)
|
||||
|
@ -1,18 +0,0 @@
|
||||
//===-- DIContext.cpp -----------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
using namespace llvm;
|
||||
|
||||
DIContext::~DIContext() {}
|
||||
|
||||
DIContext *DIContext::getDWARFContext(const object::ObjectFile &Obj) {
|
||||
return new DWARFContextInMemory(Obj);
|
||||
}
|
@ -256,7 +256,7 @@ DWARFUnit::DWOHolder::DWOHolder(StringRef DWOPath)
|
||||
return;
|
||||
DWOFile = std::move(Obj.get());
|
||||
DWOContext.reset(
|
||||
cast<DWARFContext>(DIContext::getDWARFContext(*DWOFile.getBinary())));
|
||||
cast<DWARFContext>(new DWARFContextInMemory(*DWOFile.getBinary())));
|
||||
if (DWOContext->getNumDWOCompileUnits() > 0)
|
||||
DWOU = DWOContext->getDWOCompileUnitAtIndex(0);
|
||||
}
|
||||
|
@ -16,7 +16,8 @@
|
||||
#include "IntelJITEventsWrapper.h"
|
||||
#include "llvm/ADT/DenseMap.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
#include "llvm/ExecutionEngine/JITEventListener.h"
|
||||
#include "llvm/IR/DebugInfo.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
@ -102,7 +103,7 @@ void IntelJITEventListener::NotifyObjectEmitted(
|
||||
|
||||
// Get the address of the object image for use as a unique identifier
|
||||
const void* ObjData = DebugObj.getData().data();
|
||||
DIContext* Context = DIContext::getDWARFContext(DebugObj);
|
||||
DIContext* Context = new DWARFContextInMemory(DebugObj);
|
||||
MethodAddressVector Functions;
|
||||
|
||||
// Use symbol info to iterate functions in the object.
|
||||
|
@ -13,7 +13,8 @@
|
||||
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
#include "llvm/Object/ObjectFile.h"
|
||||
#include "llvm/Object/RelocVisitor.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
@ -86,7 +87,7 @@ static void DumpInput(StringRef Filename) {
|
||||
}
|
||||
ObjectFile &Obj = *ObjOrErr.get();
|
||||
|
||||
std::unique_ptr<DIContext> DICtx(DIContext::getDWARFContext(Obj));
|
||||
std::unique_ptr<DIContext> DICtx(new DWARFContextInMemory(Obj));
|
||||
|
||||
outs() << Filename
|
||||
<< ":\tfile format " << Obj.getFileFormatName() << "\n\n";
|
||||
|
@ -17,7 +17,8 @@
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCContext.h"
|
||||
#include "llvm/MC/MCDisassembler.h"
|
||||
@ -6115,7 +6116,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
|
||||
}
|
||||
|
||||
// Setup the DIContext
|
||||
diContext.reset(DIContext::getDWARFContext(*DbgObj));
|
||||
diContext.reset(new DWARFContextInMemory(*DbgObj));
|
||||
}
|
||||
|
||||
if (DumpSections.size() == 0)
|
||||
|
@ -12,7 +12,8 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
#include "llvm/ExecutionEngine/RTDyldMemoryManager.h"
|
||||
#include "llvm/ExecutionEngine/RuntimeDyld.h"
|
||||
#include "llvm/ExecutionEngine/RuntimeDyldChecker.h"
|
||||
@ -227,7 +228,7 @@ static int printLineInfoForInput() {
|
||||
OwningBinary<ObjectFile> DebugObj = LoadedObjInfo->getObjectForDebug(Obj);
|
||||
|
||||
std::unique_ptr<DIContext> Context(
|
||||
DIContext::getDWARFContext(*DebugObj.getBinary()));
|
||||
new DWARFContextInMemory(*DebugObj.getBinary()));
|
||||
|
||||
// Use symbol info to iterate functions in the object.
|
||||
for (object::symbol_iterator I = DebugObj.getBinary()->symbol_begin(),
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "LLVMSymbolize.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
||||
#include "llvm/Object/ELFObjectFile.h"
|
||||
#include "llvm/Object/MachO.h"
|
||||
#include "llvm/Support/Casting.h"
|
||||
@ -460,7 +461,7 @@ LLVMSymbolizer::getOrCreateModuleInfo(const std::string &ModuleName) {
|
||||
Modules.insert(make_pair(ModuleName, (ModuleInfo *)nullptr));
|
||||
return nullptr;
|
||||
}
|
||||
DIContext *Context = DIContext::getDWARFContext(*Objects.second);
|
||||
DIContext *Context = new DWARFContextInMemory(*Objects.second);
|
||||
assert(Context);
|
||||
ModuleInfo *Info = new ModuleInfo(Objects.first, Context);
|
||||
Modules.insert(make_pair(ModuleName, Info));
|
||||
|
@ -14,7 +14,7 @@
|
||||
#define LLVM_TOOLS_LLVM_SYMBOLIZER_LLVMSYMBOLIZE_H
|
||||
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/DebugInfo/DWARF/DIContext.h"
|
||||
#include "llvm/DebugInfo/DIContext.h"
|
||||
#include "llvm/Object/MachOUniversal.h"
|
||||
#include "llvm/Object/ObjectFile.h"
|
||||
#include "llvm/Support/DataExtractor.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user