blob: 62a087fb2e7226466d5e3f930fcce21b17e934d7 [file] [log] [blame]
Shiva Chen056d8352018-01-26 07:53:07 +00001//===-- RISCVELFStreamer.cpp - RISCV ELF Target Streamer Methods ----------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file provides RISCV specific target streamer methods.
11//
12//===----------------------------------------------------------------------===//
13
14#include "RISCVELFStreamer.h"
15#include "RISCVMCTargetDesc.h"
16#include "llvm/BinaryFormat/ELF.h"
17#include "llvm/MC/MCSubtargetInfo.h"
18
19using namespace llvm;
20
21// This part is for ELF object output.
22RISCVTargetELFStreamer::RISCVTargetELFStreamer(MCStreamer &S,
23 const MCSubtargetInfo &STI)
24 : RISCVTargetStreamer(S) {
25 MCAssembler &MCA = getStreamer().getAssembler();
26
27 const FeatureBitset &Features = STI.getFeatureBits();
28
29 unsigned EFlags = MCA.getELFHeaderEFlags();
30
31 if (Features[RISCV::FeatureStdExtC])
32 EFlags |= ELF::EF_RISCV_RVC;
33
34 MCA.setELFHeaderEFlags(EFlags);
35}
36
37MCELFStreamer &RISCVTargetELFStreamer::getStreamer() {
38 return static_cast<MCELFStreamer &>(Streamer);
39}
Alex Bradburybca0c3c2018-05-11 17:30:28 +000040
41void RISCVTargetELFStreamer::emitDirectiveOptionRVC() {}
42void RISCVTargetELFStreamer::emitDirectiveOptionNoRVC() {}
Alex Bradbury9c03e4c2018-11-12 14:25:07 +000043void RISCVTargetELFStreamer::emitDirectiveOptionRelax() {}
44void RISCVTargetELFStreamer::emitDirectiveOptionNoRelax() {}