1 //===- HexagonMCELFStreamer.h - Hexagon subclass of MCElfStreamer ---------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef HEXAGONMCELFSTREAMER_H
11 #define HEXAGONMCELFSTREAMER_H
13 #include "MCTargetDesc/HexagonMCCodeEmitter.h"
14 #include "MCTargetDesc/HexagonMCInstrInfo.h"
15 #include "MCTargetDesc/HexagonMCTargetDesc.h"
16 #include "llvm/MC/MCELFStreamer.h"
17 #include "HexagonTargetStreamer.h"
21 class HexagonMCELFStreamer : public MCELFStreamer {
22 std::unique_ptr<MCInstrInfo> MCII;
25 HexagonMCELFStreamer(MCContext &Context, MCAsmBackend &TAB,
26 raw_pwrite_stream &OS, MCCodeEmitter *Emitter)
27 : MCELFStreamer(Context, TAB, OS, Emitter),
28 MCII(createHexagonMCInstrInfo()) {}
30 virtual void EmitInstruction(const MCInst &Inst,
31 const MCSubtargetInfo &STI) override;
32 void EmitSymbol(const MCInst &Inst);
33 void HexagonMCEmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
34 unsigned ByteAlignment,
36 void HexagonMCEmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
37 unsigned ByteAlignment, unsigned AccessSize);
40 MCStreamer *createHexagonELFStreamer(MCContext &Context, MCAsmBackend &MAB,
41 raw_pwrite_stream &OS, MCCodeEmitter *CE);