LLVM  4.0.0
AVRELFStreamer.cpp
Go to the documentation of this file.
1 #include "AVRELFStreamer.h"
2 
3 #include "llvm/Support/ELF.h"
5 
6 #include "AVRMCTargetDesc.h"
7 
8 namespace llvm {
9 
11  unsigned EFlags = 0;
12 
13  // Set architecture
14  if (Features[AVR::ELFArchAVR1])
15  EFlags |= ELF::EF_AVR_ARCH_AVR1;
16  else if (Features[AVR::ELFArchAVR2])
17  EFlags |= ELF::EF_AVR_ARCH_AVR2;
18  else if (Features[AVR::ELFArchAVR25])
19  EFlags |= ELF::EF_AVR_ARCH_AVR25;
20  else if (Features[AVR::ELFArchAVR3])
21  EFlags |= ELF::EF_AVR_ARCH_AVR3;
22  else if (Features[AVR::ELFArchAVR31])
23  EFlags |= ELF::EF_AVR_ARCH_AVR31;
24  else if (Features[AVR::ELFArchAVR35])
25  EFlags |= ELF::EF_AVR_ARCH_AVR35;
26  else if (Features[AVR::ELFArchAVR4])
27  EFlags |= ELF::EF_AVR_ARCH_AVR4;
28  else if (Features[AVR::ELFArchAVR5])
29  EFlags |= ELF::EF_AVR_ARCH_AVR5;
30  else if (Features[AVR::ELFArchAVR51])
31  EFlags |= ELF::EF_AVR_ARCH_AVR51;
32  else if (Features[AVR::ELFArchAVR6])
33  EFlags |= ELF::EF_AVR_ARCH_AVR6;
34  else if (Features[AVR::ELFArchAVRTiny])
35  EFlags |= ELF::EF_AVR_ARCH_AVRTINY;
36  else if (Features[AVR::ELFArchXMEGA1])
37  EFlags |= ELF::EF_AVR_ARCH_XMEGA1;
38  else if (Features[AVR::ELFArchXMEGA2])
39  EFlags |= ELF::EF_AVR_ARCH_XMEGA2;
40  else if (Features[AVR::ELFArchXMEGA3])
41  EFlags |= ELF::EF_AVR_ARCH_XMEGA3;
42  else if (Features[AVR::ELFArchXMEGA4])
43  EFlags |= ELF::EF_AVR_ARCH_XMEGA4;
44  else if (Features[AVR::ELFArchXMEGA5])
45  EFlags |= ELF::EF_AVR_ARCH_XMEGA5;
46  else if (Features[AVR::ELFArchXMEGA6])
47  EFlags |= ELF::EF_AVR_ARCH_XMEGA6;
48  else if (Features[AVR::ELFArchXMEGA7])
49  EFlags |= ELF::EF_AVR_ARCH_XMEGA7;
50 
51  return EFlags;
52 }
53 
55  const MCSubtargetInfo &STI)
56  : AVRTargetStreamer(S) {
57 
59  unsigned EFlags = MCA.getELFHeaderEFlags();
60 
61  EFlags |= getEFlagsForFeatureSet(STI.getFeatureBits());
62 
63  MCA.setELFHeaderEFlags(EFlags);
64 }
65 
66 } // end namespace llvm
void setELFHeaderEFlags(unsigned Flags)
Definition: MCAssembler.h:231
AVRELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
unsigned getELFHeaderEFlags() const
ELF e_header flags.
Definition: MCAssembler.h:230
Streaming machine code generation interface.
Definition: MCStreamer.h:161
MCAssembler & getAssembler()
MCELFStreamer & getStreamer()
const FeatureBitset & getFeatureBits() const
getFeatureBits - Return the feature bits.
A generic AVR target output stream.
MCSubtargetInfo - Generic base class for all target subtargets.
static unsigned getEFlagsForFeatureSet(const FeatureBitset &Features)
const FeatureBitset Features