1 //===-- RISCVELFStreamer.cpp - RISCV ELF Target Streamer Methods ----------===// 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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file provides RISCV specific target streamer methods. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #include "RISCVELFStreamer.h" 14 #include "RISCVMCTargetDesc.h" 15 #include "llvm/BinaryFormat/ELF.h" 16 #include "llvm/MC/MCSubtargetInfo.h" 17 18 using namespace llvm; 19 20 // This part is for ELF object output. 21 RISCVTargetELFStreamer::RISCVTargetELFStreamer(MCStreamer &S, 22 const MCSubtargetInfo &STI) 23 : RISCVTargetStreamer(S) { 24 MCAssembler &MCA = getStreamer().getAssembler(); 25 26 const FeatureBitset &Features = STI.getFeatureBits(); 27 28 unsigned EFlags = MCA.getELFHeaderEFlags(); 29 30 if (Features[RISCV::FeatureStdExtC]) 31 EFlags |= ELF::EF_RISCV_RVC; 32 33 MCA.setELFHeaderEFlags(EFlags); 34 } 35 36 MCELFStreamer &RISCVTargetELFStreamer::getStreamer() { 37 return static_cast<MCELFStreamer &>(Streamer); 38 } 39 40 void RISCVTargetELFStreamer::emitDirectiveOptionPush() {} 41 void RISCVTargetELFStreamer::emitDirectiveOptionPop() {} 42 void RISCVTargetELFStreamer::emitDirectiveOptionRVC() {} 43 void RISCVTargetELFStreamer::emitDirectiveOptionNoRVC() {} 44 void RISCVTargetELFStreamer::emitDirectiveOptionRelax() {} 45 void RISCVTargetELFStreamer::emitDirectiveOptionNoRelax() {} 46