diff options
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/libc.c | 2 | ||||
-rw-r--r-- | src/internal/libc.h | 15 |
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()) |