diff options
-rw-r--r-- | src/env/__stack_chk_fail.c | 11 | ||||
-rw-r--r-- | src/internal/syscall.h | 2 | ||||
-rw-r--r-- | src/internal/vis.h | 16 | ||||
-rw-r--r-- | src/signal/sigsetjmp_tail.c | 2 | ||||
-rw-r--r-- | src/thread/__syscall_cp.c | 2 | ||||
-rw-r--r-- | src/thread/pthread_cancel.c | 4 |
6 files changed, 5 insertions, 32 deletions
diff --git a/src/env/__stack_chk_fail.c b/src/env/__stack_chk_fail.c index be0c184a..4de82fd9 100644 --- a/src/env/__stack_chk_fail.c +++ b/src/env/__stack_chk_fail.c @@ -17,16 +17,7 @@ void __stack_chk_fail(void) a_crash(); } -#ifdef SHARED - __attribute__((__visibility__("hidden"))) -void __stack_chk_fail_local(void) -{ - a_crash(); -} - -#else +void __stack_chk_fail_local(void); weak_alias(__stack_chk_fail, __stack_chk_fail_local); - -#endif diff --git a/src/internal/syscall.h b/src/internal/syscall.h index a93f6d1e..36c772df 100644 --- a/src/internal/syscall.h +++ b/src/internal/syscall.h @@ -17,9 +17,7 @@ typedef long syscall_arg_t; #endif -#ifdef SHARED __attribute__((visibility("hidden"))) -#endif long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...), __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t); diff --git a/src/internal/vis.h b/src/internal/vis.h index bf7a5b20..02bfbda8 100644 --- a/src/internal/vis.h +++ b/src/internal/vis.h @@ -5,11 +5,11 @@ * of position-independent code. */ #ifndef CRT -#ifdef SHARED -/* For shared libc.so, all symbols should be protected, but some toolchains +/* Conceptually, all symbols should be protected, but some toolchains * fail to support copy relocations for protected data, so exclude all - * exported data symbols. */ + * exported data symbols. Also omit visibility for possibly-undefined + * weak references. */ __attribute__((__visibility__("default"))) extern struct _IO_FILE *const stdin, *const stdout, *const stderr; @@ -23,18 +23,10 @@ extern long timezone, __timezone; __attribute__((__visibility__("default"))) extern char *optarg, **environ, **__environ, *tzname[2], *__tzname[2], *__progname, *__progname_full; -#pragma GCC visibility push(protected) - -#elif defined(__PIC__) - -/* If building static libc.a as position-independent code, try to make - * everything hidden except possibly-undefined weak references. */ - __attribute__((__visibility__("default"))) extern void (*const __init_array_start)(), (*const __init_array_end)(), (*const __fini_array_start)(), (*const __fini_array_end)(); -#pragma GCC visibility push(hidden) +#pragma GCC visibility push(protected) #endif -#endif diff --git a/src/signal/sigsetjmp_tail.c b/src/signal/sigsetjmp_tail.c index 487ad8ca..78762aa2 100644 --- a/src/signal/sigsetjmp_tail.c +++ b/src/signal/sigsetjmp_tail.c @@ -2,9 +2,7 @@ #include <signal.h> #include "syscall.h" -#ifdef SHARED __attribute__((__visibility__("hidden"))) -#endif int __sigsetjmp_tail(sigjmp_buf jb, int ret) { void *p = jb->__ss; diff --git a/src/thread/__syscall_cp.c b/src/thread/__syscall_cp.c index faf57b1a..09a2be84 100644 --- a/src/thread/__syscall_cp.c +++ b/src/thread/__syscall_cp.c @@ -1,9 +1,7 @@ #include "pthread_impl.h" #include "syscall.h" -#ifdef SHARED __attribute__((__visibility__("hidden"))) -#endif long __syscall_cp_c(); static long sccp(syscall_arg_t nr, diff --git a/src/thread/pthread_cancel.c b/src/thread/pthread_cancel.c index c4631f08..a21c3866 100644 --- a/src/thread/pthread_cancel.c +++ b/src/thread/pthread_cancel.c @@ -4,9 +4,7 @@ #include "syscall.h" #include "libc.h" -#ifdef SHARED __attribute__((__visibility__("hidden"))) -#endif long __cancel(), __syscall_cp_asm(), __syscall_cp_c(); long __cancel() @@ -47,9 +45,7 @@ static void _sigaddset(sigset_t *set, int sig) set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1); } -#ifdef SHARED __attribute__((__visibility__("hidden"))) -#endif extern const char __cp_begin[1], __cp_end[1], __cp_cancel[1]; static void cancel_handler(int sig, siginfo_t *si, void *ctx) |