📄 readme.ppc
字号:
If your system uses the SVr4 ABI (designed by Motorola), you will onlybe able to compile my library files lib/format.c and lib/getargs.c if yourC-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_listso 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 thetype 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 thecase, you will need to upgrade your C-compiler first. GCC 2.8.0 and laterincludes 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))#endifTo be able to compile my lib/format.c and lib/getargs.c on a OSimplementation that uses an array for va_list, you will needthis 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 becauseApple includes badly designed international printf code from BSD 4.4that 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -