To be able to do a hosted GCC cross-compiler/system-specific cross-compiler =========================================================================== /* NB: functions don't *need* to be implemented, just prototyped */ sys/types.h: pid_t errno.h: must exist stdlib.h: abort(), atexit(), atoi(), free(), getenv(), malloc() stdio.h: FILE, stderr, size_t, SEEK_SET, fflush(), fclose(), fopen(), fread(), fseek(), ftell(), fwrite(), setbuf(), fprintf(), vfprintf() string.h: size_t, memcpy(), memset(), strcpy(), strlen() time.h: must exist unistd.h: pid_t, fork(), execv(), execve(), execvp() /* NB: This list is ordered. i.e. cat needs stuff from asa to work! */ For sh ====== stdio.h ******* fgets() stdlib.h ******** exit() free() calloc() unistd.h ******** chdir() fork() execvp() getcwd() sys/wait.h ********** waitpid() signal.h ******** signal() SIG_DFL SIG_IGN For asa ======= stdio.h ******* fprintf() fgetc() fopen() fclose() For cal ======= stdio.h ******* fileno() unistd.h ******** isatty() For cat ======= unistd.h ******** write() For cksum ========= stdio.h ******* fseek() SEEK_SET For expand ========== stdlib.h ******** malloc() (if not already implemented for calloc) For link ======== unistd.h ******** link() For ln ====== unistd.h ******** access() unlink() symlink() fcntl.h ******* AT_SYMLINK_FOLLOW linkat() AT_FDCWD sys/stat.h ********** struct stat lstat() S_ISLNK string.h ******** strcpy() For pwd ======= stdlib.h ******** getenv(); For tty ======= unistd.h ******** ttyname()