On Sun, Nov 26, 2006 at 10:39:00AM +0300, Денис Смирнов wrote: > Прошу помощи по dropbear -- не понимаю почему он не собирается с новым > toolchain. Обновление версии из апстрима не помогло. > > Сносит крышу в районе declarations для функций работы с памятью (memcpy, > malloc, и т.д.). Он позволяет макросами переопределить эти функции, для > использования нестандартных аллокаторов. Я этой функциональностью не > пользуюсь, но сборка все равно останавливается с невнятной диагностикой. > > In file included from ./src/headers/tomcrypt.h:66, > from src/ciphers/aes/aes.c:33: > ./src/headers/tomcrypt_cfg.h:20: error: expected > declaration specifiers or '...' before numeric constant > ./src/headers/tomcrypt_cfg.h:20: error: expected ')' > before '!=' token > ./src/headers/tomcrypt_cfg.h:20: error: expected ')' > before '?' token Смотрел то, что есть под рукой - dropbear-0.45-alt3.src.rpm; там проблема возникает из-за того, что: # 26 "/usr/include/bits/string3.h" 3 4 ... #define memcpy(dest,src,len) ((__bos0 (dest) != (size_t) -1) ? __builtin___memcpy_chk (dest, src, len, __bos0 (dest)) : __memcpy_ichk (dest, src, len)) ... # 10 "./mycrypt_custom.h" 2 ... #define XMEMCPY memcpy ... # 1 "./mycrypt_cfg.h" 1 ... void *((__builtin_object_size (void *dest, 0) != (size_t) -1) ? __builtin___memcpy_chk (void *dest, const void *src, size_t n, __builtin_object_size (void *dest, 0)) : __memcpy_ichk (void *dest, const void *src, size_t n)); Т.е., при использовании -D_FORTIFY_SOURCE=2 memcpy определяется как макрос, поэтому попытка объявления прототипа этой функции ни к чему хорошему не приводит. Нужно просто убрать из mycrypt_cfg.h строки вида: void *XMEMCPY(void *dest, const void *src, size_t n); Вообще подобные головоломки разгадываются путём замены опции -c в вызове gcc на -E -dD и анализа того, что получается после препроцессора. Можно ещё добавить -P и попробовать скомпилировать получившийся файл, чтобы найти строку с ошибкой.