I'm not sure it's the compiler, here's the point where it fails, first is my try, second is the try I found on a clean installed karmic on the efikamx: set -ex; \ for file in ../include/mysql/plugin.h ../include/mysql.h; do \ gcc -E -nostdinc -dI \ -I../include \ -I../include/mysql \ -I../sql \ -I./include \ -I./include/mysql \ -I./sql \ $file 2>/dev/null | \ /bin/sed -e '/^# /d' \ -e '/^[ ]*$/d' \ -e '/^#pragma GCC set_debug_pwd/d' \ -e '/^#ident/d' > \ ./abi_check.out; \ /usr/bin/diff -w $file.pp ./abi_check.out; \ /bin/rm ./abi_check.out; \ done + for file in ../include/mysql/plugin.h ../include/mysql.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql/plugin.h + /usr/bin/diff -w ../include/mysql/plugin.h.pp ./abi_check.out + /bin/rm ./abi_check.out + for file in ../include/mysql/plugin.h ../include/mysql.h + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' + /usr/bin/diff -w ../include/mysql.h.pp ./abi_check.out 2,674d1 < typedef char my_bool; < typedef int my_socket; < #include "mysql_version.h" < #include "mysql_com.h" < enum enum_server_command .......... set -ex; \ for file in ../include/mysql/plugin.h ../include/mysql.h; do \ gcc -E -nostdinc -dI \ -I../include \ -I../include/mysql \ -I../sql \ -I./include \ -I./include/mysql \ -I./sql \ $file 2>/dev/null | \ /bin/sed -e '/^# /d' \ -e '/^[ ]*$/d' \ -e '/^#pragma GCC set_debug_pwd/d' \ -e '/^#ident/d' > \ ./abi_check.out; \ /usr/bin/diff -w $file.pp ./abi_check.out; \ /bin/rm ./abi_check.out; \ done + for file in ../include/mysql/plugin.h ../include/mysql.h + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql/plugin.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' + /usr/bin/diff -w ../include/mysql/plugin.h.pp ./abi_check.out + /bin/rm ./abi_check.out + for file in ../include/mysql/plugin.h ../include/mysql.h + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' + /usr/bin/diff -w ../include/mysql.h.pp ./abi_check.out + /bin/rm ./abi_check.out make[3]: Leaving directory `/home/markos/mysql-dfsg-5.1-5.1.37/builddir' make[2]: Leaving directory `/home/markos/mysql-dfsg-5.1-5.1.37/builddir' Making all in include make[2]: Entering directory `/home/markos/mysql-dfsg-5.1-5.1.37/builddir/include' /usr/bin/make all-am ................ See the difference? himt, this is what breaks the build: (mine) + for file in ../include/mysql/plugin.h ../include/mysql.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql/plugin.h (original) + for file in ../include/mysql/plugin.h ../include/mysql.h + gcc -E -nostdinc -dI -I../include -I../include/mysql -I../sql -I./include -I./include/mysql -I./sql ../include/mysql/plugin.h + /bin/sed -e '/^# /d' -e '/^[ ]*$/d' -e '/^#pragma GCC set_debug_pwd/d' -e '/^#ident/d' I'll look into it a bit more.