OLD | NEW |
1 //===-- Support/TargetRegistry.h - Target Registration ----------*- C++ -*-===// | 1 //===-- Support/TargetRegistry.h - Target Registration ----------*- C++ -*-===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file exposes the TargetRegistry interface, which tools can use to access | 10 // This file exposes the TargetRegistry interface, which tools can use to access |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 raw_pwrite_stream &OS, | 140 raw_pwrite_stream &OS, |
141 MCCodeEmitter *Emitter, | 141 MCCodeEmitter *Emitter, |
142 bool RelaxAll); | 142 bool RelaxAll); |
143 typedef MCStreamer *(*MachOStreamerCtorTy)( | 143 typedef MCStreamer *(*MachOStreamerCtorTy)( |
144 MCContext &Ctx, MCAsmBackend &TAB, raw_pwrite_stream &OS, | 144 MCContext &Ctx, MCAsmBackend &TAB, raw_pwrite_stream &OS, |
145 MCCodeEmitter *Emitter, bool RelaxAll, bool DWARFMustBeAtTheEnd); | 145 MCCodeEmitter *Emitter, bool RelaxAll, bool DWARFMustBeAtTheEnd); |
146 typedef MCStreamer *(*COFFStreamerCtorTy)(MCContext &Ctx, MCAsmBackend &TAB, | 146 typedef MCStreamer *(*COFFStreamerCtorTy)(MCContext &Ctx, MCAsmBackend &TAB, |
147 raw_pwrite_stream &OS, | 147 raw_pwrite_stream &OS, |
148 MCCodeEmitter *Emitter, | 148 MCCodeEmitter *Emitter, |
149 bool RelaxAll); | 149 bool RelaxAll); |
| 150 typedef MCStreamer *(*NaClAsmStreamerCtorTy)(MCContext &Context, |
| 151 std::unique_ptr<formatted_raw_o
stream> OS, |
| 152 bool isVerboseAsm, bool useDwar
fDirectory, |
| 153 MCInstPrinter *IP, MCCodeEmitte
r *CE, |
| 154 MCAsmBackend *MAB, bool ShowIns
t); |
150 typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S); | 155 typedef MCTargetStreamer *(*NullTargetStreamerCtorTy)(MCStreamer &S); |
151 typedef MCTargetStreamer *(*AsmTargetStreamerCtorTy)( | 156 typedef MCTargetStreamer *(*AsmTargetStreamerCtorTy)( |
152 MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint, | 157 MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint, |
153 bool IsVerboseAsm); | 158 bool IsVerboseAsm); |
154 typedef MCTargetStreamer *(*ObjectTargetStreamerCtorTy)( | 159 typedef MCTargetStreamer *(*ObjectTargetStreamerCtorTy)( |
155 MCStreamer &S, const MCSubtargetInfo &STI); | 160 MCStreamer &S, const MCSubtargetInfo &STI); |
156 typedef MCRelocationInfo *(*MCRelocationInfoCtorTy)(StringRef TT, | 161 typedef MCRelocationInfo *(*MCRelocationInfoCtorTy)(StringRef TT, |
157 MCContext &Ctx); | 162 MCContext &Ctx); |
158 typedef MCSymbolizer *(*MCSymbolizerCtorTy)( | 163 typedef MCSymbolizer *(*MCSymbolizerCtorTy)( |
159 StringRef TT, LLVMOpInfoCallback GetOpInfo, | 164 StringRef TT, LLVMOpInfoCallback GetOpInfo, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 | 232 |
228 /// MCCodeEmitterCtorFn - Construction function for this target's | 233 /// MCCodeEmitterCtorFn - Construction function for this target's |
229 /// CodeEmitter, if registered. | 234 /// CodeEmitter, if registered. |
230 MCCodeEmitterCtorTy MCCodeEmitterCtorFn; | 235 MCCodeEmitterCtorTy MCCodeEmitterCtorFn; |
231 | 236 |
232 // Construction functions for the various object formats, if registered. | 237 // Construction functions for the various object formats, if registered. |
233 COFFStreamerCtorTy COFFStreamerCtorFn; | 238 COFFStreamerCtorTy COFFStreamerCtorFn; |
234 MachOStreamerCtorTy MachOStreamerCtorFn; | 239 MachOStreamerCtorTy MachOStreamerCtorFn; |
235 ELFStreamerCtorTy ELFStreamerCtorFn; | 240 ELFStreamerCtorTy ELFStreamerCtorFn; |
236 | 241 |
| 242 // Construction functions for NaCl asm streamer, if registered. |
| 243 NaClAsmStreamerCtorTy NaClAsmStreamerCtorFn; |
| 244 |
237 /// Construction function for this target's null TargetStreamer, if | 245 /// Construction function for this target's null TargetStreamer, if |
238 /// registered (default = nullptr). | 246 /// registered (default = nullptr). |
239 NullTargetStreamerCtorTy NullTargetStreamerCtorFn; | 247 NullTargetStreamerCtorTy NullTargetStreamerCtorFn; |
240 | 248 |
241 /// Construction function for this target's asm TargetStreamer, if | 249 /// Construction function for this target's asm TargetStreamer, if |
242 /// registered (default = nullptr). | 250 /// registered (default = nullptr). |
243 AsmTargetStreamerCtorTy AsmTargetStreamerCtorFn; | 251 AsmTargetStreamerCtorTy AsmTargetStreamerCtorFn; |
244 | 252 |
245 /// Construction function for this target's obj TargetStreamer, if | 253 /// Construction function for this target's obj TargetStreamer, if |
246 /// registered (default = nullptr). | 254 /// registered (default = nullptr). |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 MCInstPrinter *InstPrint, MCCodeEmitter *CE, | 487 MCInstPrinter *InstPrint, MCCodeEmitter *CE, |
480 MCAsmBackend *TAB, bool ShowInst) const { | 488 MCAsmBackend *TAB, bool ShowInst) const { |
481 formatted_raw_ostream &OSRef = *OS; | 489 formatted_raw_ostream &OSRef = *OS; |
482 MCStreamer *S = llvm::createAsmStreamer(Ctx, std::move(OS), IsVerboseAsm, | 490 MCStreamer *S = llvm::createAsmStreamer(Ctx, std::move(OS), IsVerboseAsm, |
483 UseDwarfDirectory, InstPrint, CE, | 491 UseDwarfDirectory, InstPrint, CE, |
484 TAB, ShowInst); | 492 TAB, ShowInst); |
485 createAsmTargetStreamer(*S, OSRef, InstPrint, IsVerboseAsm); | 493 createAsmTargetStreamer(*S, OSRef, InstPrint, IsVerboseAsm); |
486 return S; | 494 return S; |
487 } | 495 } |
488 | 496 |
| 497 MCStreamer *createNaClAsmStreamer(MCContext &Ctx, |
| 498 std::unique_ptr<formatted_raw_ostream> OS, |
| 499 bool IsVerboseAsm, bool UseDwarfDirectory, |
| 500 MCInstPrinter *InstPrint, MCCodeEmitter *CE, |
| 501 MCAsmBackend *TAB, bool ShowInst) const { |
| 502 if (NaClAsmStreamerCtorFn) { |
| 503 formatted_raw_ostream &OSRef = *OS; |
| 504 MCStreamer *S = NaClAsmStreamerCtorFn(Ctx, std::move(OS), IsVerboseAsm, |
| 505 UseDwarfDirectory, InstPrint, CE, |
| 506 TAB, ShowInst); |
| 507 createAsmTargetStreamer(*S, OSRef, InstPrint, IsVerboseAsm); |
| 508 return S; |
| 509 } |
| 510 return nullptr; |
| 511 } |
| 512 |
489 MCTargetStreamer *createAsmTargetStreamer(MCStreamer &S, | 513 MCTargetStreamer *createAsmTargetStreamer(MCStreamer &S, |
490 formatted_raw_ostream &OS, | 514 formatted_raw_ostream &OS, |
491 MCInstPrinter *InstPrint, | 515 MCInstPrinter *InstPrint, |
492 bool IsVerboseAsm) const { | 516 bool IsVerboseAsm) const { |
493 if (AsmTargetStreamerCtorFn) | 517 if (AsmTargetStreamerCtorFn) |
494 return AsmTargetStreamerCtorFn(S, OS, InstPrint, IsVerboseAsm); | 518 return AsmTargetStreamerCtorFn(S, OS, InstPrint, IsVerboseAsm); |
495 return nullptr; | 519 return nullptr; |
496 } | 520 } |
497 | 521 |
498 MCStreamer *createNullStreamer(MCContext &Ctx) const { | 522 MCStreamer *createNullStreamer(MCContext &Ctx) const { |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 | 842 |
819 static void RegisterMachOStreamer(Target &T, | 843 static void RegisterMachOStreamer(Target &T, |
820 Target::MachOStreamerCtorTy Fn) { | 844 Target::MachOStreamerCtorTy Fn) { |
821 T.MachOStreamerCtorFn = Fn; | 845 T.MachOStreamerCtorFn = Fn; |
822 } | 846 } |
823 | 847 |
824 static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn) { | 848 static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn) { |
825 T.ELFStreamerCtorFn = Fn; | 849 T.ELFStreamerCtorFn = Fn; |
826 } | 850 } |
827 | 851 |
| 852 static void RegisterNaClAsmStreamer(Target &T, Target::NaClAsmStreamerCtorTy
Fn) { |
| 853 T.NaClAsmStreamerCtorFn = Fn; |
| 854 } |
| 855 |
828 static void | 856 static void |
829 RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn) { | 857 RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn) { |
830 T.NullTargetStreamerCtorFn = Fn; | 858 T.NullTargetStreamerCtorFn = Fn; |
831 } | 859 } |
832 | 860 |
833 static void RegisterAsmTargetStreamer(Target &T, | 861 static void RegisterAsmTargetStreamer(Target &T, |
834 Target::AsmTargetStreamerCtorTy Fn) { | 862 Target::AsmTargetStreamerCtorTy Fn) { |
835 T.AsmTargetStreamerCtorFn = Fn; | 863 T.AsmTargetStreamerCtorFn = Fn; |
836 } | 864 } |
837 | 865 |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1205 static MCCodeEmitter *Allocator(const MCInstrInfo & /*II*/, | 1233 static MCCodeEmitter *Allocator(const MCInstrInfo & /*II*/, |
1206 const MCRegisterInfo & /*MRI*/, | 1234 const MCRegisterInfo & /*MRI*/, |
1207 MCContext & /*Ctx*/) { | 1235 MCContext & /*Ctx*/) { |
1208 return new MCCodeEmitterImpl(); | 1236 return new MCCodeEmitterImpl(); |
1209 } | 1237 } |
1210 }; | 1238 }; |
1211 | 1239 |
1212 } | 1240 } |
1213 | 1241 |
1214 #endif | 1242 #endif |
OLD | NEW |