MBR (mbr) wrote,
MBR
mbr

Category:

gcc

Блядь, ну вот почему так? У всех нормальных людей пятничный пост про сиськи там, ну или выпивку на худой конец.

Я же вам расскажу, как знатно поебался с 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.
Tags: embed, it
Subscribe

  • Победил битрикс

    Раньше рассказывал, как мы пытаемся битрикс внедрить. Сначала просто дал задачу вебщику подергать странички и собрать отчет по линкам. Ад. Там…

  • Советский инженер - это звучит гордо

    Порадовался с последнего стеба vladimir_akinin над программистами. Однако в комменты выползло какое-то количество старых пердунов,…

  • я все о том же

    После процессоров начались проблемы c dc/dc. И на этом явно все не остановится. Брал в эти выходные OSB по 1000 р. за штуку. Остались последние,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments