use macros instead of inline functions in shgetc.h
[oweals/musl.git] / src / internal / libc.h
index d985902c6389a82403e04640341e620426808899..39a186581cd53f55bd76da5d62e4408d02e63493 100644 (file)
@@ -19,16 +19,24 @@ struct __libc {
 };
 
 
-#if 100*__GNUC__+__GNUC_MINOR__ >= 303 || defined(__PCC__) || defined(__TINYC__)
-extern struct __libc __libc __attribute__((visibility("hidden")));
-#define libc __libc
+#if !defined(__PIC__) || 100*__GNUC__+__GNUC_MINOR__ >= 303 || defined(__PCC__) || defined(__TINYC__)
+
+#ifdef __PIC__
+#if __GNUC__ < 4
+#define BROKEN_VISIBILITY 1
+#endif
+#define ATTR_LIBC_VISIBILITY __attribute__((visibility("hidden"))) 
+#else
+#define ATTR_LIBC_VISIBILITY
+#endif
 
-#elif !defined(__PIC__)
-extern struct __libc __libc;
+extern struct __libc __libc ATTR_LIBC_VISIBILITY;
 #define libc __libc
 
 #else
+
 #define USE_LIBC_ACCESSOR
+#define ATTR_LIBC_VISIBILITY
 extern struct __libc *__libc_loc(void) __attribute__((const));
 #define libc (*__libc_loc())