Module Name: src Committed By: martin Date: Wed May 29 19:02:30 UTC 2013
Modified Files: src/sys/sys: cdefs.h Log Message: While visibility "protected" is nominaly supported by gcc 4.0 and 4.1 it does not actually work - the compiler does not emmit ".protected" asm statements for used references to protected symbols, which then causes the linker to fail and/or produce unloadable libraries. This recently happened to port vax by the locale changes. Backporting a fix (ASM_OUTPUT_EXTERNAL in gcc target config) is not feasible. So: define __dso_protected only starting with gcc 4.2. To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 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.106 src/sys/sys/cdefs.h:1.107 --- src/sys/sys/cdefs.h:1.106 Tue Apr 30 14:45:15 2013 +++ src/sys/sys/cdefs.h Wed May 29 19:02:30 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: cdefs.h,v 1.106 2013/04/30 14:45:15 joerg Exp $ */ +/* $NetBSD: cdefs.h,v 1.107 2013/05/29 19:02:30 martin Exp $ */ /* * Copyright (c) 1991, 1993 @@ -281,7 +281,6 @@ #if __GNUC_PREREQ__(4, 0) # define __dso_public __attribute__((__visibility__("default"))) # define __dso_hidden __attribute__((__visibility__("hidden"))) -# define __dso_protected __attribute__((__visibility__("protected"))) # define __BEGIN_PUBLIC_DECLS \ _Pragma("GCC visibility push(default)") __BEGIN_EXTERN_C # define __END_PUBLIC_DECLS __END_EXTERN_C _Pragma("GCC visibility pop") @@ -290,13 +289,17 @@ # define __END_HIDDEN_DECLS __END_EXTERN_C _Pragma("GCC visibility pop") #else # define __dso_public -# define __dso_protected # define __dso_hidden # define __BEGIN_PUBLIC_DECLS __BEGIN_EXTERN_C # define __END_PUBLIC_DECLS __END_EXTERN_C # define __BEGIN_HIDDEN_DECLS __BEGIN_EXTERN_C # define __END_HIDDEN_DECLS __END_EXTERN_C #endif +#if __GNUC_PREREQ__(4, 2) +# define __dso_protected __attribute__((__visibility__("protected"))) +#else +# define __dso_protected +#endif #define __BEGIN_DECLS __BEGIN_PUBLIC_DECLS #define __END_DECLS __END_PUBLIC_DECLS