README.ppc
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:2k
- 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 independant 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, cou 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