• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- AVRTargetStreamer.cpp - AVR 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 AVR specific target streamer methods.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "AVRTargetStreamer.h"
15 
16 #include "llvm/MC/MCContext.h"
17 
18 namespace llvm {
19 
AVRTargetStreamer(MCStreamer & S)20 AVRTargetStreamer::AVRTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
21 
AVRTargetAsmStreamer(MCStreamer & S)22 AVRTargetAsmStreamer::AVRTargetAsmStreamer(MCStreamer &S)
23     : AVRTargetStreamer(S) {}
24 
finish()25 void AVRTargetStreamer::finish() {
26   MCStreamer &OS = getStreamer();
27   MCContext &Context = OS.getContext();
28 
29   MCSymbol *DoCopyData = Context.getOrCreateSymbol("__do_copy_data");
30   MCSymbol *DoClearBss = Context.getOrCreateSymbol("__do_clear_bss");
31 
32   // FIXME: We can disable __do_copy_data if there are no static RAM variables.
33 
34   OS.emitRawComment(" Declaring this symbol tells the CRT that it should");
35   OS.emitRawComment("copy all variables from program memory to RAM on startup");
36   OS.EmitSymbolAttribute(DoCopyData, MCSA_Global);
37 
38   OS.emitRawComment(" Declaring this symbol tells the CRT that it should");
39   OS.emitRawComment("clear the zeroed data section on startup");
40   OS.EmitSymbolAttribute(DoClearBss, MCSA_Global);
41 }
42 
43 } // end namespace llvm
44 
45