reverse order to easily support variadic arguments. Thus, instead of using the proper stdarg.h macros (that nowadays are compiler-dependent), it may be tempting to directly take the address of the last argument and considering it as the start of an array. This is a shortcut that avoid looping to get all the arguments as the CPU already pushed them on the stack before the call to the function. Unfortunately, such an assumption is strictly compiler-dependent and compilers are free to move the last argument on the stack, as a local variable, and return the address of the location where the argument was stored, if asked for. This will break things as the rest of the array's argument are stored elsewhere (typically, a couple of words above the location where the argument was stored). This patch fixes the issue by allowing ACK to take the shortcut and enabling gcc/llvm-gcc to follow the right way. |
||
---|---|---|
.. | ||
ack | ||
csu | ||
libc | ||
libcurses | ||
libdriver | ||
libedit | ||
libend | ||
libm | ||
libsys | ||
libtimers | ||
libutil | ||
ack_build.sh | ||
gnu_build.sh | ||
Makefile | ||
README |
ack_build.sh - for ACK library building gnu_build.sh - for GNU library building ack_build.sh obj - create objdirs for gnu libraries ack_build.sh depend - find dependencies of ack libraries ack_build.sh all - compile ack libraries ack_build.sh install - compile and install ack libraries ack_build.sh clean - clean for ack libraries gnu_build.sh obj - create objdirs for gnu libraries gnu_build.sh depend - find dependencies of gnu libraries gnu_build.sh all - compile gnu libraries gnu_build.sh install - compile and install gnu libraries gnu_build.sh clean - clean for gnu libraries