[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