diff options
author | Zachary Turner <zturner@google.com> | 2015-04-23 17:37:47 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-04-23 17:37:47 +0000 |
commit | 45e7e93c6f04c9a59bafcbca3da0d6925fd7db71 (patch) | |
tree | 415e37407fce2677fee870720d19fc97bdc1ecf9 | |
parent | 1aa9710c60c872690d0d77c9d451a0e82dd7baeb (diff) |
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
-rw-r--r-- | include/llvm/DebugInfo/DIContext.h (renamed from include/llvm/DebugInfo/DWARF/DIContext.h) | 15 | ||||
-rw-r--r-- | include/llvm/DebugInfo/DWARF/DWARFContext.h | 9 | ||||
-rw-r--r-- | include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h | 2 | ||||
-rw-r--r-- | include/llvm/DebugInfo/DWARF/DWARFDebugLine.h | 2 | ||||
-rw-r--r-- | lib/DebugInfo/DWARF/CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/DebugInfo/DWARF/DIContext.cpp | 18 | ||||
-rw-r--r-- | lib/DebugInfo/DWARF/DWARFUnit.cpp | 2 | ||||
-rw-r--r-- | lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp | 5 | ||||
-rw-r--r-- | tools/llvm-dwarfdump/llvm-dwarfdump.cpp | 5 | ||||
-rw-r--r-- | tools/llvm-objdump/MachODump.cpp | 5 | ||||
-rw-r--r-- | tools/llvm-rtdyld/llvm-rtdyld.cpp | 5 | ||||
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.cpp | 3 | ||||
-rw-r--r-- | tools/llvm-symbolizer/LLVMSymbolize.h | 2 |
13 files changed, 30 insertions, 45 deletions
diff --git a/include/llvm/DebugInfo/DWARF/DIContext.h b/include/llvm/DebugInfo/DIContext.h index 622aa699c4..4fe1f0683a 100644 --- a/include/llvm/DebugInfo/DWARF/DIContext.h +++ b/include/llvm/DebugInfo/DIContext.h @@ -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; diff --git a/include/llvm/DebugInfo/DWARF/DWARFContext.h b/include/llvm/DebugInfo/DWARF/DWARFContext.h index 677242b121..e40d110cdb 100644 --- a/include/llvm/DebugInfo/DWARF/DWARFContext.h +++ b/include/llvm/DebugInfo/DWARF/DWARFContext.h @@ -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 diff --git a/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h b/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h index 1080327ada..f29d5fe9ec 100644 --- a/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h +++ b/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h @@ -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" diff --git a/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h b/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h index 0c564c49f6..37b22c2e82 100644 --- a/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h +++ b/include/llvm/DebugInfo/DWARF/DWARFDebugLine.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> diff --git a/lib/DebugInfo/DWARF/CMakeLists.txt b/lib/DebugInfo/DWARF/CMakeLists.txt index 8c6d495228..d5f8a6f24e 100644 --- a/lib/DebugInfo/DWARF/CMakeLists.txt +++ b/lib/DebugInfo/DWARF/CMakeLists.txt @@ -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 ) diff --git a/lib/DebugInfo/DWARF/DIContext.cpp b/lib/DebugInfo/DWARF/DIContext.cpp deleted file mode 100644 index a1c6ca4bd7..0000000000 --- a/lib/DebugInfo/DWARF/DIContext.cpp +++ /dev/null @@ -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); -} diff --git a/lib/DebugInfo/DWARF/DWARFUnit.cpp b/lib/DebugInfo/DWARF/DWARFUnit.cpp index d4ecd69e0a..406915a9e4 100644 --- a/lib/DebugInfo/DWARF/DWARFUnit.cpp +++ b/lib/DebugInfo/DWARF/DWARFUnit.cpp @@ -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); } diff --git a/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp b/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp index 41359000fb..ec67019947 100644 --- a/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp +++ b/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp @@ -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. diff --git a/tools/llvm-dwarfdump/llvm-dwarfdump.cpp b/tools/llvm-dwarfdump/llvm-dwarfdump.cpp index a99f57f503..c1cb0218ac 100644 --- a/tools/llvm-dwarfdump/llvm-dwarfdump.cpp +++ b/tools/llvm-dwarfdump/llvm-dwarfdump.cpp @@ -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"; diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index a491a37686..4fa6495f87 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -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) diff --git a/tools/llvm-rtdyld/llvm-rtdyld.cpp b/tools/llvm-rtdyld/llvm-rtdyld.cpp index 480032d3b6..7f254da5de 100644 --- a/tools/llvm-rtdyld/llvm-rtdyld.cpp +++ b/tools/llvm-rtdyld/llvm-rtdyld.cpp @@ -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(), diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp index 36061d7e68..c3988e1361 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.cpp +++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -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)); diff --git a/tools/llvm-symbolizer/LLVMSymbolize.h b/tools/llvm-symbolizer/LLVMSymbolize.h index c10922133f..ff848fceb2 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.h +++ b/tools/llvm-symbolizer/LLVMSymbolize.h @@ -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" |