Я работаю над stm32f469, создавая некоторый голый код, чтобы попытаться использовать библиотеки libtomcrypt / libtomfastmath. Код, который я пытаюсь отладить, был проверен valgrind и работает на многих платформах, таких как macos, raspberrypi, ios, android.
Для простоты я делаю следующее, вызывая эту функцию int register_hash(const struct ltc_hash_descriptor *hash)
со статической переменной const, присваивая ей адрес: register_hash(&sha256_desc)
. Проблема в том, что когда я нахожусь внутри функции, указатель hash
равен NULL
, и я не могу понять, почему.
Я думал, что это будет переполнение стека, поэтому я предварительно заполнил стек постоянным значением 0xdeadbeef
, и я проверил, все ли значения были стерты или нет, и в результате стек не был переполнен.
При отладке я могу проверить значение по адресу, возвращенному &sha256_desc
, и память там тоже не повреждена.
Я не делаю ни динамического выделения, ни заполнения буфера, который мог бы переполнить и повредить память.
Я компилирую с arm-none-eabi-gcc
, версия 7-2017-q4-major.
В основном я ищу некоторые возможные источники проблем, поскольку у меня заканчиваются идеи.