Deleted Added
full compact
cdefs.h (22975) cdefs.h (25083)
1/*
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Berkeley Software Design, Inc.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the University of
19 * California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)cdefs.h 8.8 (Berkeley) 1/9/95
1/*
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Berkeley Software Design, Inc.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the University of
19 * California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)cdefs.h 8.8 (Berkeley) 1/9/95
37 * $Id$
37 * $Id: cdefs.h,v 1.13 1997/02/22 09:44:52 peter Exp $
38 */
39
40#ifndef _SYS_CDEFS_H_
41#define _SYS_CDEFS_H_
42
43#if defined(__cplusplus)
44#define __BEGIN_DECLS extern "C" {
45#define __END_DECLS };
46#else
47#define __BEGIN_DECLS
48#define __END_DECLS
49#endif
50
51/*
52 * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
53 * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
54 * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
55 * in between its arguments. __CONCAT can also concatenate double-quoted
56 * strings produced by the __STRING macro, but this only works with ANSI C.
38 */
39
40#ifndef _SYS_CDEFS_H_
41#define _SYS_CDEFS_H_
42
43#if defined(__cplusplus)
44#define __BEGIN_DECLS extern "C" {
45#define __END_DECLS };
46#else
47#define __BEGIN_DECLS
48#define __END_DECLS
49#endif
50
51/*
52 * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
53 * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
54 * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
55 * in between its arguments. __CONCAT can also concatenate double-quoted
56 * strings produced by the __STRING macro, but this only works with ANSI C.
57 *
58 * __XSTRING is like __STRING, but it expands any macros in its argument
59 * first. It is only available with ANSI C.
57 */
58#if defined(__STDC__) || defined(__cplusplus)
59#define __P(protos) protos /* full-blown ANSI C */
60#define __CONCAT1(x,y) x ## y
61#define __CONCAT(x,y) __CONCAT1(x,y)
60 */
61#if defined(__STDC__) || defined(__cplusplus)
62#define __P(protos) protos /* full-blown ANSI C */
63#define __CONCAT1(x,y) x ## y
64#define __CONCAT(x,y) __CONCAT1(x,y)
62#define __STRING(x) #x
65#define __STRING(x) #x /* stringify without expanding x */
66#define __XSTRING(x) __STRING(x) /* expand x, then stringify */
63
64#define __const const /* define reserved names to standard */
65#define __signed signed
66#define __volatile volatile
67#if defined(__cplusplus)
68#define __inline inline /* convert to C++ keyword */
69#else
70#ifndef __GNUC__
71#define __inline /* delete GCC keyword */
72#endif /* !__GNUC__ */
73#endif /* !__cplusplus */
74
75#else /* !(__STDC__ || __cplusplus) */
76#define __P(protos) () /* traditional C preprocessor */
77#define __CONCAT(x,y) x/**/y
78#define __STRING(x) "x"
79
80#ifndef __GNUC__
81#define __const /* delete pseudo-ANSI C keywords */
82#define __inline
83#define __signed
84#define __volatile
85/*
86 * In non-ANSI C environments, new programs will want ANSI-only C keywords
87 * deleted from the program and old programs will want them left alone.
88 * When using a compiler other than gcc, programs using the ANSI C keywords
89 * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
90 * When using "gcc -traditional", we assume that this is the intent; if
91 * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
92 */
93#ifndef NO_ANSI_KEYWORDS
94#define const /* delete ANSI C keywords */
95#define inline
96#define signed
97#define volatile
98#endif /* !NO_ANSI_KEYWORDS */
99#endif /* !__GNUC__ */
100#endif /* !(__STDC__ || __cplusplus) */
101
102/*
103 * GCC1 and some versions of GCC2 declare dead (non-returning) and
104 * pure (no side effects) functions using "volatile" and "const";
105 * unfortunately, these then cause warnings under "-ansi -pedantic".
106 * GCC2.5 uses a new, peculiar __attribute__((attrs)) style. All of
107 * these work for GNU C++ (modulo a slight glitch in the C++ grammar
108 * in the distribution version of 2.5.5).
109 */
110#if __GNUC__ < 2
111#define __dead
112#define __dead2
113#define __pure
114#define __pure2
115#define __unused
116#define __attribute__(x)
117#endif
118#if __GNUC__ == 2 && __GNUC_MINOR__ < 5
119#define __dead __volatile
120#define __dead2
121#define __pure __const
122#define __pure2
123#define __unused
124#endif
125#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7
126#define __dead
127#define __dead2 __attribute__((__noreturn__))
128#define __pure
129#define __pure2 __attribute__((__const__))
130#define __unused
131#endif
132#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3
133#define __dead
134#define __dead2 __attribute__((__noreturn__))
135#define __pure
136#define __pure2 __attribute__((__const__))
137#define __unused __attribute__((__unused__))
138#endif
139
140#ifdef __GNUC__
141#ifdef __STDC__
142#define __weak_reference(sym,alias) \
143 __asm__(".stabs \"_" #alias "\",11,0,0,0"); \
144 __asm__(".stabs \"_" #sym "\",1,0,0,0")
145#define __warn_references(sym,msg) \
146 __asm__(".stabs \"" msg "\",30,0,0,0"); \
147 __asm__(".stabs \"_" #sym "\",1,0,0,0")
148#else
149#define __weak_reference(sym,alias) \
150 __asm__(".stabs \"_/**/alias\",11,0,0,0"); \
151 __asm__(".stabs \"_/**/sym\",1,0,0,0")
152#define __warn_references(sym,msg) \
153 __asm__(".stabs msg,30,0,0,0"); \
154 __asm__(".stabs \"_/**/sym\",1,0,0,0")
155#endif
156#endif
157
158#endif /* !_SYS_CDEFS_H_ */
67
68#define __const const /* define reserved names to standard */
69#define __signed signed
70#define __volatile volatile
71#if defined(__cplusplus)
72#define __inline inline /* convert to C++ keyword */
73#else
74#ifndef __GNUC__
75#define __inline /* delete GCC keyword */
76#endif /* !__GNUC__ */
77#endif /* !__cplusplus */
78
79#else /* !(__STDC__ || __cplusplus) */
80#define __P(protos) () /* traditional C preprocessor */
81#define __CONCAT(x,y) x/**/y
82#define __STRING(x) "x"
83
84#ifndef __GNUC__
85#define __const /* delete pseudo-ANSI C keywords */
86#define __inline
87#define __signed
88#define __volatile
89/*
90 * In non-ANSI C environments, new programs will want ANSI-only C keywords
91 * deleted from the program and old programs will want them left alone.
92 * When using a compiler other than gcc, programs using the ANSI C keywords
93 * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
94 * When using "gcc -traditional", we assume that this is the intent; if
95 * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
96 */
97#ifndef NO_ANSI_KEYWORDS
98#define const /* delete ANSI C keywords */
99#define inline
100#define signed
101#define volatile
102#endif /* !NO_ANSI_KEYWORDS */
103#endif /* !__GNUC__ */
104#endif /* !(__STDC__ || __cplusplus) */
105
106/*
107 * GCC1 and some versions of GCC2 declare dead (non-returning) and
108 * pure (no side effects) functions using "volatile" and "const";
109 * unfortunately, these then cause warnings under "-ansi -pedantic".
110 * GCC2.5 uses a new, peculiar __attribute__((attrs)) style. All of
111 * these work for GNU C++ (modulo a slight glitch in the C++ grammar
112 * in the distribution version of 2.5.5).
113 */
114#if __GNUC__ < 2
115#define __dead
116#define __dead2
117#define __pure
118#define __pure2
119#define __unused
120#define __attribute__(x)
121#endif
122#if __GNUC__ == 2 && __GNUC_MINOR__ < 5
123#define __dead __volatile
124#define __dead2
125#define __pure __const
126#define __pure2
127#define __unused
128#endif
129#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7
130#define __dead
131#define __dead2 __attribute__((__noreturn__))
132#define __pure
133#define __pure2 __attribute__((__const__))
134#define __unused
135#endif
136#if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3
137#define __dead
138#define __dead2 __attribute__((__noreturn__))
139#define __pure
140#define __pure2 __attribute__((__const__))
141#define __unused __attribute__((__unused__))
142#endif
143
144#ifdef __GNUC__
145#ifdef __STDC__
146#define __weak_reference(sym,alias) \
147 __asm__(".stabs \"_" #alias "\",11,0,0,0"); \
148 __asm__(".stabs \"_" #sym "\",1,0,0,0")
149#define __warn_references(sym,msg) \
150 __asm__(".stabs \"" msg "\",30,0,0,0"); \
151 __asm__(".stabs \"_" #sym "\",1,0,0,0")
152#else
153#define __weak_reference(sym,alias) \
154 __asm__(".stabs \"_/**/alias\",11,0,0,0"); \
155 __asm__(".stabs \"_/**/sym\",1,0,0,0")
156#define __warn_references(sym,msg) \
157 __asm__(".stabs msg,30,0,0,0"); \
158 __asm__(".stabs \"_/**/sym\",1,0,0,0")
159#endif
160#endif
161
162#endif /* !_SYS_CDEFS_H_ */