blob: 2b45d9adc7e903e4865ba4ff47dd638ab5d57a4b [file] [log] [blame]
Dylan McKay28ae3172016-05-21 00:35:07 +00001//===-- 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
Dylan McKay0fc5fe02017-09-11 10:32:51 +000016#include "llvm/MC/MCContext.h"
17
Dylan McKay28ae3172016-05-21 00:35:07 +000018namespace llvm {
19
20AVRTargetStreamer::AVRTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {}
21
22AVRTargetAsmStreamer::AVRTargetAsmStreamer(MCStreamer &S)
23 : AVRTargetStreamer(S) {}
24
Dylan McKay0fc5fe02017-09-11 10:32:51 +000025void 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
Dylan McKay28ae3172016-05-21 00:35:07 +000043} // end namespace llvm
44