1*53ee8cc1Swenshuai.xi /* libc/sys/linux/sys/cdefs.h - Helper macros for K&R vs. ANSI C compat. */ 2*53ee8cc1Swenshuai.xi 3*53ee8cc1Swenshuai.xi /* Written 2000 by Werner Almesberger */ 4*53ee8cc1Swenshuai.xi 5*53ee8cc1Swenshuai.xi /* 6*53ee8cc1Swenshuai.xi * Copyright (c) 1991, 1993 7*53ee8cc1Swenshuai.xi * The Regents of the University of California. All rights reserved. 8*53ee8cc1Swenshuai.xi * 9*53ee8cc1Swenshuai.xi * This code is derived from software contributed to Berkeley by 10*53ee8cc1Swenshuai.xi * Berkeley Software Design, Inc. 11*53ee8cc1Swenshuai.xi * 12*53ee8cc1Swenshuai.xi * Redistribution and use in source and binary forms, with or without 13*53ee8cc1Swenshuai.xi * modification, are permitted provided that the following conditions 14*53ee8cc1Swenshuai.xi * are met: 15*53ee8cc1Swenshuai.xi * 1. Redistributions of source code must retain the above copyright 16*53ee8cc1Swenshuai.xi * notice, this list of conditions and the following disclaimer. 17*53ee8cc1Swenshuai.xi * 2. Redistributions in binary form must reproduce the above copyright 18*53ee8cc1Swenshuai.xi * notice, this list of conditions and the following disclaimer in the 19*53ee8cc1Swenshuai.xi * documentation and/or other materials provided with the distribution. 20*53ee8cc1Swenshuai.xi * 3. All advertising materials mentioning features or use of this software 21*53ee8cc1Swenshuai.xi * must display the following acknowledgement: 22*53ee8cc1Swenshuai.xi * This product includes software developed by the University of 23*53ee8cc1Swenshuai.xi * California, Berkeley and its contributors. 24*53ee8cc1Swenshuai.xi * 4. Neither the name of the University nor the names of its contributors 25*53ee8cc1Swenshuai.xi * may be used to endorse or promote products derived from this software 26*53ee8cc1Swenshuai.xi * without specific prior written permission. 27*53ee8cc1Swenshuai.xi * 28*53ee8cc1Swenshuai.xi * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 29*53ee8cc1Swenshuai.xi * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 30*53ee8cc1Swenshuai.xi * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 31*53ee8cc1Swenshuai.xi * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 32*53ee8cc1Swenshuai.xi * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33*53ee8cc1Swenshuai.xi * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34*53ee8cc1Swenshuai.xi * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35*53ee8cc1Swenshuai.xi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36*53ee8cc1Swenshuai.xi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37*53ee8cc1Swenshuai.xi * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38*53ee8cc1Swenshuai.xi * SUCH DAMAGE. 39*53ee8cc1Swenshuai.xi * 40*53ee8cc1Swenshuai.xi * @(#)cdefs.h 8.8 (Berkeley) 1/9/95 41*53ee8cc1Swenshuai.xi * $FreeBSD: src/sys/sys/cdefs.h,v 1.54 2002/05/11 03:58:24 alfred Exp $ 42*53ee8cc1Swenshuai.xi */ 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi #ifndef _SYS_CDEFS_H 45*53ee8cc1Swenshuai.xi #define _SYS_CDEFS_H 46*53ee8cc1Swenshuai.xi 47*53ee8cc1Swenshuai.xi #define __FBSDID(x) /* nothing */ 48*53ee8cc1Swenshuai.xi /* 49*53ee8cc1Swenshuai.xi * Note: the goal here is not compatibility to K&R C. Since we know that we 50*53ee8cc1Swenshuai.xi * have GCC which understands ANSI C perfectly well, we make use of this. 51*53ee8cc1Swenshuai.xi */ 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi #define __P(args) args 54*53ee8cc1Swenshuai.xi #define __PMT(args) args 55*53ee8cc1Swenshuai.xi #define __const const 56*53ee8cc1Swenshuai.xi #define __signed signed 57*53ee8cc1Swenshuai.xi #define __volatile volatile 58*53ee8cc1Swenshuai.xi #define __DOTS , ... 59*53ee8cc1Swenshuai.xi #define __THROW 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi #define __ptr_t void * 62*53ee8cc1Swenshuai.xi #define __long_double_t long double 63*53ee8cc1Swenshuai.xi 64*53ee8cc1Swenshuai.xi #define __attribute_malloc__ 65*53ee8cc1Swenshuai.xi #define __attribute_pure__ 66*53ee8cc1Swenshuai.xi #define __attribute_format_strfmon__(a,b) 67*53ee8cc1Swenshuai.xi #define __flexarr [0] 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xi #ifdef __cplusplus 70*53ee8cc1Swenshuai.xi # define __BEGIN_DECLS extern "C" { 71*53ee8cc1Swenshuai.xi # define __END_DECLS } 72*53ee8cc1Swenshuai.xi #else 73*53ee8cc1Swenshuai.xi # define __BEGIN_DECLS 74*53ee8cc1Swenshuai.xi # define __END_DECLS 75*53ee8cc1Swenshuai.xi #endif 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi #ifndef __BOUNDED_POINTERS__ 78*53ee8cc1Swenshuai.xi # define __bounded /* nothing */ 79*53ee8cc1Swenshuai.xi # define __unbounded /* nothing */ 80*53ee8cc1Swenshuai.xi # define __ptrvalue /* nothing */ 81*53ee8cc1Swenshuai.xi #endif 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi #ifdef __GNUC__ 84*53ee8cc1Swenshuai.xi #define __strong_reference(sym,aliassym) \ 85*53ee8cc1Swenshuai.xi extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))); 86*53ee8cc1Swenshuai.xi #ifdef __ELF__ 87*53ee8cc1Swenshuai.xi #ifdef __STDC__ 88*53ee8cc1Swenshuai.xi #define __weak_reference(sym,alias) \ 89*53ee8cc1Swenshuai.xi __asm__(".weak " #alias); \ 90*53ee8cc1Swenshuai.xi __asm__(".equ " #alias ", " #sym) 91*53ee8cc1Swenshuai.xi #define __warn_references(sym,msg) \ 92*53ee8cc1Swenshuai.xi __asm__(".section .gnu.warning." #sym); \ 93*53ee8cc1Swenshuai.xi __asm__(".asciz \"" msg "\""); \ 94*53ee8cc1Swenshuai.xi __asm__(".previous") 95*53ee8cc1Swenshuai.xi #else 96*53ee8cc1Swenshuai.xi #define __weak_reference(sym,alias) \ 97*53ee8cc1Swenshuai.xi __asm__(".weak alias"); \ 98*53ee8cc1Swenshuai.xi __asm__(".equ alias, sym") 99*53ee8cc1Swenshuai.xi #define __warn_references(sym,msg) \ 100*53ee8cc1Swenshuai.xi __asm__(".section .gnu.warning.sym"); \ 101*53ee8cc1Swenshuai.xi __asm__(".asciz \"msg\""); \ 102*53ee8cc1Swenshuai.xi __asm__(".previous") 103*53ee8cc1Swenshuai.xi #endif /* __STDC__ */ 104*53ee8cc1Swenshuai.xi #else /* !__ELF__ */ 105*53ee8cc1Swenshuai.xi #ifdef __STDC__ 106*53ee8cc1Swenshuai.xi #define __weak_reference(sym,alias) \ 107*53ee8cc1Swenshuai.xi __asm__(".stabs \"_" #alias "\",11,0,0,0"); \ 108*53ee8cc1Swenshuai.xi __asm__(".stabs \"_" #sym "\",1,0,0,0") 109*53ee8cc1Swenshuai.xi #define __warn_references(sym,msg) \ 110*53ee8cc1Swenshuai.xi __asm__(".stabs \"" msg "\",30,0,0,0"); \ 111*53ee8cc1Swenshuai.xi __asm__(".stabs \"_" #sym "\",1,0,0,0") 112*53ee8cc1Swenshuai.xi #else 113*53ee8cc1Swenshuai.xi #define __weak_reference(sym,alias) \ 114*53ee8cc1Swenshuai.xi __asm__(".stabs \"_/**/alias\",11,0,0,0"); \ 115*53ee8cc1Swenshuai.xi __asm__(".stabs \"_/**/sym\",1,0,0,0") 116*53ee8cc1Swenshuai.xi #define __warn_references(sym,msg) \ 117*53ee8cc1Swenshuai.xi __asm__(".stabs msg,30,0,0,0"); \ 118*53ee8cc1Swenshuai.xi __asm__(".stabs \"_/**/sym\",1,0,0,0") 119*53ee8cc1Swenshuai.xi #endif /* __STDC__ */ 120*53ee8cc1Swenshuai.xi #endif /* __ELF__ */ 121*53ee8cc1Swenshuai.xi #endif /* __GNUC__ */ 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi #endif /* _SYS_CDEFS_H */ 124