| //===-- AVRTargetStreamer.cpp - AVR Target Streamer Methods ---------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file provides AVR specific target streamer methods. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "AVRTargetStreamer.h" | |
| #include "llvm/MC/MCContext.h" | |
| namespace llvm { | |
| AVRTargetStreamer::AVRTargetStreamer(MCStreamer &S) : MCTargetStreamer(S) {} | |
| AVRTargetAsmStreamer::AVRTargetAsmStreamer(MCStreamer &S) | |
| : AVRTargetStreamer(S) {} | |
| void AVRTargetStreamer::finish() { | |
| MCStreamer &OS = getStreamer(); | |
| MCContext &Context = OS.getContext(); | |
| MCSymbol *DoCopyData = Context.getOrCreateSymbol("__do_copy_data"); | |
| MCSymbol *DoClearBss = Context.getOrCreateSymbol("__do_clear_bss"); | |
| // FIXME: We can disable __do_copy_data if there are no static RAM variables. | |
| OS.emitRawComment(" Declaring this symbol tells the CRT that it should"); | |
| OS.emitRawComment("copy all variables from program memory to RAM on startup"); | |
| OS.EmitSymbolAttribute(DoCopyData, MCSA_Global); | |
| OS.emitRawComment(" Declaring this symbol tells the CRT that it should"); | |
| OS.emitRawComment("clear the zeroed data section on startup"); | |
| OS.EmitSymbolAttribute(DoClearBss, MCSA_Global); | |
| } | |
| } // end namespace llvm | |