diff options
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/dsymutil/DwarfLinker.cpp | 36 | ||||
-rw-r--r-- | llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp | 6 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 4 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 4 | ||||
-rw-r--r-- | llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp | 4 | ||||
-rw-r--r-- | llvm/tools/obj2yaml/dwarf2yaml.cpp | 34 | ||||
-rw-r--r-- | llvm/tools/obj2yaml/macho2yaml.cpp | 8 | ||||
-rw-r--r-- | llvm/tools/obj2yaml/obj2yaml.h | 5 |
8 files changed, 51 insertions, 50 deletions
diff --git a/llvm/tools/dsymutil/DwarfLinker.cpp b/llvm/tools/dsymutil/DwarfLinker.cpp index 86621e3260f..94428bcab51 100644 --- a/llvm/tools/dsymutil/DwarfLinker.cpp +++ b/llvm/tools/dsymutil/DwarfLinker.cpp @@ -845,7 +845,7 @@ void DwarfStreamer::emitLocationsForUnit(const CompileUnit &Unit, MS->SwitchSection(MC->getObjectFileInfo()->getDwarfLocSection()); unsigned AddressSize = Unit.getOrigUnit().getAddressByteSize(); - const DWARFSection &InputSec = Dwarf.getLocSection(); + const DWARFSection &InputSec = Dwarf.getDWARFObj().getLocSection(); DataExtractor Data(InputSec.Data, Dwarf.isLittleEndian(), AddressSize); DWARFUnit &OrigUnit = Unit.getOrigUnit(); auto OrigUnitDie = OrigUnit.getUnitDIE(false); @@ -1301,7 +1301,7 @@ private: /// Construct the output DIE tree by cloning the DIEs we /// chose to keep above. If there are no valid relocs, then there's /// nothing to clone/emit. - void cloneAllCompileUnits(DWARFContextInMemory &DwarfContext); + void cloneAllCompileUnits(DWARFContext &DwarfContext); private: typedef DWARFAbbreviationDeclaration::AttributeSpec AttributeSpec; @@ -2873,7 +2873,8 @@ void DwarfLinker::patchRangesForUnit(const CompileUnit &Unit, DWARFDebugRangeList RangeList; const auto &FunctionRanges = Unit.getFunctionRanges(); unsigned AddressSize = Unit.getOrigUnit().getAddressByteSize(); - DWARFDataExtractor RangeExtractor(OrigDwarf.getRangeSection(), + DWARFDataExtractor RangeExtractor(OrigDwarf.getDWARFObj(), + OrigDwarf.getDWARFObj().getRangeSection(), OrigDwarf.isLittleEndian(), AddressSize); auto InvalidRange = FunctionRanges.end(), CurrRange = InvalidRange; DWARFUnit &OrigUnit = Unit.getOrigUnit(); @@ -2984,9 +2985,9 @@ void DwarfLinker::patchLineTableForUnit(CompileUnit &Unit, // Parse the original line info for the unit. DWARFDebugLine::LineTable LineTable; uint32_t StmtOffset = *StmtList; - DWARFDataExtractor LineExtractor(OrigDwarf.getLineSection(), - OrigDwarf.isLittleEndian(), - Unit.getOrigUnit().getAddressByteSize()); + DWARFDataExtractor LineExtractor( + OrigDwarf.getDWARFObj(), OrigDwarf.getDWARFObj().getLineSection(), + OrigDwarf.isLittleEndian(), Unit.getOrigUnit().getAddressByteSize()); LineTable.parse(LineExtractor, &StmtOffset); // This vector is the output line table. @@ -3086,7 +3087,7 @@ void DwarfLinker::patchLineTableForUnit(CompileUnit &Unit, LineTable.Prologue.OpcodeBase > 13) reportWarning("line table parameters mismatch. Cannot emit."); else { - StringRef LineData = OrigDwarf.getLineSection().Data; + StringRef LineData = OrigDwarf.getDWARFObj().getLineSection().Data; MCDwarfLineTableParams Params; Params.DWARF2LineOpcodeBase = LineTable.Prologue.OpcodeBase; Params.DWARF2LineBase = LineTable.Prologue.LineBase; @@ -3112,7 +3113,7 @@ void DwarfLinker::emitAcceleratorEntriesForUnit(CompileUnit &Unit) { void DwarfLinker::patchFrameInfoForObject(const DebugMapObject &DMO, DWARFContext &OrigDwarf, unsigned AddrSize) { - StringRef FrameData = OrigDwarf.getDebugFrameSection(); + StringRef FrameData = OrigDwarf.getDWARFObj().getDebugFrameSection(); if (FrameData.empty()) return; @@ -3323,9 +3324,9 @@ void DwarfLinker::loadClangModule(StringRef Filename, StringRef ModulePath, std::unique_ptr<CompileUnit> Unit; // Setup access to the debug info. - DWARFContextInMemory DwarfContext(*ErrOrObj); + auto DwarfContext = DWARFContext::create(*ErrOrObj); RelocationManager RelocMgr(*this); - for (const auto &CU : DwarfContext.compile_units()) { + for (const auto &CU : DwarfContext->compile_units()) { auto CUDie = CU->getUnitDIE(false); // Recursively get all modules imported by this one. if (!registerModuleReference(CUDie, *CU, ModuleMap, Indent)) { @@ -3365,11 +3366,10 @@ void DwarfLinker::loadClangModule(StringRef Filename, StringRef ModulePath, std::vector<std::unique_ptr<CompileUnit>> CompileUnits; CompileUnits.push_back(std::move(Unit)); DIECloner(*this, RelocMgr, DIEAlloc, CompileUnits, Options) - .cloneAllCompileUnits(DwarfContext); + .cloneAllCompileUnits(*DwarfContext); } -void DwarfLinker::DIECloner::cloneAllCompileUnits( - DWARFContextInMemory &DwarfContext) { +void DwarfLinker::DIECloner::cloneAllCompileUnits(DWARFContext &DwarfContext) { if (!Linker.Streamer) return; @@ -3438,11 +3438,11 @@ bool DwarfLinker::link(const DebugMap &Map) { } // Setup access to the debug info. - DWARFContextInMemory DwarfContext(*ErrOrObj); - startDebugObject(DwarfContext, *Obj); + auto DwarfContext = DWARFContext::create(*ErrOrObj); + startDebugObject(*DwarfContext, *Obj); // In a first phase, just read in the debug info and load all clang modules. - for (const auto &CU : DwarfContext.compile_units()) { + for (const auto &CU : DwarfContext->compile_units()) { auto CUDie = CU->getUnitDIE(false); if (Options.Verbose) { outs() << "Input compilation unit:"; @@ -3476,9 +3476,9 @@ bool DwarfLinker::link(const DebugMap &Map) { RelocMgr.resetValidRelocs(); if (RelocMgr.hasValidRelocs()) DIECloner(*this, RelocMgr, DIEAlloc, Units, Options) - .cloneAllCompileUnits(DwarfContext); + .cloneAllCompileUnits(*DwarfContext); if (!Options.NoOutput && !Units.empty()) - patchFrameInfoForObject(*Obj, DwarfContext, + patchFrameInfoForObject(*Obj, *DwarfContext, Units[0]->getOrigUnit().getAddressByteSize()); // Clean-up before starting working on the next object. diff --git a/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp b/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp index ec5e554d4f5..62235af31cd 100644 --- a/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp +++ b/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp @@ -94,7 +94,7 @@ static void error(StringRef Filename, std::error_code EC) { } static void DumpObjectFile(ObjectFile &Obj, Twine Filename) { - std::unique_ptr<DIContext> DICtx(new DWARFContextInMemory(Obj)); + std::unique_ptr<DIContext> DICtx = DWARFContext::create(Obj); outs() << Filename.str() << ":\tfile format " << Obj.getFileFormatName() << "\n\n"; @@ -131,8 +131,8 @@ static void DumpInput(StringRef Filename) { } static bool VerifyObjectFile(ObjectFile &Obj, Twine Filename) { - std::unique_ptr<DIContext> DICtx(new DWARFContextInMemory(Obj)); - + std::unique_ptr<DIContext> DICtx = DWARFContext::create(Obj); + // Verify the DWARF and exit with non-zero exit status if verification // fails. raw_ostream &stream = Quiet ? nulls() : outs(); diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 05c2c3f7c4c..3bab94d681a 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -1275,7 +1275,7 @@ static void ProcessMachO(StringRef Name, MachOObjectFile *MachOOF, printWeakBindTable(MachOOF); if (DwarfDumpType != DIDT_Null) { - std::unique_ptr<DIContext> DICtx(new DWARFContextInMemory(*MachOOF)); + std::unique_ptr<DIContext> DICtx = DWARFContext::create(*MachOOF); // Dump the complete DWARF structure. DIDumpOptions DumpOpts; DumpOpts.DumpType = DwarfDumpType; @@ -6594,7 +6594,7 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF, } // Setup the DIContext - diContext.reset(new DWARFContextInMemory(*DbgObj)); + diContext = DWARFContext::create(*DbgObj); } if (FilterSections.size() == 0) diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index d54b45515f0..c772204a8ed 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -62,8 +62,8 @@ #include <cctype> #include <cstring> #include <system_error> -#include <utility> #include <unordered_map> +#include <utility> using namespace llvm; using namespace object; @@ -2081,7 +2081,7 @@ static void DumpObject(ObjectFile *o, const Archive *a = nullptr) { if (PrintFaultMaps) printFaultMaps(o); if (DwarfDumpType != DIDT_Null) { - std::unique_ptr<DIContext> DICtx(new DWARFContextInMemory(*o)); + std::unique_ptr<DIContext> DICtx = DWARFContext::create(*o); // Dump the complete DWARF structure. DIDumpOptions DumpOpts; DumpOpts.DumpType = DwarfDumpType; diff --git a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp index ba130ce80be..daafcdfcc95 100644 --- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp +++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp @@ -324,8 +324,8 @@ static int printLineInfoForInput(bool LoadObjects, bool UseDebugObj) { } } - std::unique_ptr<DIContext> Context( - new DWARFContextInMemory(*SymbolObj,LoadedObjInfo.get())); + std::unique_ptr<DIContext> Context = + DWARFContext::create(*SymbolObj, LoadedObjInfo.get()); std::vector<std::pair<SymbolRef, uint64_t>> SymAddr = object::computeSymbolSizes(*SymbolObj); diff --git a/llvm/tools/obj2yaml/dwarf2yaml.cpp b/llvm/tools/obj2yaml/dwarf2yaml.cpp index d97eda30c03..9a9dcd86656 100644 --- a/llvm/tools/obj2yaml/dwarf2yaml.cpp +++ b/llvm/tools/obj2yaml/dwarf2yaml.cpp @@ -24,7 +24,7 @@ void dumpInitialLength(DataExtractor &Data, uint32_t &Offset, InitialLength.TotalLength64 = Data.getU64(&Offset); } -void dumpDebugAbbrev(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugAbbrev(DWARFContext &DCtx, DWARFYAML::Data &Y) { auto AbbrevSetPtr = DCtx.getDebugAbbrev(); if (AbbrevSetPtr) { for (auto AbbrvDeclSet : *AbbrevSetPtr) { @@ -48,8 +48,8 @@ void dumpDebugAbbrev(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpDebugStrings(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { - StringRef RemainingTable = DCtx.getStringSection(); +void dumpDebugStrings(DWARFContext &DCtx, DWARFYAML::Data &Y) { + StringRef RemainingTable = DCtx.getDWARFObj().getStringSection(); while (RemainingTable.size() > 0) { auto SymbolPair = RemainingTable.split('\0'); RemainingTable = SymbolPair.second; @@ -57,8 +57,9 @@ void dumpDebugStrings(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpDebugARanges(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { - DataExtractor ArangesData(DCtx.getARangeSection(), DCtx.isLittleEndian(), 0); +void dumpDebugARanges(DWARFContext &DCtx, DWARFYAML::Data &Y) { + DataExtractor ArangesData(DCtx.getDWARFObj().getARangeSection(), + DCtx.isLittleEndian(), 0); uint32_t Offset = 0; DWARFDebugArangeSet Set; @@ -79,7 +80,7 @@ void dumpDebugARanges(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -void dumpPubSection(DWARFContextInMemory &DCtx, DWARFYAML::PubSection &Y, +void dumpPubSection(DWARFContext &DCtx, DWARFYAML::PubSection &Y, StringRef Section) { DataExtractor PubSectionData(Section, DCtx.isLittleEndian(), 0); uint32_t Offset = 0; @@ -97,21 +98,22 @@ void dumpPubSection(DWARFContextInMemory &DCtx, DWARFYAML::PubSection &Y, } } -void dumpDebugPubSections(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugPubSections(DWARFContext &DCtx, DWARFYAML::Data &Y) { + const DWARFObject &D = DCtx.getDWARFObj(); Y.PubNames.IsGNUStyle = false; - dumpPubSection(DCtx, Y.PubNames, DCtx.getPubNamesSection()); + dumpPubSection(DCtx, Y.PubNames, D.getPubNamesSection()); Y.PubTypes.IsGNUStyle = false; - dumpPubSection(DCtx, Y.PubTypes, DCtx.getPubTypesSection()); + dumpPubSection(DCtx, Y.PubTypes, D.getPubTypesSection()); Y.GNUPubNames.IsGNUStyle = true; - dumpPubSection(DCtx, Y.GNUPubNames, DCtx.getGnuPubNamesSection()); + dumpPubSection(DCtx, Y.GNUPubNames, D.getGnuPubNamesSection()); Y.GNUPubTypes.IsGNUStyle = true; - dumpPubSection(DCtx, Y.GNUPubTypes, DCtx.getGnuPubTypesSection()); + dumpPubSection(DCtx, Y.GNUPubTypes, D.getGnuPubTypesSection()); } -void dumpDebugInfo(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugInfo(DWARFContext &DCtx, DWARFYAML::Data &Y) { for (const auto &CU : DCtx.compile_units()) { DWARFYAML::Unit NewUnit; NewUnit.Length.setLength(CU->getLength()); @@ -235,7 +237,7 @@ bool dumpFileEntry(DataExtractor &Data, uint32_t &Offset, return true; } -void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +void dumpDebugLines(DWARFContext &DCtx, DWARFYAML::Data &Y) { for (const auto &CU : DCtx.compile_units()) { auto CUDIE = CU->getUnitDIE(); if (!CUDIE) @@ -243,8 +245,8 @@ void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { if (auto StmtOffset = dwarf::toSectionOffset(CUDIE.find(dwarf::DW_AT_stmt_list))) { DWARFYAML::LineTable DebugLines; - DataExtractor LineData(DCtx.getLineSection().Data, DCtx.isLittleEndian(), - CU->getAddressByteSize()); + DataExtractor LineData(DCtx.getDWARFObj().getLineSection().Data, + DCtx.isLittleEndian(), CU->getAddressByteSize()); uint32_t Offset = *StmtOffset; dumpInitialLength(LineData, Offset, DebugLines.Length); uint64_t LineTableLength = DebugLines.Length.getLength(); @@ -344,7 +346,7 @@ void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { } } -std::error_code dwarf2yaml(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { +std::error_code dwarf2yaml(DWARFContext &DCtx, DWARFYAML::Data &Y) { dumpDebugAbbrev(DCtx, Y); dumpDebugStrings(DCtx, Y); dumpDebugARanges(DCtx, Y); diff --git a/llvm/tools/obj2yaml/macho2yaml.cpp b/llvm/tools/obj2yaml/macho2yaml.cpp index a1d107dc5af..fa81ce974ec 100644 --- a/llvm/tools/obj2yaml/macho2yaml.cpp +++ b/llvm/tools/obj2yaml/macho2yaml.cpp @@ -35,9 +35,9 @@ class MachODumper { ArrayRef<uint8_t> OpcodeBuffer, bool Lazy = false); void dumpExportTrie(std::unique_ptr<MachOYAML::Object> &Y); void dumpSymbols(std::unique_ptr<MachOYAML::Object> &Y); - void dumpDebugAbbrev(DWARFContextInMemory &DCtx, + void dumpDebugAbbrev(DWARFContext &DCtx, std::unique_ptr<MachOYAML::Object> &Y); - void dumpDebugStrings(DWARFContextInMemory &DCtx, + void dumpDebugStrings(DWARFContext &DCtx, std::unique_ptr<MachOYAML::Object> &Y); public: @@ -187,8 +187,8 @@ Expected<std::unique_ptr<MachOYAML::Object>> MachODumper::dump() { dumpLoadCommands(Y); dumpLinkEdit(Y); - DWARFContextInMemory DICtx(Obj); - if (auto Err = dwarf2yaml(DICtx, Y->DWARF)) + std::unique_ptr<DWARFContext> DICtx = DWARFContext::create(Obj); + if (auto Err = dwarf2yaml(*DICtx, Y->DWARF)) return errorCodeToError(Err); return std::move(Y); } diff --git a/llvm/tools/obj2yaml/obj2yaml.h b/llvm/tools/obj2yaml/obj2yaml.h index 69c753296ef..3e96659462b 100644 --- a/llvm/tools/obj2yaml/obj2yaml.h +++ b/llvm/tools/obj2yaml/obj2yaml.h @@ -29,13 +29,12 @@ std::error_code wasm2yaml(llvm::raw_ostream &Out, // Forward decls for dwarf2yaml namespace llvm { -class DWARFContextInMemory; +class DWARFContext; namespace DWARFYAML { struct Data; } } -std::error_code dwarf2yaml(llvm::DWARFContextInMemory &DCtx, - llvm::DWARFYAML::Data &Y); +std::error_code dwarf2yaml(llvm::DWARFContext &DCtx, llvm::DWARFYAML::Data &Y); #endif |