From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Henderson To: "David O'Brien" Cc: Zack Weinberg , rittle@rsch.comm.mot.com, gcc@gcc.gnu.org Subject: Re: FreeBSD 4.0 Date: Thu, 30 Sep 1999 18:02:00 -0000 Message-ID: <19990916144800.B14651@cygnus.com> References: <199909150533.AAA14241@latour.rsch.comm.mot.com> <199909150601.XAA22053@zack.bitmover.com> <19990914231414.B17808@dragon.nuxi.com> <199909150726.AAA31243@zack.bitmover.com> <19990915011710.B25121@relay.nuxi.com> <199909151623.JAA02391@zack.bitmover.com> <19990915102403.I17808@dragon.nuxi.com> X-SW-Source: 1999-09n/msg00738.html Message-ID: <19990930180200.1gcds5Pi7AmFvvAYqL1kDjpeWeiWN2JaUtKdnt1NdqY@z> On Wed, Sep 15, 1999 at 10:24:03AM -0700, David O'Brien wrote: > #define va_start(ap, last) \ > (__builtin_next_arg(last), \ > (ap) = *(va_list *)__builtin_saveregs(), (ap).__pad = 0) This won't work any longer, for multiple reasons, either on Alpha or with any other target that passes arguments in registers in the presence of varargs. One of the changes actually fixes bugs that show up under rare conditions, so backward compatibility with old varargs headers isn't an option. Bottom line, with version 2.96 and later, you absolutely must use the builtins. Which means to me that you should just use gcc's stdarg.h always. r~