Annotation of gcc/gvarargs.h, revision 1.1.1.3

1.1       root        1: #ifndef __GNUC__
                      2: /* Use the system's macros with the system's compiler.  */
                      3: #include <varargs.h>
                      4: #else
1.1.1.3 ! root        5: /* Record that this is varargs.h; this turns off stdarg.h.  */
1.1       root        6: 
                      7: #ifndef _VARARGS_H
                      8: #define _VARARGS_H
                      9: 
                     10: #ifdef __sparc__
1.1.1.3 ! root       11: #include <va-sparc.h>
1.1       root       12: #else
                     13: #ifdef __spur__
1.1.1.3 ! root       14: #include <va-spur.h>
1.1       root       15: #else
                     16: #ifdef __mips__
1.1.1.3 ! root       17: #include <va-mips.h>
1.1       root       18: #else
                     19: #ifdef __i860__
1.1.1.3 ! root       20: #include <va-i860.h>
1.1       root       21: #else
                     22: #ifdef __pyr__
1.1.1.3 ! root       23: #include <va-pyr.h>
1.1       root       24: #else
                     25: #ifdef __m88k__
1.1.1.3 ! root       26: #include <va-m88k.h>
1.1       root       27: #else
1.1.1.3 ! root       28: #if defined(__hppa__) || defined(hp800)
        !            29: #include <va-pa.h>
1.1       root       30: #else
1.1.1.2   root       31: #ifdef __i960__
1.1.1.3 ! root       32: #include <va-i960.h>
        !            33: #else
        !            34: #ifdef __alpha__
        !            35: #include <va-alpha.h>
1.1.1.2   root       36: #else
1.1       root       37: 
                     38: #ifdef __NeXT__
                     39: 
                     40: /* On Next, erase any vestiges of stdarg.h.  */
                     41: 
1.1.1.3 ! root       42: #ifdef _ANSI_STDARG_H_
        !            43: #define _VA_LIST_
        !            44: #endif
        !            45: #define _ANSI_STDARG_H_ 
        !            46: 
1.1       root       47: #undef va_alist
                     48: #undef va_dcl
                     49: #undef va_list
                     50: #undef va_start
                     51: #undef va_end
                     52: #undef __va_rounded_size
                     53: #undef va_arg
                     54: #endif  /* __NeXT__ */
                     55: 
                     56: /* In GCC version 2, we want an ellipsis at the end of the declaration
                     57:    of the argument list.  GCC version 1 can't parse it.  */
                     58: 
                     59: #if __GNUC__ > 1
                     60: #define __va_ellipsis ...
                     61: #else
                     62: #define __va_ellipsis
                     63: #endif
                     64: 
                     65: /* These macros implement traditional (non-ANSI) varargs
                     66:    for GNU C.  */
                     67: 
                     68: #define va_alist  __builtin_va_alist
                     69: /* The ... causes current_function_varargs to be set in cc1.  */
                     70: #define va_dcl    int __builtin_va_alist; __va_ellipsis
                     71: 
1.1.1.3 ! root       72: /* Define __gnuc_va_list, just as in gstdarg.h.  */
1.1       root       73: 
1.1.1.3 ! root       74: #ifndef __GNUC_VA_LIST
        !            75: #define __GNUC_VA_LIST
        !            76: #if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX)
        !            77: typedef char *__gnuc_va_list;
        !            78: #else
        !            79: typedef void *__gnuc_va_list;
1.1       root       80: #endif
                     81: #endif
                     82: 
                     83: #define va_start(AP)  AP=(char *) &__builtin_va_alist
                     84: 
                     85: #define va_end(AP)
                     86: 
                     87: #define __va_rounded_size(TYPE)  \
                     88:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
                     89: 
1.1.1.3 ! root       90: #if defined (__arm__) || defined (__i386__) || defined (__ns32000__) || defined (__vax__)
        !            91: /* This is for little-endian machines; small args are padded upward.  */
        !            92: #define va_arg(AP, TYPE)                                               \
        !            93:  (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)),    \
        !            94:   *((TYPE *) (void *) ((char *) (AP) - __va_rounded_size (TYPE))))
        !            95: #else /* big-endian */
        !            96: /* This is for big-endian machines; small args are padded downward.  */
1.1       root       97: #define va_arg(AP, TYPE)                                               \
1.1.1.3 ! root       98:  (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)),    \
        !            99:   *((TYPE *) (void *) ((char *) (AP) - ((sizeof (TYPE) < 4             \
        !           100:                                         ? sizeof (TYPE)                \
        !           101:                                         : __va_rounded_size (TYPE))))))
        !           102: #endif /* big-endian */
1.1       root      103: 
1.1.1.3 ! root      104: #endif /* not alpha */
1.1.1.2   root      105: #endif /* not i960 */
1.1.1.3 ! root      106: #endif /* not hppa */
1.1       root      107: #endif /* not m88k */
                    108: #endif /* not pyr */
                    109: #endif /* not i860 */
                    110: #endif /* not mips */
                    111: #endif /* not spur */
                    112: #endif /* not sparc */
                    113: #endif /* not _VARARGS_H */
1.1.1.3 ! root      114: 
        !           115: /* Define va_list from __gnuc_va_list.  */
        !           116: 
        !           117: #ifdef _HIDDEN_VA_LIST  /* On OSF1, this means varargs.h is "half-loaded".  */
        !           118: #undef _VA_LIST
        !           119: #endif
        !           120: 
        !           121: #ifdef __SVR4_2__
        !           122: 
        !           123: /* SVR4.2 uses _VA_LIST for an internal alias for va_list,
        !           124:    so we must avoid testing it and setting it here.  */
        !           125: #ifndef _VA_LIST_
        !           126: #define _VA_LIST_
        !           127: typedef __gnuc_va_list va_list;
        !           128: #endif /* _VA_LIST_ */
        !           129: 
        !           130: #else /* not __SVR4_2__ */
        !           131: 
        !           132: /* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
        !           133:    But on BSD NET2 we must not test or define or undef it.
        !           134:    (Note that the comments in NET 2's ansi.h
        !           135:    are incorrect for _VA_LIST_--see stdio.h!)  */
        !           136: #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____)
        !           137: /* The macro _VA_LIST is used in SCO Unix 3.2.  */
        !           138: #ifndef _VA_LIST
        !           139: #if !(defined (__BSD_NET2__) || defined (____386BSD____))
        !           140: #define _VA_LIST_
        !           141: #endif
        !           142: #define _VA_LIST
        !           143: typedef __gnuc_va_list va_list;
        !           144: #endif /* not _VA_LIST */
        !           145: #endif /* not _VA_LIST_ */
        !           146: 
        !           147: #endif /* not __SVR4_2__ */
        !           148: 
        !           149: /* The next BSD release (if there is one) wants this symbol to be
        !           150:    undefined instead of _VA_LIST_.  */
        !           151: #ifdef _BSD_VA_LIST
        !           152: #undef _BSD_VA_LIST
        !           153: #endif
        !           154: 
1.1       root      155: #endif /* __GNUC__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.