1 Star 0 Fork 1

sina_woker/calltree

forked from Ray/calltree 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.ppc 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
alpha 提交于 2019-09-15 00:30 . Add source code from calltree-2.3.tar.bz2
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lin-binghua/calltree.git
[email protected]:lin-binghua/calltree.git
lin-binghua
calltree
calltree
master

搜索帮助