1*00b67f09SDavid van Moolenbroek /* $NetBSD: gnuc.h,v 1.1.1.3 2014/12/10 03:34:34 christos Exp $ */ 2*00b67f09SDavid van Moolenbroek 3*00b67f09SDavid van Moolenbroek /* @(#) Id: gnuc.h,v 1.4 2006/04/30 03:58:45 leres Exp (LBL) */ 4*00b67f09SDavid van Moolenbroek 5*00b67f09SDavid van Moolenbroek /* Define __P() macro, if necessary */ 6*00b67f09SDavid van Moolenbroek #ifndef __P 7*00b67f09SDavid van Moolenbroek #if __STDC__ 8*00b67f09SDavid van Moolenbroek #define __P(protos) protos 9*00b67f09SDavid van Moolenbroek #else 10*00b67f09SDavid van Moolenbroek #define __P(protos) () 11*00b67f09SDavid van Moolenbroek #endif 12*00b67f09SDavid van Moolenbroek #endif 13*00b67f09SDavid van Moolenbroek 14*00b67f09SDavid van Moolenbroek /* inline foo */ 15*00b67f09SDavid van Moolenbroek #ifdef __GNUC__ 16*00b67f09SDavid van Moolenbroek #define inline __inline 17*00b67f09SDavid van Moolenbroek #else 18*00b67f09SDavid van Moolenbroek #define inline 19*00b67f09SDavid van Moolenbroek #endif 20*00b67f09SDavid van Moolenbroek 21*00b67f09SDavid van Moolenbroek /* 22*00b67f09SDavid van Moolenbroek * Handle new and old "dead" routine prototypes 23*00b67f09SDavid van Moolenbroek * 24*00b67f09SDavid van Moolenbroek * For example: 25*00b67f09SDavid van Moolenbroek * 26*00b67f09SDavid van Moolenbroek * __dead void foo(void) __attribute__((noreturn)); 27*00b67f09SDavid van Moolenbroek * 28*00b67f09SDavid van Moolenbroek */ 29*00b67f09SDavid van Moolenbroek #ifdef __GNUC__ 30*00b67f09SDavid van Moolenbroek #ifndef __dead 31*00b67f09SDavid van Moolenbroek #if __GNUC__ >= 4 32*00b67f09SDavid van Moolenbroek #define __dead 33*00b67f09SDavid van Moolenbroek #define noreturn __noreturn__ 34*00b67f09SDavid van Moolenbroek #else 35*00b67f09SDavid van Moolenbroek #define __dead volatile 36*00b67f09SDavid van Moolenbroek #define noreturn volatile 37*00b67f09SDavid van Moolenbroek #endif 38*00b67f09SDavid van Moolenbroek #endif 39*00b67f09SDavid van Moolenbroek #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) 40*00b67f09SDavid van Moolenbroek #ifndef __attribute__ 41*00b67f09SDavid van Moolenbroek #define __attribute__(args) 42*00b67f09SDavid van Moolenbroek #endif 43*00b67f09SDavid van Moolenbroek #endif 44*00b67f09SDavid van Moolenbroek #else 45*00b67f09SDavid van Moolenbroek #ifndef __dead 46*00b67f09SDavid van Moolenbroek #define __dead 47*00b67f09SDavid van Moolenbroek #endif 48*00b67f09SDavid van Moolenbroek #ifndef __attribute__ 49*00b67f09SDavid van Moolenbroek #define __attribute__(args) 50*00b67f09SDavid van Moolenbroek #endif 51*00b67f09SDavid van Moolenbroek #endif 52