#################################################################### # This file defines probes for local features that vmalloc requires. # Such probes are interpreted by the "iffe" language interpreter. # Results are stored in the FEATURE directory. # Written by Kiem-Phong Vo (08/15/95). #################################################################### lib atexit lib onexit lib getpagesize hdr stat hdr stdlib sys stat typ ssize_t hdr malloc lib mallopt lib mallinfo lib mstats hdr alloca std malloc note{ stuck with standard malloc }end noexecute{ _BEGIN_EXTERNS_ extern void _exit _ARG_((int)); extern char* strdup _ARG_((const char*)); #if _STD_ char* malloc(unsigned n) { _exit(0); return 0; } #else char* malloc(n) unsigned n; { _exit(0); return 0; } #endif _END_EXTERNS_ main() { strdup("yo"); _exit(1); } }end lib alloca note{ alloca exists }end compile{ #if _hdr_alloca #include #endif main() { alloca(10); } }end mal alloca note{ alloca is based on malloc() }end execute{ #if _hdr_alloca #include #endif #if _STD_ void* malloc(unsigned int size) #else void* malloc(size) unsigned int size; #endif { exit(0); return 0; } main() { alloca(10); return 1; } }end stk down note{ stack grows downward }end execute{ static growdown() { static char* addr = 0; char array[4]; if(!addr) { addr = &array[0]; return growdown(); } else if(addr < &array[0]) return 0; else return 1; } main() { return growdown() ? 0 : 1; } }end exit cleanup note{ stuck with standard _cleanup }end execute{ #include _BEGIN_EXTERNS_ extern void exit _ARG_((int)); extern void _exit _ARG_((int)); extern void _cleanup(); void _cleanup() { _exit(0); } _END_EXTERNS_ main() { printf("cleanup\n"); exit(1); } }end