You're using gcc without properly installing the gcc fixed include files. Or you ran fixincludes after installing gcc w/o moving the gcc supplied varargs.h and stdarg.h files out of the way and moving them back again later. This often happens when people install gcc from a binary distribution. If there's a tmp directory in gcc's include directory, fixincludes didn't complete. You should have run "just-fixinc" instead.
Another possible cause is that you're using ``gcc -I/usr/include.''
Reinstall gcc or upgrade to gcc 2.8.0 or later, which doesn't require a reinstallation after every OS upgrade, if you run Solaris 2.5 or later.