Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Вымогатель припоя
Сообщения: 572
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

calloc объединяет две функции - malloc и memset. В newlib функция calloc (равно как и malloc) обернута в макрос для связи с разными компиляторами. Как это сделано в вашем случае портирования - фиг знает. Баги то в основном и возникают при вот таких трансформациях одного к другому.
А сама оптимизация, как инструмент настройки компилятора, не виновата.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

там в модуле "lib.c" кастомные реализации библиотечных malloc(), memcpy(), memset(), strlen() и прочих функций, которые оптимизатор почему-то выкидывает из проекта, что и приводит к ошибке при линковке.
Реклама
Вымогатель припоя
Сообщения: 572
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

А, ну дак в этих кастомных реализациях, либо в их вызовах и следует искать ошибку. Я показывал ранее, как именно выбрасывается неиспользуемый код.
Так же, для GCC можно задать индивидуальные для каждой функции настройки оптимизации при помощи атрибута __attribute__((optimize("O0"))) void Foo(); где "O0", "O1", "O2", "O3", "Os", "Of" - указание уровня оптимизации.
Ответить

Вернуться в «ARM»