summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/libc.c2
-rw-r--r--src/internal/libc.h15
2 files changed, 11 insertions, 6 deletions
diff --git a/src/internal/libc.c b/src/internal/libc.c
index 5f12e295..59d302d4 100644
--- a/src/internal/libc.c
+++ b/src/internal/libc.c
@@ -7,5 +7,5 @@ struct __libc *__libc_loc()
return &__libc;
}
#else
-struct __libc __libc;
+struct __libc __libc ATTR_LIBC_VISIBILITY;
#endif
diff --git a/src/internal/libc.h b/src/internal/libc.h
index d985902c..45d5c9e7 100644
--- a/src/internal/libc.h
+++ b/src/internal/libc.h
@@ -19,16 +19,21 @@ 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__)
-#elif !defined(__PIC__)
-extern struct __libc __libc;
+#ifdef __PIC__
+#define ATTR_LIBC_VISIBILITY __attribute__((visibility("hidden")))
+#else
+#define ATTR_LIBC_VISIBILITY
+#endif
+
+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())