Problem statement I recently came across a situation in a project where I had the following code: 1 2 3 4 5 6 7 8 9 10 struct FaultInfo final { uint32_t r0; uint32_t r1; // And all the other register state of a Cortex-M0+ processor // ... uint32_t crc; }; [[gnu::section(".uninit")]] volatile FaultInfo fault_data; I was using this static region of data to persist some fault information across reboots, to log it on the next boot after recovering from the fault.