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)20AVRTargetStreamer::AVRTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {} 21 AVRTargetAsmStreamer(MCStreamer & S)22AVRTargetAsmStreamer::AVRTargetAsmStreamer(MCStreamer &S) 23 : AVRTargetStreamer(S) {} 24 finish()25void 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