If your system uses the SVr4 ABI (designed by Motorola), you will only be able to compile my library files lib/format.c and lib/getargs.c if your C-compiler supports the macro va_copy() or __va_copy() from stdarg.h. Mach/Next STep/Apple Rhapsody on ppc use a 'void *' for the type va_list so you don't need to make changes on these systems. Solaris/ppc (made in 1992) is the first UNIX implementation for the PPC. It includes the va_copy() macro that allows you to assign a C object of the type va_list in a system independent way. Linux/ppc uses exactly the same construct as Solaris for the type va_list. You will only be able to compile lib/format.c and lib/getargs.c if your C-compiler includes the macro va_copy() or __va_copy(). If this is not the case, you will need to upgrade your C-compiler first. GCC 2.8.0 and later includes this macro. Here is what Solaris /usr/include/sys/varargs.h looks like: /* * va_copy is a Solaris extension to provide a portable way to perform * a variable argument list ``bookmarking'' function. */ #if defined(__ppc) #define va_copy(to, from) ((to)[0] = (from)[0]) #else #define va_copy(to, from) ((to) = (from)) #endif To be able to compile my lib/format.c and lib/getargs.c on a OS implementation that uses an array for va_list, you will need this va_copy() enhancement too. The files mentioned above already compile on a PPC Apple Rhapsody system. But as mentioned before, Rhapsody uses a void * for va_list (maybe because Apple includes badly designed international printf code from BSD 4.4 that requires va_list to be void * to work). Notice: lib/format.c allows a %r format that needs additional features in stdarg.h. You need to know whether va_list is an array. I hope that GCC will include some definitions in future versions that allow to propagate va_list type objects from var args in function calls. GCC === If you are not using GCC 2.8.0, you can add the following definition to va-ppc.h : /usr/lib/gcc-lib/*-linux-gnulibc1/2.*/include/va-ppc.h #define va_copy(to, from) ((to)[0] = (from)[0]) and to all other va-*.h files: #define va_copy(to, from) ((to) = (from)) Important: Check before if you don't have a GCC that is already patched. Joerg