| Index: include/llvm/Support/TargetRegistry.h
|
| diff --git a/include/llvm/Support/TargetRegistry.h b/include/llvm/Support/TargetRegistry.h
|
| index 9b11826e3609390e87baec018179e889dcaef177..232e209dd1a2ae2a3c6569c64423ce2a66f46088 100644
|
| --- a/include/llvm/Support/TargetRegistry.h
|
| +++ b/include/llvm/Support/TargetRegistry.h
|
| @@ -147,6 +147,11 @@ namespace llvm {
|
| raw_pwrite_stream &OS,
|
| MCCodeEmitter *Emitter,
|
| bool RelaxAll);
|
| + typedef MCStreamer *(*NaClAsmStreamerCtorTy)(MCContext &Context,
|
| + std::unique_ptr<formatted_raw_ostream> OS,
|
| + bool isVerboseAsm, bool useDwarfDirectory,
|
| + MCInstPrinter *IP, MCCodeEmitter *CE,
|
| + MCAsmBackend *MAB, bool ShowInst);
|
| typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S);
|
| typedef MCTargetStreamer *(*AsmTargetStreamerCtorTy)(
|
| MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint,
|
| @@ -234,6 +239,9 @@ namespace llvm {
|
| MachOStreamerCtorTy MachOStreamerCtorFn;
|
| ELFStreamerCtorTy ELFStreamerCtorFn;
|
|
|
| + // Construction functions for NaCl asm streamer, if registered.
|
| + NaClAsmStreamerCtorTy NaClAsmStreamerCtorFn;
|
| +
|
| /// Construction function for this target's null TargetStreamer, if
|
| /// registered (default = nullptr).
|
| NullTargetStreamerCtorTy NullTargetStreamerCtorFn;
|
| @@ -486,6 +494,22 @@ namespace llvm {
|
| return S;
|
| }
|
|
|
| + MCStreamer *createNaClAsmStreamer(MCContext &Ctx,
|
| + std::unique_ptr<formatted_raw_ostream> OS,
|
| + bool IsVerboseAsm, bool UseDwarfDirectory,
|
| + MCInstPrinter *InstPrint, MCCodeEmitter *CE,
|
| + MCAsmBackend *TAB, bool ShowInst) const {
|
| + if (NaClAsmStreamerCtorFn) {
|
| + formatted_raw_ostream &OSRef = *OS;
|
| + MCStreamer *S = NaClAsmStreamerCtorFn(Ctx, std::move(OS), IsVerboseAsm,
|
| + UseDwarfDirectory, InstPrint, CE,
|
| + TAB, ShowInst);
|
| + createAsmTargetStreamer(*S, OSRef, InstPrint, IsVerboseAsm);
|
| + return S;
|
| + }
|
| + return nullptr;
|
| + }
|
| +
|
| MCTargetStreamer *createAsmTargetStreamer(MCStreamer &S,
|
| formatted_raw_ostream &OS,
|
| MCInstPrinter *InstPrint,
|
| @@ -825,6 +849,10 @@ namespace llvm {
|
| T.ELFStreamerCtorFn = Fn;
|
| }
|
|
|
| + static void RegisterNaClAsmStreamer(Target &T, Target::NaClAsmStreamerCtorTy Fn) {
|
| + T.NaClAsmStreamerCtorFn = Fn;
|
| + }
|
| +
|
| static void
|
| RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn) {
|
| T.NullTargetStreamerCtorFn = Fn;
|
|
|