| //===-- 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 |
| |