Спасибо всем! Разобрался. Добавил в строку g++ к опции '-Wall' дополнительно '-Wextra -Werror' Поправил код, пересобрал все, что было. В итоге в выводе появились числа, размер которых не берусь сказать... Очень большие числа, в общем. Начал копать с gdb и обнаружил-таки где на самом деле оказались грабли. Есть у меня код, который писался еще в 1996г. Так там в описании одной структуры все целочисленные member-ы были либо long, либо unsigned long. А в функциях новых везде int-ами пользовался или unsigned int-ами. А в x86_64 оказывается, что размер long и long long 8 байт, а int - 4. А под x86 было наоборот, long и int 4 байта, а long long - 8. Я, честно говоря, только сегодня узнал, что так дела обстоят. Везде во всем ранее написанном коде позаменял нафиг все long на int и все сразу заработало как надо. Эх, как говорится, век живи, век учись... :)
|