[MC] Plumb unique_ptr<MCELFObjectTargetWriter> through createELFObjectWriter to

ELFObjectWriter's constructor.

Fixes the same ownership issue for ELF that r315245 did for MachO:
ELFObjectWriter takes ownership of its MCELFObjectTargetWriter, so we want to
pass this through to the constructor via a unique_ptr, rather than a raw ptr.

llvm-svn: 315254
This commit is contained in:
Lang Hames
2017-10-09 23:53:15 +00:00
parent e0f1541f41
commit dcb312bdb9
13 changed files with 36 additions and 36 deletions

View File

@@ -162,9 +162,10 @@ class ELFObjectWriter : public MCObjectWriter {
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;
@@ -1386,8 +1387,8 @@ bool ELFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
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);
}