58 lines · c
1//===--------- AVRMCELFStreamer.h - AVR subclass of MCELFStreamer ---------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H10#define LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H11 12#include "MCTargetDesc/AVRMCAsmInfo.h"13#include "MCTargetDesc/AVRMCTargetDesc.h"14#include "llvm/MC/MCAsmBackend.h"15#include "llvm/MC/MCCodeEmitter.h"16#include "llvm/MC/MCELFStreamer.h"17#include "llvm/MC/MCInstrInfo.h"18#include "llvm/MC/MCObjectWriter.h"19 20namespace llvm {21 22const int SIZE_LONG = 4;23const int SIZE_WORD = 2;24 25class AVRMCELFStreamer : public MCELFStreamer {26 std::unique_ptr<MCInstrInfo> MCII;27 28public:29 AVRMCELFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,30 std::unique_ptr<MCObjectWriter> OW,31 std::unique_ptr<MCCodeEmitter> Emitter)32 : MCELFStreamer(Context, std::move(TAB), std::move(OW),33 std::move(Emitter)),34 MCII(createAVRMCInstrInfo()) {}35 36 AVRMCELFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB,37 std::unique_ptr<MCObjectWriter> OW,38 std::unique_ptr<MCCodeEmitter> Emitter,39 MCAssembler *Assembler)40 : MCELFStreamer(Context, std::move(TAB), std::move(OW),41 std::move(Emitter)),42 MCII(createAVRMCInstrInfo()) {}43 44 void45 emitValueForModiferKind(const MCSymbol *Sym, unsigned SizeInBytes,46 SMLoc Loc = SMLoc(),47 AVRMCExpr::Specifier ModifierKind = AVR::S_AVR_NONE);48};49 50MCStreamer *createAVRELFStreamer(Triple const &TT, MCContext &Context,51 std::unique_ptr<MCAsmBackend> MAB,52 std::unique_ptr<MCObjectWriter> OW,53 std::unique_ptr<MCCodeEmitter> CE);54 55} // end namespace llvm56 57#endif // LLVM_LIB_TARGET_AVR_MCTARGETDESC_AVRMCELFSTREAMER_H58