2 * Copyright © 2004-2006, 2009-2011 Guillem Jover <guillem@hadrons.org>
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * 3. The name of the author may not be used to endorse or promote products
13 * derived from this software without specific prior written permission.
15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
16 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
17 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
18 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 #include_next <sys/cdefs.h>
30 #include <sys/cdefs.h>
33 #ifndef LIBBSD_SYS_CDEFS_H
34 #define LIBBSD_SYS_CDEFS_H
37 * Some kFreeBSD headers expect those macros to be set for sanity checks.
47 #define LIBBSD_GCC_VERSION (__GNUC__ << 8 | __GNUC_MINOR__)
49 #define LIBBSD_GCC_VERSION 0
53 # if LIBBSD_GCC_VERSION >= 0x0207
54 # define __dead2 __attribute__((__noreturn__))
61 # if LIBBSD_GCC_VERSION >= 0x0207
62 # define __pure2 __attribute__((__const__))
69 # if LIBBSD_GCC_VERSION >= 0x0207
70 # define __packed __attribute__((__packed__))
77 # if LIBBSD_GCC_VERSION >= 0x0207
78 # define __aligned(x) __attribute__((__aligned__(x)))
84 /* Linux headers define a struct with a member names __unused.
85 * Debian bugs: #522773 (linux), #522774 (libc).
89 # if LIBBSD_GCC_VERSION >= 0x0300
90 # define __unused __attribute__((unused))
98 # if LIBBSD_GCC_VERSION >= 0x0300
99 # define __printflike(x, y) __attribute((format(printf, (x), (y))))
101 # define __printflike(x, y)
106 # if LIBBSD_GCC_VERSION >= 0x0302
107 # define __nonnull(x) __attribute__((__nonnull__(x)))
109 # define __nonnull(x)
114 # define __bounded__(x, y, z)
129 #ifndef __RCSID_SOURCE
130 # define __RCSID_SOURCE(x)
138 # define __COPYRIGHT(x)