/// \param MOTW - The target specific ELF writer subclass.
/// \param OS - The stream to write to.
/// \returns The constructed object writer.
-MCObjectWriter *createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
- raw_pwrite_stream &OS,
- bool IsLittleEndian);
+MCObjectWriter *
+createELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian);
} // end namespace llvm
bool ZLibStyle, unsigned Alignment);
public:
- ELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
- bool IsLittleEndian)
- : MCObjectWriter(OS, IsLittleEndian), TargetObjectWriter(MOTW) {}
+ ELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian)
+ : MCObjectWriter(OS, IsLittleEndian),
+ TargetObjectWriter(std::move(MOTW)) {}
~ELFObjectWriter() override = default;
InSet, IsPCRel);
}
-MCObjectWriter *llvm::createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
- raw_pwrite_stream &OS,
- bool IsLittleEndian) {
- return new ELFObjectWriter(MOTW, OS, IsLittleEndian);
+MCObjectWriter *
+llvm::createELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian) {
+ return new ELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
uint8_t OSABI,
bool IsLittleEndian,
bool IsILP32) {
- MCELFObjectTargetWriter *MOTW =
- new AArch64ELFObjectWriter(OSABI, IsLittleEndian, IsILP32);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW =
+ llvm::make_unique<AArch64ELFObjectWriter>(OSABI, IsLittleEndian, IsILP32);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
uint8_t OSABI,
bool HasRelocationAddend,
raw_pwrite_stream &OS) {
- MCELFObjectTargetWriter *MOTW =
- new AMDGPUELFObjectWriter(Is64Bit, OSABI, HasRelocationAddend);
- return createELFObjectWriter(MOTW, OS, true);
+ auto MOTW = llvm::make_unique<AMDGPUELFObjectWriter>(Is64Bit, OSABI,
+ HasRelocationAddend);
+ return createELFObjectWriter(std::move(MOTW), OS, true);
}
MCObjectWriter *llvm::createARMELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI,
bool IsLittleEndian) {
- MCELFObjectTargetWriter *MOTW = new ARMELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ return createELFObjectWriter(llvm::make_unique<ARMELFObjectWriter>(OSABI), OS,
+ IsLittleEndian);
}
MCObjectWriter *llvm::createBPFELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI, bool IsLittleEndian) {
- MCELFObjectTargetWriter *MOTW = new BPFELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ return createELFObjectWriter(llvm::make_unique<BPFELFObjectWriter>(OSABI), OS,
+ IsLittleEndian);
}
MCObjectWriter *llvm::createHexagonELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI,
StringRef CPU) {
- MCELFObjectTargetWriter *MOTW = new HexagonELFObjectWriter(OSABI, CPU);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian*/ true);
+ auto MOTW = llvm::make_unique<HexagonELFObjectWriter>(OSABI, CPU);
+ return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian*/ true);
}
MCObjectWriter *llvm::createLanaiELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new LanaiELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
+ return createELFObjectWriter(llvm::make_unique<LanaiELFObjectWriter>(OSABI),
+ OS, /*IsLittleEndian=*/false);
}
uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TT.getOS());
bool IsN64 = TT.isArch64Bit() && !IsN32;
bool HasRelocationAddend = TT.isArch64Bit();
- auto *MOTW = new MipsELFObjectWriter(OSABI, HasRelocationAddend, IsN64,
- TT.isLittleEndian());
- return createELFObjectWriter(MOTW, OS, TT.isLittleEndian());
+ auto MOTW = llvm::make_unique<MipsELFObjectWriter>(
+ OSABI, HasRelocationAddend, IsN64, TT.isLittleEndian());
+ return createELFObjectWriter(std::move(MOTW), OS, TT.isLittleEndian());
}
bool Is64Bit,
bool IsLittleEndian,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new PPCELFObjectWriter(Is64Bit, OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW = llvm::make_unique<PPCELFObjectWriter>(Is64Bit, OSABI);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
bool Is64Bit,
bool IsLittleEndian,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new SparcELFObjectWriter(Is64Bit, OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW = llvm::make_unique<SparcELFObjectWriter>(Is64Bit, OSABI);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
MCObjectWriter *llvm::createSystemZObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new SystemZObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
+ return createELFObjectWriter(llvm::make_unique<SystemZObjectWriter>(OSABI),
+ OS, /*IsLittleEndian=*/false);
}
MCObjectWriter *llvm::createX86ELFObjectWriter(raw_pwrite_stream &OS,
bool IsELF64, uint8_t OSABI,
uint16_t EMachine) {
- MCELFObjectTargetWriter *MOTW =
- new X86ELFObjectWriter(IsELF64, OSABI, EMachine);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/true);
+ auto MOTW = llvm::make_unique<X86ELFObjectWriter>(IsELF64, OSABI, EMachine);
+ return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian=*/true);
}