/* This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. */ /* Routines that must be linked into the core for lisp to work. */ #ifdef sun #ifndef MACH #if !defined(SUNOS) && !defined(SOLARIS) #define SUNOS #endif #endif #endif typedef int func(); extern func #define F(x) x, #if !(defined(irix) || defined(SOLARIS)) /* XXXfixme next line probably wrong; was previous behavior */ #define D(x) x, #else #define D(x) #endif #include "undefineds.h" #undef F #undef D exit; /* just a random function known to exist */ #if defined(SOLARIS) || defined(irix) #ifdef irix int errno; /* hack to be sure works with newer libc without having to redump */ /* causes libc to be relocated to match cmucl rather than vice versa */ #endif extern int #define F(x) #define D(x) x, #include "undefineds.h" #undef F #undef D errno; /* a random variable known to exist */ int reference_random_symbols(void) { int a; #if defined(SOLARIS) && defined(__GNUC__) /* * For some reason, gcc 3.0 still deletes function calls here, even * with -O0. I don't know why. So, we don't define the functions * here, but define them in the table below. */ #define F(x) #else #define F(x) x(0); #endif #define D(x) a+=x; #include "undefineds.h" #undef F #undef D return a; } #if defined(SOLARIS) && defined(__GNUC__) /* * If we reference the functions here, gcc 3.0 will leave them in the * object file. However, don't try to put the data symbols here. It * will cause CMUCL to crash doing a get_timezone. */ func *reference_random_symbols_table[] = { #define F(x) x, #define D(x) #include "undefineds.h" #undef F #undef D exit /* a random function known to exist */ }; #endif #else #if defined(SVR4) extern char *tzname[]; extern int daylight; extern long altzone; extern long timezone; #endif func *reference_random_symbols[] = { #define F(x) x, /* XXXfixme next line is probably wrong but was previous behavior */ #define D(x) &x, #include "undefineds.h" #undef F #undef D exit /* a random function known to exist */ }; #endif