Annotation of gcc/va-hp800.h, revision 1.1

1.1     ! root        1: typedef char *va_list;
        !             2: 
        !             3: #if __GNUCC__ > 1
        !             4: 
        !             5: #ifdef _STDARG_H
        !             6: #define va_start(AP,LASTARG) \
        !             7:   (__builtin_saveregs(), (AP) = __builtin_next_arg ())
        !             8: #else
        !             9: #define va_alist  __builtin_va_alist
        !            10: /* The ... causes current_function_varargs to be set in cc1.  */
        !            11: #define va_dcl    int __builtin_va_alist; ...
        !            12: #define va_start(AP) \
        !            13:   ((AP) = (va_list *)&__builtin_va_alist + sizeof(int))
        !            14: #endif /* _STDARG_H */
        !            15: 
        !            16: /* Handle pass by invisible reference and voids left by aligned */
        !            17: /* doubles. */
        !            18: 
        !            19: #define __va_rounded_size(TYPE)  \
        !            20:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
        !            21: 
        !            22: #define va_arg(AP,TYPE) \
        !            23: ((__va_rounded_size(TYPE) <= 8))                                       \
        !            24:   ? ((AP) -= __va_rounded_size (TYPE), (__alignof__ (TYPE) > 4 ?       \
        !            25:                                        (int)AP &= ~(0x7) : 0),         \
        !            26:      *(TYPE *)(AP))                                                    \
        !            27:   : ((AP) -= sizeof (TYPE *), **(TYPE **)(AP))
        !            28: 
        !            29: void va_end (va_list);         /* Defined in libgcc.a */
        !            30: #define va_end(AP)
        !            31: 
        !            32: #else /* __GNUCC__ > 1 */
        !            33: 
        !            34: /* __builtin_saveregs () tickles a bug in the pa-risc gcc 1.39 port, */
        !            35: /* so don't use it for varargs. Obviously the stdarg stuff doesn't */
        !            36: /* work very well. */ 
        !            37: 
        !            38: #ifdef _STDARG_H
        !            39: #define va_start(AP,LASTARG) \
        !            40:   (__builtin_saveregs(), (AP) = __builtin_next_arg ())
        !            41: 
        !            42: /* gcc1 doesn't implement pass by invisible reference */ 
        !            43: #define __va_rounded_size(TYPE)  \
        !            44:   (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
        !            45: 
        !            46: #define va_arg(AP,TYPE) \
        !            47:   ((AP) -= __va_rounded_size (TYPE), (__alignof__ (TYPE) > 4 ? \
        !            48:                                      (int)AP &= ~(0x7) : 0),   \
        !            49:    *(TYPE *)(AP))
        !            50: 
        !            51: void va_end (va_list);         /* Defined in libgcc.a */
        !            52: #define va_end(AP)
        !            53: #else /* _STDARG_H */
        !            54: #define va_alist __va_a__, __va_b__, __va_c__, __va_d__
        !            55: #define va_dcl int __va_a__, __va_b__, __va_c__, __va_d__;
        !            56: #define va_start(list) list = (char *) &__va_a__, &__va_b__, &__va_c__, \
        !            57:   &__va_d__
        !            58: 
        !            59: # define va_arg(list,mode) *(mode *) ((int) (list = (char *) \
        !            60:        (((int) list + sizeof(int /*__va_a__*/) - sizeof(mode)) & ~(sizeof(mode)-1)) \
        !            61:        - sizeof(int /*__va_a__*/)) + sizeof(int /*__va_a__*/))
        !            62:   
        !            63: #define va_end(list)
        !            64: 
        !            65: #endif /* _STDARG_H */
        !            66: #endif /* __GNUCC__ > 1 */

unix.superglobalmegacorp.com

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