Annotation of GNUtools/cc/va-pa.h, revision 1.1.1.1

1.1       root        1: 
                      2: /* Define __gnuc_va_list. */
                      3: 
                      4: #ifndef __GNUC_VA_LIST
                      5: #define __GNUC_VA_LIST
                      6: 
                      7: #ifdef NeXT
                      8: #define _ANSI_STDARG_H_
                      9: #endif
                     10: 
                     11: typedef double *__gnuc_va_list;
                     12: #endif /* not __GNUC_VA_LIST */
                     13: 
                     14: /* If this is for internal libc use, don't define anything but
                     15:    __gnuc_va_list.  */
                     16: #if defined (_STDARG_H) || defined (_VARARGS_H)
                     17: #if __GNUC__ > 1
                     18: #define __va_ellipsis ...
                     19: #define __gnuc_va_start(AP) ((AP) = (va_list)__builtin_saveregs())
                     20: #else
                     21: #define va_alist __va_a__, __va_b__, __va_c__, __va_d__
                     22: #define __va_ellipsis 
                     23: #define __gnuc_va_start(AP)\
                     24:   (AP) = (double *) &__va_a__, &__va_b__, &__va_c__, &__va_d__, \
                     25:   (AP) = (double *)((char *)(AP) + 4)
                     26: #endif /* __GNUC__ > 1 */
                     27: 
                     28: #ifdef _STDARG_H
                     29: #define va_start(AP,LASTARG) __gnuc_va_start (AP)
                     30: #else
                     31: /* The ... causes current_function_varargs to be set in cc1.  */
                     32: #define va_dcl long va_alist; __va_ellipsis
                     33: #define va_start(AP) __gnuc_va_start (AP)
                     34: #endif
                     35: 
                     36: #define va_arg(AP,TYPE)                                                \
                     37:   (sizeof(TYPE) > 8 ?                                          \
                     38:    ((AP = (__gnuc_va_list) ((char *)AP - sizeof (int))),       \
                     39:     (*((TYPE *) (void *) (*((int *) (AP))))))                  \
                     40:    :((AP =                                                     \
                     41:       (__gnuc_va_list) ((long)((char *)AP - sizeof (TYPE))     \
                     42:                        & (sizeof(TYPE) > 4 ? ~0x7 : ~0x3))),   \
                     43:      (*((TYPE *) (void *) ((char *)AP + ((8 - sizeof(TYPE)) % 4))))))
                     44: 
                     45: #ifndef va_end
                     46: void va_end (__gnuc_va_list);          /* Defined in libgcc.a */
                     47: #endif
                     48: #define va_end(AP)
                     49: 
                     50: #endif /* defined (_STDARG_H) || defined (_VARARGS_H) */

unix.superglobalmegacorp.com

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