Параметр указателя NULL при вводе в область действия функции, но не при вызове функции

Я работаю над 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.

Я главным образом ищу некоторые возможные источники проблемы, поскольку у меня заканчиваются идеи.

1 ответ

Решение

Благодаря комментарию @Ctx я решил проблему, скомпилировав все файлы в одном месте, вместо того, чтобы компилировать статическую библиотеку, позже связанную с моей программой.

Я не знаю, в чем была проблема, и потому что у меня есть новые проблемы, блокирующие меня, я не буду пытаться исследовать дальше.

Другие вопросы по тегам