size_t and ptrdiff_t should be unsigned long and long, respectively.
(Because GNU's alloca.h unconditionally #undef's alloca) Also, remove gcc specific sections in headers. and instead change tests such that gcc does not use them.