Commit a5c8d722 by Richard Stallman

In the first part (instead of va-*.h), define __gnuc_va_list, as in gstdarg.h.

 In the first part (instead of va-*.h), define
__gnuc_va_list, as in gstdarg.h.  Always use __gunc_va_list
as basis for defining va_list.
Move interaction with BSD-NET2 down to where va_list itself is defined.

From-SVN: r2336
parent 3041f3be
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* Use the system's macros with the system's compiler. */ /* Use the system's macros with the system's compiler. */
#include <varargs.h> #include <varargs.h>
#else #else
/* Record that varargs.h is defined; this turns off stdarg.h. */ /* Record that this is varargs.h; this turns off stdarg.h. */
#ifndef _VARARGS_H #ifndef _VARARGS_H
#define _VARARGS_H #define _VARARGS_H
...@@ -64,30 +64,15 @@ ...@@ -64,30 +64,15 @@
/* The ... causes current_function_varargs to be set in cc1. */ /* The ... causes current_function_varargs to be set in cc1. */
#define va_dcl int __builtin_va_alist; __va_ellipsis #define va_dcl int __builtin_va_alist; __va_ellipsis
#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ /* Define __gnuc_va_list, just as in gstdarg.h. */
#undef _VA_LIST
#endif
/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */ #ifndef __GNUC_VA_LIST
/* But in 4.3bsd-net2, _VA_LIST_ has another meaning. So ignore it. */ #define __GNUC_VA_LIST
#if !defined (_VA_LIST_) || defined (_ANSI_H_) #ifdef __svr4__
/* The macro _VA_LIST is used in SCO Unix 3.2. */ typedef char *__gnuc_va_list;
#ifndef _VA_LIST #else
#ifndef _VA_LIST_ typedef void *__gnuc_va_list;
#define _VA_LIST_
#endif #endif
#define _VA_LIST
/* Make this a macro rather than a typedef, so we can undef any other defn. */
#define va_list __va___list
typedef char * __va___list;
#endif /* _VA_LIST */
#endif /* !defined (_VA_LIST_) || defined (_ANSI_H_) */
/* In 4.3bsd-net2, it is said we must #undef this.
I hope this successfully identifies that system.
I don't know why this works--rms. */
#ifdef _ANSI_H_
#undef _VA_LIST_
#endif #endif
#define va_start(AP) AP=(char *) &__builtin_va_alist #define va_start(AP) AP=(char *) &__builtin_va_alist
...@@ -112,14 +97,19 @@ typedef char * __va___list; ...@@ -112,14 +97,19 @@ typedef char * __va___list;
#endif /* not sparc */ #endif /* not sparc */
#endif /* not _VARARGS_H */ #endif /* not _VARARGS_H */
#ifdef __GNUC_VA_LIST /* Define va_list from __gnuc_va_list. */
/* If an include file defined __GNUC_VA_LIST,
copy it into va_list. */
#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */
#undef _VA_LIST #undef _VA_LIST
#endif #endif
/* In 4.3bsd-net2, _VA_LIST_ is defined by machine/ansi.h, but no
typedef for va_list is in that file. Undef _VA_LIST_ here
so we do define va_list. */
#ifdef _ANSI_H_
#undef _VA_LIST_
#endif
/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */ /* The macro _VA_LIST_ is the same thing used by this file in Ultrix. */
#ifndef _VA_LIST_ #ifndef _VA_LIST_
/* The macro _VA_LIST is used in SCO Unix 3.2. */ /* The macro _VA_LIST is used in SCO Unix 3.2. */
...@@ -129,6 +119,17 @@ typedef char * __va___list; ...@@ -129,6 +119,17 @@ typedef char * __va___list;
typedef __gnuc_va_list va_list; typedef __gnuc_va_list va_list;
#endif /* _VA_LIST */ #endif /* _VA_LIST */
#endif /* _VA_LIST_ */ #endif /* _VA_LIST_ */
#endif /* __GNUC_VA_LIST */
/* I think that in 4.3bsd-net2 there is some need
to leave _VA_LIST_ undefined after. I don't know why. -- rms. */
#ifdef _ANSI_H_
#undef _VA_LIST_
#endif
/* The next BSD release (if there is one) wants this symbol to be
undefined instead of _VA_LIST_. */
#ifdef _BSD_VA_LIST
#undef _BSD_VA_LIST
#endif
#endif /* __GNUC__ */ #endif /* __GNUC__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment