summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/env/__stack_chk_fail.c11
-rw-r--r--src/internal/syscall.h2
-rw-r--r--src/internal/vis.h16
-rw-r--r--src/signal/sigsetjmp_tail.c2
-rw-r--r--src/thread/__syscall_cp.c2
-rw-r--r--src/thread/pthread_cancel.c4
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)