diff options
Diffstat (limited to 'lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp')
-rw-r--r-- | lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp b/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp new file mode 100644 index 000000000000..6428b11cfe9c --- /dev/null +++ b/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp @@ -0,0 +1,42 @@ +//===-- RISCVELFStreamer.cpp - RISCV ELF Target Streamer Methods ----------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file provides RISCV specific target streamer methods. +// +//===----------------------------------------------------------------------===// + +#include "RISCVELFStreamer.h" +#include "RISCVMCTargetDesc.h" +#include "llvm/BinaryFormat/ELF.h" +#include "llvm/MC/MCSubtargetInfo.h" + +using namespace llvm; + +// This part is for ELF object output. +RISCVTargetELFStreamer::RISCVTargetELFStreamer(MCStreamer &S, + const MCSubtargetInfo &STI) + : RISCVTargetStreamer(S) { + MCAssembler &MCA = getStreamer().getAssembler(); + + const FeatureBitset &Features = STI.getFeatureBits(); + + unsigned EFlags = MCA.getELFHeaderEFlags(); + + if (Features[RISCV::FeatureStdExtC]) + EFlags |= ELF::EF_RISCV_RVC; + + MCA.setELFHeaderEFlags(EFlags); +} + +MCELFStreamer &RISCVTargetELFStreamer::getStreamer() { + return static_cast<MCELFStreamer &>(Streamer); +} + +void RISCVTargetELFStreamer::emitDirectiveOptionRVC() {} +void RISCVTargetELFStreamer::emitDirectiveOptionNoRVC() {} |