Я же вам расскажу, как знатно поебался с gcc.
Словил очень интересный нежданчик:
appears to be a bug with 64-bit integer division (int64_t, long long) for the Cortex-M0. GCC does a C code long long int division by calling the built-in AEABI helper function __aeabi_ldivmod which performs the division calculation. It does the calculation correctly but doesn't push/pop R6 and R7 which consequently corrupts the stack and scrambles the local variables.
via
Похоже ошибка кочующая и имеет свойство проявляться в разных сборках. Ошибка редкая, потому как никому в нормальном уме не понадобится int64 на m0. Никому, при условии что это не прописано в ТЗ и уже не выпущен миллион совместимых устройств. Вероятно, ручная правильная сборка кросс-gcc из исходников решит проблему, но я ленив.
Однако приятным бонусом было наткнуться на столь чудесную либу:
https://github.com/bobbl/libaeabi-cortexm0
Код столь компактен, что я подумываю над заменой всех остальных built-in.