blob: f7eae0b82ba91a475ae4ac86fcb2823a454a50d3 [file] [log] [blame]
Shiva Chen056d8352018-01-26 07:53:07 +00001//===-- RISCVELFStreamer.cpp - RISCV ELF Target Streamer Methods ----------===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Shiva Chen056d8352018-01-26 07:53:07 +00006//
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
18using namespace llvm;
19
20// This part is for ELF object output.
21RISCVTargetELFStreamer::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
36MCELFStreamer &RISCVTargetELFStreamer::getStreamer() {
37 return static_cast<MCELFStreamer &>(Streamer);
38}
Alex Bradburybca0c3c2018-05-11 17:30:28 +000039
Alex Bradbury893e5bc2018-11-28 16:39:14 +000040void RISCVTargetELFStreamer::emitDirectiveOptionPush() {}
41void RISCVTargetELFStreamer::emitDirectiveOptionPop() {}
Alex Bradburybca0c3c2018-05-11 17:30:28 +000042void RISCVTargetELFStreamer::emitDirectiveOptionRVC() {}
43void RISCVTargetELFStreamer::emitDirectiveOptionNoRVC() {}
Alex Bradbury9c03e4c2018-11-12 14:25:07 +000044void RISCVTargetELFStreamer::emitDirectiveOptionRelax() {}
45void RISCVTargetELFStreamer::emitDirectiveOptionNoRelax() {}