Module Name: src Committed By: joerg Date: Sat Aug 7 21:03:18 UTC 2010
Modified Files: src/sys/sys: cdefs.h Log Message: Add __BEGIN_PUBLIC / __END_PUBLIC, __BEGIN_HIDDEN / __END_HIDDEN and __dso_public and __dso_hidden markers. Change __BEGIN_DECLS / __END_DECLS to include __BEGIN_PUBLIC / __END_PUBLIC. To generate a diff of this commit: cvs rdiff -u -r1.79 -r1.80 src/sys/sys/cdefs.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/cdefs.h diff -u src/sys/sys/cdefs.h:1.79 src/sys/sys/cdefs.h:1.80 --- src/sys/sys/cdefs.h:1.79 Sat Jul 31 00:04:43 2010 +++ src/sys/sys/cdefs.h Sat Aug 7 21:03:18 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs.h,v 1.79 2010/07/31 00:04:43 joerg Exp $ */ +/* $NetBSD: cdefs.h,v 1.80 2010/08/07 21:03:18 joerg Exp $ */ /* * Copyright (c) 1991, 1993 @@ -63,16 +63,6 @@ #include <sys/cdefs_aout.h> #endif -#if defined(__cplusplus) -#define __BEGIN_DECLS extern "C" { -#define __END_DECLS } -#define __static_cast(x,y) static_cast<x>(y) -#else -#define __BEGIN_DECLS -#define __END_DECLS -#define __static_cast(x,y) (x)y -#endif - /* * The __CONCAT macro is used to concatenate parts of symbol names, e.g. * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. @@ -228,6 +218,33 @@ #define __used __unused #endif +#if __GNUC_PREREQ__(4, 0) +# define __dso_public __attribute__((__visibility__("default"))) +# define __dso_hidden __attribute__((__visibility__("hidden"))) +# define __BEGIN_PUBLIC _Pragma("GCC visibility push(default)") +# define __END_PUBLIC _Pragma("GCC visibility pop") +# define __BEGIN_HIDDEN _Pragma("GCC visibility push(hidden)") +# define __END_HIDDEN _Pragma("GCC visibility pop") +#else +# define __dso_public +# define __dso_hidden +# define __BEGIN_PUBLIC +# define __END_PUBLIC +# define __BEGIN_HIDDEN +# define __END_HIDDEN +#endif + + +#if defined(__cplusplus) +#define __BEGIN_DECLS __BEGIN_PUBLIC extern "C" { +#define __END_DECLS } __END_PUBLIC +#define __static_cast(x,y) static_cast<x>(y) +#else +#define __BEGIN_DECLS __BEGIN_PUBLIC +#define __END_DECLS __END_PUBLIC +#define __static_cast(x,y) (x)y +#endif + /* * Non-static C99 inline functions are optional bodies. They don't * create global symbols if not used, but can be replaced if desirable.