portability with GCC