Home | History | Annotate | Download | only in MCTargetDesc
      1 //===-- ARMWinCOFFStreamer.cpp - ARM Target WinCOFF Streamer ----*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #include "ARMMCTargetDesc.h"
     11 #include "llvm/MC/MCWinCOFFStreamer.h"
     12 
     13 using namespace llvm;
     14 
     15 namespace {
     16 class ARMWinCOFFStreamer : public MCWinCOFFStreamer {
     17 public:
     18   ARMWinCOFFStreamer(MCContext &C, MCAsmBackend &AB, MCCodeEmitter &CE,
     19                      raw_pwrite_stream &OS)
     20       : MCWinCOFFStreamer(C, AB, CE, OS) {}
     21 
     22   void EmitAssemblerFlag(MCAssemblerFlag Flag) override;
     23   void EmitThumbFunc(MCSymbol *Symbol) override;
     24 };
     25 
     26 void ARMWinCOFFStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {
     27   switch (Flag) {
     28   default: llvm_unreachable("not implemented");
     29   case MCAF_SyntaxUnified:
     30   case MCAF_Code16:
     31     break;
     32   }
     33 }
     34 
     35 void ARMWinCOFFStreamer::EmitThumbFunc(MCSymbol *Symbol) {
     36   getAssembler().setIsThumbFunc(Symbol);
     37 }
     38 }
     39 
     40 MCStreamer *llvm::createARMWinCOFFStreamer(
     41     MCContext &Context, MCAsmBackend &MAB, raw_pwrite_stream &OS,
     42     MCCodeEmitter *Emitter, bool RelaxAll, bool IncrementalLinkerCompatible) {
     43   auto *S = new ARMWinCOFFStreamer(Context, MAB, *Emitter, OS);
     44   S->getAssembler().setIncrementalLinkerCompatible(IncrementalLinkerCompatible);
     45   return S;
     46 }
     47 
     48