diff --git a/chips/qemu_arm_mps2/src/vectors_m3.rs b/chips/qemu_arm_mps2/src/vectors_m3.rs index cc6afdcae4..f05cb384a0 100644 --- a/chips/qemu_arm_mps2/src/vectors_m3.rs +++ b/chips/qemu_arm_mps2/src/vectors_m3.rs @@ -13,6 +13,10 @@ use cortexm3::{CortexM3, CortexMVariant, initialize_ram_jump_to_main, unhandled_ extern "C" { // _estack is not really a function, but it makes the types work. // You should never actually invoke it!! + // + // Keep this in the chip crate: `process_console` declares `_estack` as + // data, and LTO can't hold both types in one unit -- it renames ours to + // `_estack.1` and the link then fails, blaming an unrelated line. fn _estack(); } diff --git a/chips/qemu_arm_mps2/src/vectors_m4.rs b/chips/qemu_arm_mps2/src/vectors_m4.rs index b18e2b6c26..e48bbd448c 100644 --- a/chips/qemu_arm_mps2/src/vectors_m4.rs +++ b/chips/qemu_arm_mps2/src/vectors_m4.rs @@ -13,6 +13,10 @@ use cortexm4::{CortexM4, CortexMVariant, initialize_ram_jump_to_main, unhandled_ extern "C" { // _estack is not really a function, but it makes the types work. // You should never actually invoke it!! + // + // Keep this in the chip crate: `process_console` declares `_estack` as + // data, and LTO can't hold both types in one unit -- it renames ours to + // `_estack.1` and the link then fails, blaming an unrelated line. fn _estack(); }