It means the total size of everything you placed in the FLASH region (code, constants, the vector table, and the stored initial values of .data) exceeds the LENGTH you declared for FLASH in the linker script, your program doesn't fit the chip's flash. This is the linker doing you a favor by catching at build time what would otherwise be a corrupt or non-functional image. The responses, roughly in order: first verify the region size in the script actually matches the part (a wrong LENGTH is an easy mistake); then reduce the footprint, enable -ffunction-sections -fdata-sections with --gc-sections so unreferenced code/data is dropped, build with size optimization (-Os), switch to a smaller C library (newlib-nano, and avoid pulling in full floating-point printf), and remove dead code or large constant tables (or move them if there's a better region); inspect what's big with size and the linker map file (-Wl,-Map), which shows per-symbol and per-section sizes so you can find the offender; and if it genuinely needs more, choose a part with more flash. The analogous RAM overflow means your data/bss/stack don't fit RAM. The key mindset is that this is a real resource constraint surfaced early, not a tooling glitch, you analyze the map file to see where the space went and trim accordingly.
Debugging & Toolchain · Interview question
The linker reports "region FLASH overflowed by N bytes." What does that mean and what do you do?
A strong answer
What a weak answer sounds like
You know the answer. Do you know what gets you dinged?
Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.
From the lesson
Linker Scripts & Memory Sections
Telling the linker the chip's memory map: MEMORY and SECTIONS place .text in flash and .data/.bss in RAM, and the VMA-vs-LMA split is why startup code must copy initialized data.