================ @@ -263,11 +263,17 @@ bool AVRAsmPrinter::doFinalization(Module &M) { auto *Section = cast<MCSectionELF>(TLOF.SectionForGlobal(&GO, TM)); if (Section->getName().starts_with(".data")) NeedsCopyData = true; - else if (Section->getName().starts_with(".rodata") && SubTM->hasLPM()) + else if (Section->getName().starts_with(".rodata") && SubTM->hasLPM()) { // AVRs that have a separate program memory (that's most AVRs) store - // .rodata sections in RAM. - NeedsCopyData = true; - else if (Section->getName().starts_with(".bss")) + // .rodata sections in RAM, + // but XMEGA3 family maps all flash in the data space. + // Invoking __do_copy_data with 0 bytes to copy will crash, + // so we let the loader handle this for newer devices. + if (!(SubTM->hasFeatureSetFamilyXMEGA2() || ---------------- Patryk27 wrote:
Could we check for `FeatureFLMAP` in here instead? Feels like that's what it is supposed to do eventually, but we use family as a proxy for the actual flag we're interested in. https://github.com/llvm/llvm-project/pull/146244 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits