[llvm] r234950 - Use raw_pwrite_stream in the object writer/streamer.
Kai Nacke
kai.nacke at redstar.de
Thu Apr 16 01:37:23 PDT 2015
Hi!
I now have a compile error with MSVC:
5>D:\Program Files\LLVM-x64\include\llvm/Support/raw_ostream.h(324):
error C2248: 'llvm::raw_ostream::raw_ostream' : cannot access private
member declared in class 'llvm::raw_ostream'
(D:\OpenSource\ldc\ldc\driver\toobj.cpp)
5> D:\Program
Files\LLVM-x64\include\llvm/Support/raw_ostream.h(41) : see declaration
of 'llvm::raw_ostream::raw_ostream'
5> D:\Program
Files\LLVM-x64\include\llvm/Support/raw_ostream.h(38) : see declaration
of 'llvm::raw_ostream'
5> This diagnostic occurred in the compiler generated function
'llvm::raw_pwrite_stream::raw_pwrite_stream(const
llvm::raw_pwrite_stream &)'
Regards,
Kai
On 15.04.2015 00:14, Rafael Espindola wrote:
> Author: rafael
> Date: Tue Apr 14 17:14:34 2015
> New Revision: 234950
>
> URL: http://llvm.org/viewvc/llvm-project?rev=234950&view=rev
> Log:
> Use raw_pwrite_stream in the object writer/streamer.
>
> The ELF object writer will take advantage of that in the next commit.
>
> Modified:
> llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h
> llvm/trunk/include/llvm/MC/MCAsmBackend.h
> llvm/trunk/include/llvm/MC/MCELFObjectWriter.h
> llvm/trunk/include/llvm/MC/MCELFStreamer.h
> llvm/trunk/include/llvm/MC/MCMachObjectWriter.h
> llvm/trunk/include/llvm/MC/MCObjectStreamer.h
> llvm/trunk/include/llvm/MC/MCObjectWriter.h
> llvm/trunk/include/llvm/MC/MCWinCOFFObjectWriter.h
> llvm/trunk/include/llvm/MC/MCWinCOFFStreamer.h
> llvm/trunk/include/llvm/Support/TargetRegistry.h
> llvm/trunk/include/llvm/Target/TargetMachine.h
> llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
> llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
> llvm/trunk/lib/MC/ELFObjectWriter.cpp
> llvm/trunk/lib/MC/MCELFStreamer.cpp
> llvm/trunk/lib/MC/MCMachOStreamer.cpp
> llvm/trunk/lib/MC/MCObjectStreamer.cpp
> llvm/trunk/lib/MC/MachObjectWriter.cpp
> llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp
> llvm/trunk/lib/MC/WinCOFFStreamer.cpp
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
> llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
> llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
> llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
> llvm/trunk/lib/Target/CppBackend/CPPTargetMachine.h
> llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
> llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
> llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
> llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
> llvm/trunk/lib/Target/NVPTX/NVPTXTargetMachine.h
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
> llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
> llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp
> llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp
> llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
> llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
> llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
> llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h
> llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp
> llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
> llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
> llvm/trunk/lib/Target/TargetMachineC.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
> llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
> llvm/trunk/tools/llc/llc.cpp
> llvm/trunk/tools/llvm-mc/llvm-mc.cpp
>
> Modified: llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h (original)
> +++ llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h Tue Apr 14 17:14:34 2015
> @@ -53,6 +53,7 @@ namespace llvm {
> class TargetLibraryInfo;
> class TargetMachine;
> class raw_ostream;
> + class raw_pwrite_stream;
>
> //===----------------------------------------------------------------------===//
> /// C++ class which implements the opaque lto_code_gen_t type.
> @@ -137,7 +138,7 @@ struct LTOCodeGenerator {
> private:
> void initializeLTOPasses();
>
> - bool compileOptimized(raw_ostream &out, std::string &errMsg);
> + bool compileOptimized(raw_pwrite_stream &out, std::string &errMsg);
> bool compileOptimizedToFile(const char **name, std::string &errMsg);
> void applyScopeRestrictions();
> void applyRestriction(GlobalValue &GV, ArrayRef<StringRef> Libcalls,
>
> Modified: llvm/trunk/include/llvm/MC/MCAsmBackend.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCAsmBackend.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCAsmBackend.h (original)
> +++ llvm/trunk/include/llvm/MC/MCAsmBackend.h Tue Apr 14 17:14:34 2015
> @@ -48,7 +48,7 @@ public:
>
> /// Create a new MCObjectWriter instance for use by the assembler backend to
> /// emit the final object file.
> - virtual MCObjectWriter *createObjectWriter(raw_ostream &OS) const = 0;
> + virtual MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const = 0;
>
> /// Create a new ELFObjectTargetWriter to enable non-standard
> /// ELFObjectWriters.
>
> Modified: llvm/trunk/include/llvm/MC/MCELFObjectWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCELFObjectWriter.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCELFObjectWriter.h (original)
> +++ llvm/trunk/include/llvm/MC/MCELFObjectWriter.h Tue Apr 14 17:14:34 2015
> @@ -24,6 +24,7 @@ class MCSectionData;
> class MCSymbol;
> class MCSymbolData;
> class MCValue;
> +class raw_pwrite_stream;
>
> struct ELFRelocationEntry {
> uint64_t Offset; // Where is the relocation.
> @@ -130,7 +131,8 @@ public:
> /// \param OS - The stream to write to.
> /// \returns The constructed object writer.
> MCObjectWriter *createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
> - raw_ostream &OS, bool IsLittleEndian);
> + raw_pwrite_stream &OS,
> + bool IsLittleEndian);
> } // End llvm namespace
>
> #endif
>
> Modified: llvm/trunk/include/llvm/MC/MCELFStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCELFStreamer.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCELFStreamer.h (original)
> +++ llvm/trunk/include/llvm/MC/MCELFStreamer.h Tue Apr 14 17:14:34 2015
> @@ -29,10 +29,9 @@ class raw_ostream;
>
> class MCELFStreamer : public MCObjectStreamer {
> public:
> - MCELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS,
> + MCELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter)
> - : MCObjectStreamer(Context, TAB, OS, Emitter),
> - SeenIdent(false) {}
> + : MCObjectStreamer(Context, TAB, OS, Emitter), SeenIdent(false) {}
>
> ~MCELFStreamer() override;
>
> @@ -116,8 +115,9 @@ private:
> };
>
> MCELFStreamer *createARMELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll, bool IsThumb);
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll,
> + bool IsThumb);
>
> } // end namespace llvm
>
>
> Modified: llvm/trunk/include/llvm/MC/MCMachObjectWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCMachObjectWriter.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCMachObjectWriter.h (original)
> +++ llvm/trunk/include/llvm/MC/MCMachObjectWriter.h Tue Apr 14 17:14:34 2015
> @@ -119,7 +119,7 @@ class MachObjectWriter : public MCObject
> MachSymbolData *findSymbolData(const MCSymbol &Sym);
>
> public:
> - MachObjectWriter(MCMachObjectTargetWriter *MOTW, raw_ostream &OS,
> + MachObjectWriter(MCMachObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
> bool IsLittleEndian)
> : MCObjectWriter(OS, IsLittleEndian), TargetObjectWriter(MOTW) {}
>
> @@ -279,7 +279,8 @@ public:
> /// \param OS - The stream to write to.
> /// \returns The constructed object writer.
> MCObjectWriter *createMachObjectWriter(MCMachObjectTargetWriter *MOTW,
> - raw_ostream &OS, bool IsLittleEndian);
> + raw_pwrite_stream &OS,
> + bool IsLittleEndian);
>
> } // End llvm namespace
>
>
> Modified: llvm/trunk/include/llvm/MC/MCObjectStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCObjectStreamer.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCObjectStreamer.h (original)
> +++ llvm/trunk/include/llvm/MC/MCObjectStreamer.h Tue Apr 14 17:14:34 2015
> @@ -24,6 +24,7 @@ class MCFragment;
> class MCDataFragment;
> class MCAsmBackend;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> /// \brief Streaming object file generation interface.
> ///
> @@ -45,7 +46,7 @@ class MCObjectStreamer : public MCStream
> void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override;
>
> protected:
> - MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS,
> + MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter);
> ~MCObjectStreamer() override;
>
>
> Modified: llvm/trunk/include/llvm/MC/MCObjectWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCObjectWriter.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCObjectWriter.h (original)
> +++ llvm/trunk/include/llvm/MC/MCObjectWriter.h Tue Apr 14 17:14:34 2015
> @@ -42,12 +42,12 @@ class MCObjectWriter {
> void operator=(const MCObjectWriter &) = delete;
>
> protected:
> - raw_ostream &OS;
> + raw_pwrite_stream &OS;
>
> unsigned IsLittleEndian : 1;
>
> protected: // Can only create subclasses.
> - MCObjectWriter(raw_ostream &OS, bool IsLittleEndian)
> + MCObjectWriter(raw_pwrite_stream &OS, bool IsLittleEndian)
> : OS(OS), IsLittleEndian(IsLittleEndian) {}
>
> public:
>
> Modified: llvm/trunk/include/llvm/MC/MCWinCOFFObjectWriter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCWinCOFFObjectWriter.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCWinCOFFObjectWriter.h (original)
> +++ llvm/trunk/include/llvm/MC/MCWinCOFFObjectWriter.h Tue Apr 14 17:14:34 2015
> @@ -16,6 +16,7 @@ class MCFixup;
> class MCObjectWriter;
> class MCValue;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> class MCWinCOFFObjectTargetWriter {
> virtual void anchor();
> @@ -40,7 +41,7 @@ class raw_ostream;
> /// \param OS - The stream to write to.
> /// \returns The constructed object writer.
> MCObjectWriter *createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW,
> - raw_ostream &OS);
> + raw_pwrite_stream &OS);
> } // End llvm namespace
>
> #endif
>
> Modified: llvm/trunk/include/llvm/MC/MCWinCOFFStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCWinCOFFStreamer.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/MC/MCWinCOFFStreamer.h (original)
> +++ llvm/trunk/include/llvm/MC/MCWinCOFFStreamer.h Tue Apr 14 17:14:34 2015
> @@ -24,11 +24,12 @@ class MCSubtargetInfo;
> class MCSymbol;
> class StringRef;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> class MCWinCOFFStreamer : public MCObjectStreamer {
> public:
> MCWinCOFFStreamer(MCContext &Context, MCAsmBackend &MAB, MCCodeEmitter &CE,
> - raw_ostream &OS);
> + raw_pwrite_stream &OS);
>
> /// state management
> void reset() override {
>
> Modified: llvm/trunk/include/llvm/Support/TargetRegistry.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/TargetRegistry.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/TargetRegistry.h (original)
> +++ llvm/trunk/include/llvm/Support/TargetRegistry.h Tue Apr 14 17:14:34 2015
> @@ -50,6 +50,7 @@ namespace llvm {
> class TargetMachine;
> class TargetOptions;
> class raw_ostream;
> + class raw_pwrite_stream;
> class formatted_raw_ostream;
>
> MCStreamer *createNullStreamer(MCContext &Ctx);
> @@ -61,10 +62,10 @@ namespace llvm {
>
> /// Takes ownership of \p TAB and \p CE.
> MCStreamer *createELFStreamer(MCContext &Ctx, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> + raw_pwrite_stream &OS, MCCodeEmitter *CE,
> bool RelaxAll);
> MCStreamer *createMachOStreamer(MCContext &Ctx, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> + raw_pwrite_stream &OS, MCCodeEmitter *CE,
> bool RelaxAll, bool DWARFMustBeAtTheEnd,
> bool LabelSections = false);
>
> @@ -135,14 +136,15 @@ namespace llvm {
> const MCRegisterInfo &MRI,
> MCContext &Ctx);
> typedef MCStreamer *(*ELFStreamerCtorTy)(const Triple &T, MCContext &Ctx,
> - MCAsmBackend &TAB, raw_ostream &OS,
> + MCAsmBackend &TAB,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> bool RelaxAll);
> typedef MCStreamer *(*MachOStreamerCtorTy)(
> - MCContext &Ctx, MCAsmBackend &TAB, raw_ostream &OS,
> + MCContext &Ctx, MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool RelaxAll, bool DWARFMustBeAtTheEnd);
> typedef MCStreamer *(*COFFStreamerCtorTy)(MCContext &Ctx, MCAsmBackend &TAB,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> bool RelaxAll);
> typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S);
> @@ -438,7 +440,7 @@ namespace llvm {
> /// \param Emitter The target independent assembler object.Takes ownership.
> /// \param RelaxAll Relax all fixups?
> MCStreamer *createMCObjectStreamer(const Triple &T, MCContext &Ctx,
> - MCAsmBackend &TAB, raw_ostream &OS,
> + MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> const MCSubtargetInfo &STI,
> bool RelaxAll,
>
> Modified: llvm/trunk/include/llvm/Target/TargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetMachine.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetMachine.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetMachine.h Tue Apr 14 17:14:34 2015
> @@ -48,6 +48,7 @@ class TargetSubtargetInfo;
> class TargetTransformInfo;
> class formatted_raw_ostream;
> class raw_ostream;
> +class raw_pwrite_stream;
> class TargetLoweringObjectFile;
>
> // The old pass manager infrastructure is hidden in a legacy namespace now.
> @@ -207,7 +208,7 @@ public:
> /// emitted. Typically this will involve several steps of code generation.
> /// This method should return true if emission of this file type is not
> /// supported, or false on success.
> - virtual bool addPassesToEmitFile(PassManagerBase &, raw_ostream &,
> + virtual bool addPassesToEmitFile(PassManagerBase &, raw_pwrite_stream &,
> CodeGenFileType,
> bool /*DisableVerify*/ = true,
> AnalysisID /*StartAfter*/ = nullptr,
> @@ -220,9 +221,8 @@ public:
> /// fills the MCContext Ctx pointer which can be used to build custom
> /// MCStreamer.
> ///
> - virtual bool addPassesToEmitMC(PassManagerBase &,
> - MCContext *&,
> - raw_ostream &,
> + virtual bool addPassesToEmitMC(PassManagerBase &, MCContext *&,
> + raw_pwrite_stream &,
> bool /*DisableVerify*/ = true) {
> return true;
> }
> @@ -256,7 +256,7 @@ public:
>
> /// Add passes to the specified pass manager to get the specified file
> /// emitted. Typically this will involve several steps of code generation.
> - bool addPassesToEmitFile(PassManagerBase &PM, raw_ostream &Out,
> + bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out,
> CodeGenFileType FileType, bool DisableVerify = true,
> AnalysisID StartAfter = nullptr,
> AnalysisID StopAfter = nullptr) override;
> @@ -266,7 +266,8 @@ public:
> /// fills the MCContext Ctx pointer which can be used to build custom
> /// MCStreamer.
> bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx,
> - raw_ostream &OS, bool DisableVerify = true) override;
> + raw_pwrite_stream &OS,
> + bool DisableVerify = true) override;
> };
>
> } // End llvm namespace
>
> Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp Tue Apr 14 17:14:34 2015
> @@ -141,7 +141,7 @@ static MCContext *addPassesToGenerateCod
> }
>
> bool LLVMTargetMachine::addPassesToEmitFile(
> - PassManagerBase &PM, raw_ostream &Out, CodeGenFileType FileType,
> + PassManagerBase &PM, raw_pwrite_stream &Out, CodeGenFileType FileType,
> bool DisableVerify, AnalysisID StartAfter, AnalysisID StopAfter) {
> // Add common CodeGen passes.
> MCContext *Context = addPassesToGenerateCode(this, PM, DisableVerify,
> @@ -227,9 +227,8 @@ bool LLVMTargetMachine::addPassesToEmitF
> /// code is not supported. It fills the MCContext Ctx pointer which can be
> /// used to build custom MCStreamer.
> ///
> -bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
> - MCContext *&Ctx,
> - raw_ostream &Out,
> +bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx,
> + raw_pwrite_stream &Out,
> bool DisableVerify) {
> // Add common CodeGen passes.
> Ctx = addPassesToGenerateCode(this, PM, DisableVerify, nullptr, nullptr);
>
> Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
> +++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Tue Apr 14 17:14:34 2015
> @@ -566,7 +566,8 @@ bool LTOCodeGenerator::optimize(bool Dis
> return true;
> }
>
> -bool LTOCodeGenerator::compileOptimized(raw_ostream &out, std::string &errMsg) {
> +bool LTOCodeGenerator::compileOptimized(raw_pwrite_stream &out,
> + std::string &errMsg) {
> if (!this->determineTarget(errMsg))
> return false;
>
>
> Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -168,7 +168,7 @@ class ELFObjectWriter : public MCObjectW
> }
>
> public:
> - ELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_ostream &OS,
> + ELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
> bool IsLittleEndian)
> : MCObjectWriter(OS, IsLittleEndian), FWriter(IsLittleEndian),
> TargetObjectWriter(MOTW), NeedsGOT(false) {}
> @@ -1711,7 +1711,7 @@ bool ELFObjectWriter::isWeak(const MCSym
> }
>
> MCObjectWriter *llvm::createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> bool IsLittleEndian) {
> return new ELFObjectWriter(MOTW, OS, IsLittleEndian);
> }
>
> Modified: llvm/trunk/lib/MC/MCELFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCELFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCELFStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCELFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -647,7 +647,7 @@ void MCELFStreamer::FinishImpl() {
> }
>
> MCStreamer *llvm::createELFStreamer(MCContext &Context, MCAsmBackend &MAB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> + raw_pwrite_stream &OS, MCCodeEmitter *CE,
> bool RelaxAll) {
> MCELFStreamer *S = new MCELFStreamer(Context, MAB, OS, CE);
> if (RelaxAll)
>
> Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -54,7 +54,7 @@ private:
> void EmitDataRegionEnd();
>
> public:
> - MCMachOStreamer(MCContext &Context, MCAsmBackend &MAB, raw_ostream &OS,
> + MCMachOStreamer(MCContext &Context, MCAsmBackend &MAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool DWARFMustBeAtTheEnd, bool label)
> : MCObjectStreamer(Context, MAB, OS, Emitter), LabelSections(label),
> DWARFMustBeAtTheEnd(DWARFMustBeAtTheEnd), CreatedADWARFSection(false) {}
> @@ -491,7 +491,7 @@ void MCMachOStreamer::FinishImpl() {
> }
>
> MCStreamer *llvm::createMachOStreamer(MCContext &Context, MCAsmBackend &MAB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> + raw_pwrite_stream &OS, MCCodeEmitter *CE,
> bool RelaxAll, bool DWARFMustBeAtTheEnd,
> bool LabelSections) {
> MCMachOStreamer *S = new MCMachOStreamer(Context, MAB, OS, CE,
>
> Modified: llvm/trunk/lib/MC/MCObjectStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCObjectStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCObjectStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/MCObjectStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -24,7 +24,8 @@
> using namespace llvm;
>
> MCObjectStreamer::MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter_)
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter_)
> : MCStreamer(Context),
> Assembler(new MCAssembler(Context, TAB, *Emitter_,
> *TAB.createObjectWriter(OS), OS)),
>
> Modified: llvm/trunk/lib/MC/MachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MachObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/MachObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -1007,7 +1007,7 @@ void MachObjectWriter::WriteObject(MCAss
> }
>
> MCObjectWriter *llvm::createMachObjectWriter(MCMachObjectTargetWriter *MOTW,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> bool IsLittleEndian) {
> return new MachObjectWriter(MOTW, OS, IsLittleEndian);
> }
>
> Modified: llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -126,7 +126,7 @@ public:
>
> bool UseBigObj;
>
> - WinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW, raw_ostream &OS);
> + WinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW, raw_pwrite_stream &OS);
>
> void reset() override {
> memset(&Header, 0, sizeof(Header));
> @@ -258,7 +258,7 @@ size_t COFFSection::size() {
> // WinCOFFObjectWriter class implementation
>
> WinCOFFObjectWriter::WinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW,
> - raw_ostream &OS)
> + raw_pwrite_stream &OS)
> : MCObjectWriter(OS, true), TargetObjectWriter(MOTW) {
> memset(&Header, 0, sizeof(Header));
>
> @@ -1075,6 +1075,6 @@ void MCWinCOFFObjectTargetWriter::anchor
>
> MCObjectWriter *
> llvm::createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW,
> - raw_ostream &OS) {
> + raw_pwrite_stream &OS) {
> return new WinCOFFObjectWriter(MOTW, OS);
> }
>
> Modified: llvm/trunk/lib/MC/WinCOFFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/WinCOFFStreamer.cpp (original)
> +++ llvm/trunk/lib/MC/WinCOFFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -39,7 +39,7 @@ using namespace llvm;
>
> namespace llvm {
> MCWinCOFFStreamer::MCWinCOFFStreamer(MCContext &Context, MCAsmBackend &MAB,
> - MCCodeEmitter &CE, raw_ostream &OS)
> + MCCodeEmitter &CE, raw_pwrite_stream &OS)
> : MCObjectStreamer(Context, MAB, OS, &CE), CurSymbol(nullptr) {}
>
> void MCWinCOFFStreamer::EmitInstToData(const MCInst &Inst,
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -313,7 +313,7 @@ public:
> DarwinAArch64AsmBackend(const Target &T, const MCRegisterInfo &MRI)
> : AArch64AsmBackend(T), MRI(MRI) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createAArch64MachObjectWriter(OS, MachO::CPU_TYPE_ARM64,
> MachO::CPU_SUBTYPE_ARM64_ALL);
> }
> @@ -461,7 +461,7 @@ public:
> ELFAArch64AsmBackend(const Target &T, uint8_t OSABI, bool IsLittleEndian)
> : AArch64AsmBackend(T), OSABI(OSABI), IsLittleEndian(IsLittleEndian) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createAArch64ELFObjectWriter(OS, OSABI, IsLittleEndian);
> }
>
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -248,7 +248,7 @@ unsigned AArch64ELFObjectWriter::GetRelo
> llvm_unreachable("Unimplemented fixup -> relocation");
> }
>
> -MCObjectWriter *llvm::createAArch64ELFObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createAArch64ELFObjectWriter(raw_pwrite_stream &OS,
> uint8_t OSABI,
> bool IsLittleEndian) {
> MCELFObjectTargetWriter *MOTW =
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -89,8 +89,8 @@ class AArch64ELFStreamer : public MCELFS
> public:
> friend class AArch64TargetELFStreamer;
>
> - AArch64ELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS,
> - MCCodeEmitter *Emitter)
> + AArch64ELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> + raw_pwrite_stream &OS, MCCodeEmitter *Emitter)
> : MCELFStreamer(Context, TAB, OS, Emitter), MappingSymbolCounter(0),
> LastEMS(EMS_None) {}
>
> @@ -211,8 +211,8 @@ MCTargetStreamer *createAArch64AsmTarget
> }
>
> MCELFStreamer *createAArch64ELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll) {
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll) {
> AArch64ELFStreamer *S = new AArch64ELFStreamer(Context, TAB, OS, Emitter);
> if (RelaxAll)
> S->getAssembler().setRelaxAll(true);
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h Tue Apr 14 17:14:34 2015
> @@ -19,8 +19,8 @@
> namespace llvm {
>
> MCELFStreamer *createAArch64ELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll);
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll);
> }
>
> #endif
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp Tue Apr 14 17:14:34 2015
> @@ -123,14 +123,14 @@ static MCInstPrinter *createAArch64MCIns
> }
>
> static MCStreamer *createELFStreamer(const Triple &T, MCContext &Ctx,
> - MCAsmBackend &TAB, raw_ostream &OS,
> + MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool RelaxAll) {
> return createAArch64ELFStreamer(Ctx, TAB, OS, Emitter, RelaxAll);
> }
>
> static MCStreamer *createMachOStreamer(MCContext &Ctx, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll,
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll,
> bool DWARFMustBeAtTheEnd) {
> return createMachOStreamer(Ctx, TAB, OS, Emitter, RelaxAll,
> DWARFMustBeAtTheEnd,
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -33,6 +33,7 @@ class StringRef;
> class Target;
> class Triple;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> extern Target TheAArch64leTarget;
> extern Target TheAArch64beTarget;
> @@ -48,10 +49,12 @@ MCAsmBackend *createAArch64beAsmBackend(
> const MCRegisterInfo &MRI, StringRef TT,
> StringRef CPU);
>
> -MCObjectWriter *createAArch64ELFObjectWriter(raw_ostream &OS, uint8_t OSABI,
> +MCObjectWriter *createAArch64ELFObjectWriter(raw_pwrite_stream &OS,
> + uint8_t OSABI,
> bool IsLittleEndian);
>
> -MCObjectWriter *createAArch64MachObjectWriter(raw_ostream &OS, uint32_t CPUType,
> +MCObjectWriter *createAArch64MachObjectWriter(raw_pwrite_stream &OS,
> + uint32_t CPUType,
> uint32_t CPUSubtype);
>
> MCTargetStreamer *createAArch64AsmTargetStreamer(MCStreamer &S,
>
> Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -413,7 +413,7 @@ void AArch64MachObjectWriter::RecordRelo
> Writer->addRelocation(RelSymbol, Fragment->getParent(), MRE);
> }
>
> -MCObjectWriter *llvm::createAArch64MachObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createAArch64MachObjectWriter(raw_pwrite_stream &OS,
> uint32_t CPUType,
> uint32_t CPUSubtype) {
> return createMachObjectWriter(
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h Tue Apr 14 17:14:34 2015
> @@ -23,7 +23,7 @@ public:
> HasDataInCodeSupport = true;
> }
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createARMMachObjectWriter(OS, /*Is64Bit=*/false, MachO::CPU_TYPE_ARM,
> Subtype);
> }
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h Tue Apr 14 17:14:34 2015
> @@ -18,7 +18,7 @@ public:
> ARMAsmBackendELF(const Target &T, StringRef TT, uint8_t OSABI, bool IsLittle)
> : ARMAsmBackend(T, TT, IsLittle), OSABI(OSABI) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createARMELFObjectWriter(OS, OSABI, isLittle());
> }
> };
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h Tue Apr 14 17:14:34 2015
> @@ -17,7 +17,7 @@ class ARMAsmBackendWinCOFF : public ARMA
> public:
> ARMAsmBackendWinCOFF(const Target &T, StringRef Triple)
> : ARMAsmBackend(T, Triple, true) {}
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createARMWinCOFFObjectWriter(OS, /*Is64Bit=*/false);
> }
> };
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -251,7 +251,7 @@ unsigned ARMELFObjectWriter::GetRelocTyp
> return Type;
> }
>
> -MCObjectWriter *llvm::createARMELFObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createARMELFObjectWriter(raw_pwrite_stream &OS,
> uint8_t OSABI,
> bool IsLittleEndian) {
> MCELFObjectTargetWriter *MOTW = new ARMELFObjectWriter(OSABI);
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -472,7 +472,7 @@ class ARMELFStreamer : public MCELFStrea
> public:
> friend class ARMTargetELFStreamer;
>
> - ARMELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS,
> + ARMELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool IsThumb)
> : MCELFStreamer(Context, TAB, OS, Emitter), IsThumb(IsThumb),
> MappingSymbolCounter(0), LastEMS(EMS_None) {
> @@ -1382,8 +1382,9 @@ MCTargetStreamer *createARMObjectTargetS
> }
>
> MCELFStreamer *createARMELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll, bool IsThumb) {
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll,
> + bool IsThumb) {
> ARMELFStreamer *S = new ARMELFStreamer(Context, TAB, OS, Emitter, IsThumb);
> // FIXME: This should eventually end up somewhere else where more
> // intelligent flag decisions can be made. For now we are just maintaining
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp Tue Apr 14 17:14:34 2015
> @@ -310,14 +310,14 @@ static MCCodeGenInfo *createARMMCCodeGen
> }
>
> static MCStreamer *createELFStreamer(const Triple &T, MCContext &Ctx,
> - MCAsmBackend &MAB, raw_ostream &OS,
> + MCAsmBackend &MAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool RelaxAll) {
> return createARMELFStreamer(Ctx, MAB, OS, Emitter, false,
> T.getArch() == Triple::thumb);
> }
>
> static MCStreamer *createARMMachOStreamer(MCContext &Ctx, MCAsmBackend &MAB,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool RelaxAll,
> bool DWARFMustBeAtTheEnd) {
> return createMachOStreamer(Ctx, MAB, OS, Emitter, false, DWARFMustBeAtTheEnd);
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -34,6 +34,7 @@ class StringRef;
> class Target;
> class Triple;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> extern Target TheARMLETarget, TheThumbLETarget;
> extern Target TheARMBETarget, TheThumbBETarget;
> @@ -82,20 +83,21 @@ MCAsmBackend *createThumbBEAsmBackend(co
> // Construct a PE/COFF machine code streamer which will generate a PE/COFF
> // object file.
> MCStreamer *createARMWinCOFFStreamer(MCContext &Context, MCAsmBackend &MAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll);
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll);
>
> /// Construct an ELF Mach-O object writer.
> -MCObjectWriter *createARMELFObjectWriter(raw_ostream &OS, uint8_t OSABI,
> +MCObjectWriter *createARMELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI,
> bool IsLittleEndian);
>
> /// Construct an ARM Mach-O object writer.
> -MCObjectWriter *createARMMachObjectWriter(raw_ostream &OS, bool Is64Bit,
> +MCObjectWriter *createARMMachObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
> uint32_t CPUType,
> uint32_t CPUSubtype);
>
> /// Construct an ARM PE/COFF object writer.
> -MCObjectWriter *createARMWinCOFFObjectWriter(raw_ostream &OS, bool Is64Bit);
> +MCObjectWriter *createARMWinCOFFObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit);
>
> /// Construct ARM Mach-O relocation info.
> MCRelocationInfo *createARMMachORelocationInfo(MCContext &Ctx);
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -472,8 +472,8 @@ void ARMMachObjectWriter::RecordRelocati
> Writer->addRelocation(RelSymbol, Fragment->getParent(), MRE);
> }
>
> -MCObjectWriter *llvm::createARMMachObjectWriter(raw_ostream &OS, bool Is64Bit,
> - uint32_t CPUType,
> +MCObjectWriter *llvm::createARMMachObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit, uint32_t CPUType,
> uint32_t CPUSubtype) {
> return createMachObjectWriter(new ARMMachObjectWriter(Is64Bit,
> CPUType,
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -82,7 +82,8 @@ bool ARMWinCOFFObjectWriter::recordReloc
> }
>
> namespace llvm {
> -MCObjectWriter *createARMWinCOFFObjectWriter(raw_ostream &OS, bool Is64Bit) {
> +MCObjectWriter *createARMWinCOFFObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit) {
> MCWinCOFFObjectTargetWriter *MOTW = new ARMWinCOFFObjectWriter(Is64Bit);
> return createWinCOFFObjectWriter(MOTW, OS);
> }
>
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -16,8 +16,8 @@ namespace {
> class ARMWinCOFFStreamer : public MCWinCOFFStreamer {
> public:
> ARMWinCOFFStreamer(MCContext &C, MCAsmBackend &AB, MCCodeEmitter &CE,
> - raw_ostream &OS)
> - : MCWinCOFFStreamer(C, AB, CE, OS) { }
> + raw_pwrite_stream &OS)
> + : MCWinCOFFStreamer(C, AB, CE, OS) {}
>
> void EmitAssemblerFlag(MCAssemblerFlag Flag) override;
> void EmitThumbFunc(MCSymbol *Symbol) override;
> @@ -38,7 +38,8 @@ void ARMWinCOFFStreamer::EmitThumbFunc(M
> }
>
> MCStreamer *llvm::createARMWinCOFFStreamer(MCContext &Context,
> - MCAsmBackend &MAB, raw_ostream &OS,
> + MCAsmBackend &MAB,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> bool RelaxAll) {
> return new ARMWinCOFFStreamer(Context, MAB, *Emitter, OS);
>
> Modified: llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp (original)
> +++ llvm/trunk/lib/Target/CppBackend/CPPBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -2149,11 +2149,9 @@ char CppWriter::ID = 0;
> // External Interface declaration
> //===----------------------------------------------------------------------===//
>
> -bool CPPTargetMachine::addPassesToEmitFile(PassManagerBase &PM, raw_ostream &o,
> - CodeGenFileType FileType,
> - bool DisableVerify,
> - AnalysisID StartAfter,
> - AnalysisID StopAfter) {
> +bool CPPTargetMachine::addPassesToEmitFile(
> + PassManagerBase &PM, raw_pwrite_stream &o, CodeGenFileType FileType,
> + bool DisableVerify, AnalysisID StartAfter, AnalysisID StopAfter) {
> if (FileType != TargetMachine::CGFT_AssemblyFile)
> return true;
> auto FOut = llvm::make_unique<formatted_raw_ostream>(o);
>
> Modified: llvm/trunk/lib/Target/CppBackend/CPPTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CppBackend/CPPTargetMachine.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/CppBackend/CPPTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/CppBackend/CPPTargetMachine.h Tue Apr 14 17:14:34 2015
> @@ -29,7 +29,7 @@ struct CPPTargetMachine : public TargetM
> : TargetMachine(T, "", TT, CPU, FS, Options) {}
>
> public:
> - bool addPassesToEmitFile(PassManagerBase &PM, raw_ostream &Out,
> + bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out,
> CodeGenFileType FileType, bool DisableVerify,
> AnalysisID StartAfter,
> AnalysisID StopAfter) override;
>
> Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -57,7 +57,7 @@ public:
> ELFHexagonAsmBackend(Target const &T, uint8_t OSABI)
> : HexagonAsmBackend(T), OSABI(OSABI) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> StringRef CPU("HexagonV4");
> return createHexagonELFObjectWriter(OS, OSABI, CPU);
> }
>
> Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -55,7 +55,7 @@ unsigned HexagonELFObjectWriter::GetRelo
> return Type;
> }
>
> -MCObjectWriter *llvm::createHexagonELFObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createHexagonELFObjectWriter(raw_pwrite_stream &OS,
> uint8_t OSABI,
> StringRef CPU) {
> MCELFObjectTargetWriter *MOTW = new HexagonELFObjectWriter(OSABI, CPU);
>
> Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -27,6 +27,7 @@ class MCSubtargetInfo;
> class Target;
> class StringRef;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> extern Target TheHexagonTarget;
>
> @@ -40,8 +41,8 @@ MCAsmBackend *createHexagonAsmBackend(Ta
> MCRegisterInfo const &MRI, StringRef TT,
> StringRef CPU);
>
> -MCObjectWriter *createHexagonELFObjectWriter(raw_ostream &OS, uint8_t OSABI,
> - StringRef CPU);
> +MCObjectWriter *createHexagonELFObjectWriter(raw_pwrite_stream &OS,
> + uint8_t OSABI, StringRef CPU);
>
> } // End llvm namespace
>
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -155,7 +155,8 @@ static unsigned adjustFixupValue(const M
> return Value;
> }
>
> -MCObjectWriter *MipsAsmBackend::createObjectWriter(raw_ostream &OS) const {
> +MCObjectWriter *
> +MipsAsmBackend::createObjectWriter(raw_pwrite_stream &OS) const {
> return createMipsELFObjectWriter(OS,
> MCELFObjectTargetWriter::getOSABI(OSType), IsLittle, Is64Bit);
> }
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h Tue Apr 14 17:14:34 2015
> @@ -36,7 +36,7 @@ public:
> bool Is64Bit)
> : MCAsmBackend(), OSType(OSType), IsLittle(IsLittle), Is64Bit(Is64Bit) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override;
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override;
>
> void applyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
> uint64_t Value, bool IsPCRel) const override;
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -444,7 +444,8 @@ MipsELFObjectWriter::needsRelocateWithSy
> }
> }
>
> -MCObjectWriter *llvm::createMipsELFObjectWriter(raw_ostream &OS, uint8_t OSABI,
> +MCObjectWriter *llvm::createMipsELFObjectWriter(raw_pwrite_stream &OS,
> + uint8_t OSABI,
> bool IsLittleEndian,
> bool Is64Bit) {
> MCELFObjectTargetWriter *MOTW =
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -70,7 +70,8 @@ void MipsELFStreamer::EmitMipsOptionReco
> }
>
> MCELFStreamer *llvm::createMipsELFStreamer(MCContext &Context,
> - MCAsmBackend &MAB, raw_ostream &OS,
> + MCAsmBackend &MAB,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> bool RelaxAll) {
> return new MipsELFStreamer(Context, MAB, OS, Emitter);
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h Tue Apr 14 17:14:34 2015
> @@ -33,7 +33,7 @@ class MipsELFStreamer : public MCELFStre
>
>
> public:
> - MipsELFStreamer(MCContext &Context, MCAsmBackend &MAB, raw_ostream &OS,
> + MipsELFStreamer(MCContext &Context, MCAsmBackend &MAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter)
> : MCELFStreamer(Context, MAB, OS, Emitter) {
>
> @@ -68,7 +68,7 @@ public:
> };
>
> MCELFStreamer *createMipsELFStreamer(MCContext &Context, MCAsmBackend &MAB,
> - raw_ostream &OS, MCCodeEmitter *Emitter,
> - bool RelaxAll);
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll);
> } // namespace llvm.
> #endif
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h Tue Apr 14 17:14:34 2015
> @@ -23,9 +23,8 @@ bool baseRegNeedsLoadStoreMask(unsigned
>
> // This function creates an MCELFStreamer for Mips NaCl.
> MCELFStreamer *createMipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS,
> - MCCodeEmitter *Emitter,
> - bool RelaxAll);
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *Emitter, bool RelaxAll);
> }
>
> #endif
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp Tue Apr 14 17:14:34 2015
> @@ -106,7 +106,7 @@ static MCInstPrinter *createMipsMCInstPr
> }
>
> static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context,
> - MCAsmBackend &MAB, raw_ostream &OS,
> + MCAsmBackend &MAB, raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter, bool RelaxAll) {
> MCStreamer *S;
> if (!T.isOSNaCl())
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -27,6 +27,7 @@ class MCSubtargetInfo;
> class StringRef;
> class Target;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> extern Target TheMipsTarget;
> extern Target TheMipselTarget;
> @@ -53,7 +54,7 @@ MCAsmBackend *createMipsAsmBackendEL64(c
> const MCRegisterInfo &MRI, StringRef TT,
> StringRef CPU);
>
> -MCObjectWriter *createMipsELFObjectWriter(raw_ostream &OS, uint8_t OSABI,
> +MCObjectWriter *createMipsELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI,
> bool IsLittleEndian, bool Is64Bit);
>
> namespace MIPS_MC {
>
> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -36,8 +36,8 @@ const unsigned LoadStoreStackMaskReg = M
>
> class MipsNaClELFStreamer : public MipsELFStreamer {
> public:
> - MipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB, raw_ostream &OS,
> - MCCodeEmitter *Emitter)
> + MipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> + raw_pwrite_stream &OS, MCCodeEmitter *Emitter)
> : MipsELFStreamer(Context, TAB, OS, Emitter), PendingCall(false) {}
>
> ~MipsNaClELFStreamer() override {}
> @@ -252,7 +252,7 @@ bool baseRegNeedsLoadStoreMask(unsigned
> }
>
> MCELFStreamer *createMipsNaClELFStreamer(MCContext &Context, MCAsmBackend &TAB,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> MCCodeEmitter *Emitter,
> bool RelaxAll) {
> MipsNaClELFStreamer *S = new MipsNaClELFStreamer(Context, TAB, OS, Emitter);
>
> Modified: llvm/trunk/lib/Target/NVPTX/NVPTXTargetMachine.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXTargetMachine.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/NVPTX/NVPTXTargetMachine.h (original)
> +++ llvm/trunk/lib/Target/NVPTX/NVPTXTargetMachine.h Tue Apr 14 17:14:34 2015
> @@ -52,7 +52,7 @@ public:
> TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
>
> // Emission of machine code through MCJIT is not supported.
> - bool addPassesToEmitMC(PassManagerBase &, MCContext *&, raw_ostream &,
> + bool addPassesToEmitMC(PassManagerBase &, MCContext *&, raw_pwrite_stream &,
> bool = true) override {
> return true;
> }
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -208,7 +208,7 @@ namespace {
> public:
> DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T, false) { }
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> bool is64 = getPointerSize() == 8;
> return createPPCMachObjectWriter(
> OS,
> @@ -224,8 +224,7 @@ namespace {
> ELFPPCAsmBackend(const Target &T, bool IsLittleEndian, uint8_t OSABI) :
> PPCAsmBackend(T, IsLittleEndian), OSABI(OSABI) { }
>
> -
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> bool is64 = getPointerSize() == 8;
> return createPPCELFObjectWriter(OS, is64, isLittleEndian(), OSABI);
> }
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -412,7 +412,8 @@ bool PPCELFObjectWriter::needsRelocateWi
> }
> }
>
> -MCObjectWriter *llvm::createPPCELFObjectWriter(raw_ostream &OS, bool Is64Bit,
> +MCObjectWriter *llvm::createPPCELFObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit,
> bool IsLittleEndian,
> uint8_t OSABI) {
> MCELFObjectTargetWriter *MOTW = new PPCELFObjectWriter(Is64Bit, OSABI);
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -30,6 +30,7 @@ class MCRegisterInfo;
> class MCSubtargetInfo;
> class Target;
> class StringRef;
> +class raw_pwrite_stream;
> class raw_ostream;
>
> extern Target ThePPC32Target;
> @@ -44,12 +45,10 @@ MCAsmBackend *createPPCAsmBackend(const
> StringRef TT, StringRef CPU);
>
> /// Construct an PPC ELF object writer.
> -MCObjectWriter *createPPCELFObjectWriter(raw_ostream &OS,
> - bool Is64Bit,
> - bool IsLittleEndian,
> - uint8_t OSABI);
> +MCObjectWriter *createPPCELFObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
> + bool IsLittleEndian, uint8_t OSABI);
> /// Construct a PPC Mach-O object writer.
> -MCObjectWriter *createPPCMachObjectWriter(raw_ostream &OS, bool Is64Bit,
> +MCObjectWriter *createPPCMachObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
> uint32_t CPUType,
> uint32_t CPUSubtype);
>
>
> Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -378,8 +378,8 @@ void PPCMachObjectWriter::RecordPPCReloc
> Writer->addRelocation(RelSymbol, Fragment->getParent(), MRE);
> }
>
> -MCObjectWriter *llvm::createPPCMachObjectWriter(raw_ostream &OS, bool Is64Bit,
> - uint32_t CPUType,
> +MCObjectWriter *llvm::createPPCMachObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit, uint32_t CPUType,
> uint32_t CPUSubtype) {
> return createMachObjectWriter(
> new PPCMachObjectWriter(Is64Bit, CPUType, CPUSubtype), OS,
>
> Modified: llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -24,7 +24,7 @@ namespace {
>
> class AMDGPUMCObjectWriter : public MCObjectWriter {
> public:
> - AMDGPUMCObjectWriter(raw_ostream &OS) : MCObjectWriter(OS, true) { }
> + AMDGPUMCObjectWriter(raw_pwrite_stream &OS) : MCObjectWriter(OS, true) {}
> void ExecutePostLayoutBinding(MCAssembler &Asm,
> const MCAsmLayout &Layout) override {
> //XXX: Implement if necessary.
> @@ -131,7 +131,7 @@ class ELFAMDGPUAsmBackend : public AMDGP
> public:
> ELFAMDGPUAsmBackend(const Target &T) : AMDGPUAsmBackend(T) { }
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createAMDGPUELFObjectWriter(OS);
> }
> };
>
> Modified: llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -33,7 +33,7 @@ protected:
> AMDGPUELFObjectWriter::AMDGPUELFObjectWriter()
> : MCELFObjectTargetWriter(false, 0, 0, false) { }
>
> -MCObjectWriter *llvm::createAMDGPUELFObjectWriter(raw_ostream &OS) {
> +MCObjectWriter *llvm::createAMDGPUELFObjectWriter(raw_pwrite_stream &OS) {
> MCELFObjectTargetWriter *MOTW = new AMDGPUELFObjectWriter();
> return createELFObjectWriter(MOTW, OS, true);
> }
>
> Modified: llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -28,6 +28,7 @@ class MCObjectWriter;
> class MCRegisterInfo;
> class MCSubtargetInfo;
> class Target;
> +class raw_pwrite_stream;
> class raw_ostream;
>
> extern Target TheAMDGPUTarget;
> @@ -44,7 +45,7 @@ MCCodeEmitter *createSIMCCodeEmitter(con
> MCAsmBackend *createAMDGPUAsmBackend(const Target &T, const MCRegisterInfo &MRI,
> StringRef TT, StringRef CPU);
>
> -MCObjectWriter *createAMDGPUELFObjectWriter(raw_ostream &OS);
> +MCObjectWriter *createAMDGPUELFObjectWriter(raw_pwrite_stream &OS);
> } // End llvm namespace
>
> #define GET_REGINFO_ENUM
>
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -244,7 +244,7 @@ namespace {
>
> }
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(OSType);
> return createSparcELFObjectWriter(OS, is64Bit(), OSABI);
> }
>
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -105,8 +105,8 @@ unsigned SparcELFObjectWriter::GetRelocT
> return ELF::R_SPARC_NONE;
> }
>
> -MCObjectWriter *llvm::createSparcELFObjectWriter(raw_ostream &OS, bool Is64Bit,
> - uint8_t OSABI) {
> +MCObjectWriter *llvm::createSparcELFObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit, uint8_t OSABI) {
> MCELFObjectTargetWriter *MOTW = new SparcELFObjectWriter(Is64Bit, OSABI);
> return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
> }
>
> Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -26,6 +26,7 @@ class MCRegisterInfo;
> class MCSubtargetInfo;
> class Target;
> class StringRef;
> +class raw_pwrite_stream;
> class raw_ostream;
>
> extern Target TheSparcTarget;
> @@ -38,8 +39,7 @@ MCAsmBackend *createSparcAsmBackend(cons
> const MCRegisterInfo &MRI,
> StringRef TT,
> StringRef CPU);
> -MCObjectWriter *createSparcELFObjectWriter(raw_ostream &OS,
> - bool Is64Bit,
> +MCObjectWriter *createSparcELFObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
> uint8_t OSABI);
> } // End llvm namespace
>
>
> Modified: llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -62,7 +62,7 @@ public:
> llvm_unreachable("SystemZ does do not have assembler relaxation");
> }
> bool writeNopData(uint64_t Count, MCObjectWriter *OW) const override;
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createSystemZObjectWriter(OS, OSABI);
> }
> };
>
> Modified: llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -152,7 +152,7 @@ unsigned SystemZObjectWriter::GetRelocTy
> }
> }
>
> -MCObjectWriter *llvm::createSystemZObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createSystemZObjectWriter(raw_pwrite_stream &OS,
> uint8_t OSABI) {
> MCELFObjectTargetWriter *MOTW = new SystemZObjectWriter(OSABI);
> return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
>
> Modified: llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -23,6 +23,7 @@ class MCRegisterInfo;
> class MCSubtargetInfo;
> class StringRef;
> class Target;
> +class raw_pwrite_stream;
> class raw_ostream;
>
> extern Target TheSystemZTarget;
> @@ -77,7 +78,7 @@ MCAsmBackend *createSystemZMCAsmBackend(
> const MCRegisterInfo &MRI,
> StringRef TT, StringRef CPU);
>
> -MCObjectWriter *createSystemZObjectWriter(raw_ostream &OS, uint8_t OSABI);
> +MCObjectWriter *createSystemZObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI);
> } // end namespace llvm
>
> // Defines symbolic names for SystemZ registers.
>
> Modified: llvm/trunk/lib/Target/TargetMachineC.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetMachineC.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetMachineC.cpp (original)
> +++ llvm/trunk/lib/Target/TargetMachineC.cpp Tue Apr 14 17:14:34 2015
> @@ -183,7 +183,7 @@ void LLVMSetTargetMachineAsmVerbosity(LL
> }
>
> static LLVMBool LLVMTargetMachineEmit(LLVMTargetMachineRef T, LLVMModuleRef M,
> - raw_ostream &OS,
> + raw_pwrite_stream &OS,
> LLVMCodeGenFileType codegen,
> char **ErrorMessage) {
> TargetMachine* TM = unwrap(T);
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp Tue Apr 14 17:14:34 2015
> @@ -360,7 +360,7 @@ public:
> ELFX86_32AsmBackend(const Target &T, uint8_t OSABI, StringRef CPU)
> : ELFX86AsmBackend(T, OSABI, CPU) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86ELFObjectWriter(OS, /*IsELF64*/ false, OSABI, ELF::EM_386);
> }
> };
> @@ -370,7 +370,7 @@ public:
> ELFX86_X32AsmBackend(const Target &T, uint8_t OSABI, StringRef CPU)
> : ELFX86AsmBackend(T, OSABI, CPU) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86ELFObjectWriter(OS, /*IsELF64*/ false, OSABI,
> ELF::EM_X86_64);
> }
> @@ -381,7 +381,7 @@ public:
> ELFX86_64AsmBackend(const Target &T, uint8_t OSABI, StringRef CPU)
> : ELFX86AsmBackend(T, OSABI, CPU) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86ELFObjectWriter(OS, /*IsELF64*/ true, OSABI, ELF::EM_X86_64);
> }
> };
> @@ -395,7 +395,7 @@ public:
> , Is64Bit(is64Bit) {
> }
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86WinCOFFObjectWriter(OS, Is64Bit);
> }
> };
> @@ -752,7 +752,7 @@ public:
> StringRef CPU)
> : DarwinX86AsmBackend(T, MRI, CPU, false) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86MachObjectWriter(OS, /*Is64Bit=*/false,
> MachO::CPU_TYPE_I386,
> MachO::CPU_SUBTYPE_I386_ALL);
> @@ -772,7 +772,7 @@ public:
> StringRef CPU, MachO::CPUSubTypeX86 st)
> : DarwinX86AsmBackend(T, MRI, CPU, true), Subtype(st) {}
>
> - MCObjectWriter *createObjectWriter(raw_ostream &OS) const override {
> + MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override {
> return createX86MachObjectWriter(OS, /*Is64Bit=*/true,
> MachO::CPU_TYPE_X86_64, Subtype);
> }
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -249,8 +249,8 @@ unsigned X86ELFObjectWriter::GetRelocTyp
> return getRelocType32(Modifier, getType32(Type), IsPCRel);
> }
>
> -MCObjectWriter *llvm::createX86ELFObjectWriter(raw_ostream &OS, bool IsELF64,
> - uint8_t OSABI,
> +MCObjectWriter *llvm::createX86ELFObjectWriter(raw_pwrite_stream &OS,
> + bool IsELF64, uint8_t OSABI,
> uint16_t EMachine) {
> MCELFObjectTargetWriter *MOTW =
> new X86ELFObjectWriter(IsELF64, OSABI, EMachine);
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h Tue Apr 14 17:14:34 2015
> @@ -31,6 +31,7 @@ class Target;
> class Triple;
> class StringRef;
> class raw_ostream;
> +class raw_pwrite_stream;
>
> extern Target TheX86_32Target, TheX86_64Target;
>
> @@ -77,19 +78,20 @@ MCAsmBackend *createX86_64AsmBackend(con
> ///
> /// Takes ownership of \p AB and \p CE.
> MCStreamer *createX86WinCOFFStreamer(MCContext &C, MCAsmBackend &AB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> + raw_pwrite_stream &OS, MCCodeEmitter *CE,
> bool RelaxAll);
>
> /// Construct an X86 Mach-O object writer.
> -MCObjectWriter *createX86MachObjectWriter(raw_ostream &OS, bool Is64Bit,
> +MCObjectWriter *createX86MachObjectWriter(raw_pwrite_stream &OS, bool Is64Bit,
> uint32_t CPUType,
> uint32_t CPUSubtype);
>
> /// Construct an X86 ELF object writer.
> -MCObjectWriter *createX86ELFObjectWriter(raw_ostream &OS, bool IsELF64,
> +MCObjectWriter *createX86ELFObjectWriter(raw_pwrite_stream &OS, bool IsELF64,
> uint8_t OSABI, uint16_t EMachine);
> /// Construct an X86 Win COFF object writer.
> -MCObjectWriter *createX86WinCOFFObjectWriter(raw_ostream &OS, bool Is64Bit);
> +MCObjectWriter *createX86WinCOFFObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit);
>
> /// Construct X86-64 Mach-O relocation info.
> MCRelocationInfo *createX86_64MachORelocationInfo(MCContext &Ctx);
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -575,8 +575,8 @@ void X86MachObjectWriter::RecordX86Reloc
> Writer->addRelocation(RelSymbol, Fragment->getParent(), MRE);
> }
>
> -MCObjectWriter *llvm::createX86MachObjectWriter(raw_ostream &OS, bool Is64Bit,
> - uint32_t CPUType,
> +MCObjectWriter *llvm::createX86MachObjectWriter(raw_pwrite_stream &OS,
> + bool Is64Bit, uint32_t CPUType,
> uint32_t CPUSubtype) {
> return createMachObjectWriter(new X86MachObjectWriter(Is64Bit,
> CPUType,
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp Tue Apr 14 17:14:34 2015
> @@ -90,7 +90,7 @@ unsigned X86WinCOFFObjectWriter::getRelo
> llvm_unreachable("Unsupported COFF machine type.");
> }
>
> -MCObjectWriter *llvm::createX86WinCOFFObjectWriter(raw_ostream &OS,
> +MCObjectWriter *llvm::createX86WinCOFFObjectWriter(raw_pwrite_stream &OS,
> bool Is64Bit) {
> MCWinCOFFObjectTargetWriter *MOTW = new X86WinCOFFObjectWriter(Is64Bit);
> return createWinCOFFObjectWriter(MOTW, OS);
>
> Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp (original)
> +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp Tue Apr 14 17:14:34 2015
> @@ -18,8 +18,8 @@ class X86WinCOFFStreamer : public MCWinC
> Win64EH::UnwindEmitter EHStreamer;
> public:
> X86WinCOFFStreamer(MCContext &C, MCAsmBackend &AB, MCCodeEmitter *CE,
> - raw_ostream &OS)
> - : MCWinCOFFStreamer(C, AB, *CE, OS) { }
> + raw_pwrite_stream &OS)
> + : MCWinCOFFStreamer(C, AB, *CE, OS) {}
>
> void EmitWinEHHandlerData() override;
> void EmitWindowsUnwindTables() override;
> @@ -49,8 +49,8 @@ void X86WinCOFFStreamer::FinishImpl() {
> }
>
> MCStreamer *llvm::createX86WinCOFFStreamer(MCContext &C, MCAsmBackend &AB,
> - raw_ostream &OS, MCCodeEmitter *CE,
> - bool RelaxAll) {
> + raw_pwrite_stream &OS,
> + MCCodeEmitter *CE, bool RelaxAll) {
> X86WinCOFFStreamer *S = new X86WinCOFFStreamer(C, AB, CE, OS);
> S->getAssembler().setRelaxAll(RelaxAll);
> return S;
>
> Modified: llvm/trunk/tools/llc/llc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llc/llc.cpp (original)
> +++ llvm/trunk/tools/llc/llc.cpp Tue Apr 14 17:14:34 2015
> @@ -335,6 +335,14 @@ static int compileModule(char **argv, LL
> << ": warning: ignoring -mc-relax-all because filetype != obj";
>
> {
> + raw_pwrite_stream *OS = &Out->os();
> + std::unique_ptr<buffer_ostream> BOS;
> + if (FileType != TargetMachine::CGFT_AssemblyFile &&
> + !Out->os().supportsSeeking()) {
> + BOS = make_unique<buffer_ostream>(*OS);
> + OS = BOS.get();
> + }
> +
> AnalysisID StartAfterID = nullptr;
> AnalysisID StopAfterID = nullptr;
> const PassRegistry *PR = PassRegistry::getPassRegistry();
> @@ -356,8 +364,8 @@ static int compileModule(char **argv, LL
> }
>
> // Ask the target to add backend passes as necessary.
> - if (Target->addPassesToEmitFile(PM, Out->os(), FileType, NoVerify,
> - StartAfterID, StopAfterID)) {
> + if (Target->addPassesToEmitFile(PM, *OS, FileType, NoVerify, StartAfterID,
> + StopAfterID)) {
> errs() << argv[0] << ": target does not support generation of this"
> << " file type!\n";
> return 1;
>
> Modified: llvm/trunk/tools/llvm-mc/llvm-mc.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/llvm-mc.cpp?rev=234950&r1=234949&r2=234950&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-mc/llvm-mc.cpp (original)
> +++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp Tue Apr 14 17:14:34 2015
> @@ -439,6 +439,8 @@ int main(int argc, char **argv) {
> if (!Out)
> return 1;
>
> + std::unique_ptr<buffer_ostream> BOS;
> + raw_pwrite_stream *OS = &Out->os();
> std::unique_ptr<MCStreamer> Str;
>
> std::unique_ptr<MCInstrInfo> MCII(TheTarget->createMCInstrInfo());
> @@ -460,7 +462,7 @@ int main(int argc, char **argv) {
> CE = TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx);
> MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, MCPU);
> }
> - auto FOut = llvm::make_unique<formatted_raw_ostream>(Out->os());
> + auto FOut = llvm::make_unique<formatted_raw_ostream>(*OS);
> Str.reset(TheTarget->createAsmStreamer(
> Ctx, std::move(FOut), /*asmverbose*/ true,
> /*useDwarfDirectory*/ true, IP, CE, MAB, ShowInst));
> @@ -469,10 +471,16 @@ int main(int argc, char **argv) {
> Str.reset(TheTarget->createNullStreamer(Ctx));
> } else {
> assert(FileType == OFT_ObjectFile && "Invalid file type!");
> +
> + if (!Out->os().supportsSeeking()) {
> + BOS = make_unique<buffer_ostream>(Out->os());
> + OS = BOS.get();
> + }
> +
> MCCodeEmitter *CE = TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx);
> MCAsmBackend *MAB = TheTarget->createMCAsmBackend(*MRI, TripleName, MCPU);
> - Str.reset(TheTarget->createMCObjectStreamer(TheTriple, Ctx, *MAB, Out->os(),
> - CE, *STI, RelaxAll,
> + Str.reset(TheTarget->createMCObjectStreamer(TheTriple, Ctx, *MAB, *OS, CE,
> + *STI, RelaxAll,
> /*DWARFMustBeAtTheEnd*/ false));
> if (NoExecStack)
> Str->InitSections(true);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list