diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp index b93b0cc9bf97..4f4a7375eaa5 100644 --- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp +++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.cpp @@ -30,6 +30,7 @@ #include "llvm/PassAnalysisSupport.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Target/TargetLoweringObjectFile.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetOptions.h" @@ -372,10 +373,6 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) { return make_error("no asm info for target " + TripleName, inconvertibleErrorCode()); - MOFI.reset(new MCObjectFileInfo); - MC.reset(new MCContext(MAI.get(), MRI.get(), MOFI.get())); - MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, *MC); - MSTI.reset(TheTarget->createMCSubtargetInfo(TripleName, "", "")); if (!MSTI) return make_error("no subtarget info for target " + TripleName, @@ -393,6 +390,16 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) { TripleName, inconvertibleErrorCode()); + TM.reset(TheTarget->createTargetMachine(TripleName, "", "", TargetOptions(), + None)); + if (!TM) + return make_error("no target machine for target " + TripleName, + inconvertibleErrorCode()); + + TLOF = TM->getObjFileLowering(); + MC.reset(new MCContext(MAI.get(), MRI.get(), TLOF)); + TLOF->Initialize(*MC, *TM); + MCE = TheTarget->createMCCodeEmitter(*MII, *MRI, *MC); if (!MCE) return make_error("no code emitter for target " + TripleName, @@ -410,13 +417,8 @@ llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) { TripleName, inconvertibleErrorCode()); - // Finally create the AsmPrinter we'll use to emit the DIEs. - TM.reset(TheTarget->createTargetMachine(TripleName, "", "", TargetOptions(), - None)); - if (!TM) - return make_error("no target machine for target " + TripleName, - inconvertibleErrorCode()); + // Finally create the AsmPrinter we'll use to emit the DIEs. Asm.reset(TheTarget->createAsmPrinter(*TM, std::unique_ptr(MS))); if (!Asm) return make_error("no asm printer for target " + TripleName, @@ -447,9 +449,9 @@ StringRef dwarfgen::Generator::generate() { SecOffset += CUOffset; CU->setLength(CUOffset - 4); } - Abbreviations.Emit(Asm.get(), MOFI->getDwarfAbbrevSection()); - StringPool->emit(*Asm, MOFI->getDwarfStrSection()); - MS->SwitchSection(MOFI->getDwarfInfoSection()); + Abbreviations.Emit(Asm.get(), TLOF->getDwarfAbbrevSection()); + StringPool->emit(*Asm, TLOF->getDwarfStrSection()); + MS->SwitchSection(TLOF->getDwarfInfoSection()); for (auto &CU : CompileUnits) { uint16_t Version = CU->getVersion(); auto Length = CU->getLength(); @@ -468,7 +470,7 @@ StringRef dwarfgen::Generator::generate() { Asm->emitDwarfDIE(*CU->getUnitDIE().Die); } - MS->SwitchSection(MOFI->getDwarfLineSection()); + MS->SwitchSection(TLOF->getDwarfLineSection()); for (auto < : LineTables) LT->generate(*MC, *Asm); diff --git a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h index 6d41cb53f2c1..72cb0696b979 100644 --- a/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h +++ b/llvm/unittests/DebugInfo/DWARF/DwarfGenerator.h @@ -36,11 +36,11 @@ class MCCodeEmitter; class MCContext; struct MCDwarfLineTableParams; class MCInstrInfo; -class MCObjectFileInfo; class MCRegisterInfo; class MCStreamer; class MCSubtargetInfo; class raw_fd_ostream; +class TargetLoweringObjectFile; class TargetMachine; class Triple; @@ -227,7 +227,6 @@ private: class Generator { std::unique_ptr MRI; std::unique_ptr MAI; - std::unique_ptr MOFI; std::unique_ptr MC; MCAsmBackend *MAB; // Owned by MCStreamer std::unique_ptr MII; @@ -235,6 +234,7 @@ class Generator { MCCodeEmitter *MCE; // Owned by MCStreamer MCStreamer *MS; // Owned by AsmPrinter std::unique_ptr TM; + TargetLoweringObjectFile *TLOF; // Owned by TargetMachine; std::unique_ptr Asm; BumpPtrAllocator Allocator; std::unique_ptr StringPool; // Entries owned by Allocator.