define and use internal macros for hidden visibility, weak refs
authorRich Felker <dalias@aerifal.cx>
Wed, 5 Sep 2018 16:43:34 +0000 (12:43 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 5 Sep 2018 18:05:14 +0000 (14:05 -0400)
this cleans up what had become widespread direct inline use of "GNU C"
style attributes directly in the source, and lowers the barrier to
increased use of hidden visibility, which will be useful to recovering
some of the efficiency lost when the protected visibility hack was
dropped in commit dc2f368e565c37728b0d620380b849c3a1ddd78f, especially
on archs where the PLT ABI is costly.

38 files changed:
arch/arm/atomic_arch.h
arch/arm/pthread_arch.h
arch/mips/syscall_arch.h
arch/mipsn32/syscall_arch.h
arch/sh/atomic_arch.h
crt/crt1.c
crt/rcrt1.c
ldso/dlstart.c
ldso/dynlink.c
src/env/__init_tls.c
src/env/__libc_start_main.c
src/env/__stack_chk_fail.c
src/exit/abort.c
src/exit/exit.c
src/internal/fdpic_crt.h
src/internal/libc.h
src/internal/malloc_impl.h
src/internal/sh/__shcall.c
src/internal/syscall.h
src/internal/version.c
src/ldso/__dlsym.c
src/ldso/dl_iterate_phdr.c
src/ldso/dlclose.c
src/ldso/dlerror.c
src/ldso/dlinfo.c
src/ldso/dlopen.c
src/ldso/tlsdesc.c
src/multibyte/internal.h
src/signal/sigaction.c
src/signal/sigsetjmp_tail.c
src/thread/__syscall_cp.c
src/thread/__tls_get_addr.c
src/thread/arm/__set_thread_area.c
src/thread/pthread_attr_setinheritsched.c
src/thread/pthread_cancel.c
src/thread/sh/__set_thread_area.c
src/thread/sh/__unmapself.c
src/thread/x32/syscall_cp_fixup.c

index 62458b45237ab46d59e436065a38dda77b4d918e..e427836a64efa931b1e5fd2036dd8da18d497c1a 100644 (file)
@@ -1,11 +1,12 @@
+#include "libc.h"
+
 #if __ARM_ARCH_4__ || __ARM_ARCH_4T__ || __ARM_ARCH == 4
 #define BLX "mov lr,pc\n\tbx"
 #else
 #define BLX "blx"
 #endif
 
-extern uintptr_t __attribute__((__visibility__("hidden")))
-       __a_cas_ptr, __a_barrier_ptr;
+extern hidden uintptr_t __a_cas_ptr, __a_barrier_ptr;
 
 #if ((__ARM_ARCH_6__ || __ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \
  || __ARM_ARCH_6T2__ || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
index 8f2ae8f82efb9682887253169156a957d9708c9c..5c6aff28a3d5f9ed6e834ad750852c632bda19ba 100644 (file)
@@ -18,7 +18,7 @@ static inline pthread_t __pthread_self()
 
 static inline pthread_t __pthread_self()
 {
-       extern uintptr_t __attribute__((__visibility__("hidden"))) __a_gettp_ptr;
+       extern hidden uintptr_t __a_gettp_ptr;
        register uintptr_t p __asm__("r0");
        __asm__ __volatile__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" );
        return (void *)(p-sizeof(struct pthread));
index 666f413f46b7e95468411aed3607d88033b17385..01de67b8cbcc303dc28b52224217001a8d134cc6 100644 (file)
@@ -3,8 +3,7 @@
 ((union { long long ll; long l[2]; }){ .ll = x }).l[1]
 #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
 
-__attribute__((visibility("hidden")))
-long (__syscall)(long, ...);
+hidden long (__syscall)(long, ...);
 
 #define SYSCALL_RLIM_INFINITY (-1UL/2)
 
index 93a026f65dd1af28341bd9196b7342d0825cef4e..f6a1fbaed0cbbe180ec81ccde2af49a67ccf5b7e 100644 (file)
@@ -1,8 +1,7 @@
 #define __SYSCALL_LL_E(x) (x)
 #define __SYSCALL_LL_O(x) (x)
 
-__attribute__((visibility("hidden")))
-long (__syscall)(long, ...);
+hidden long (__syscall)(long, ...);
 
 #define SYSCALL_RLIM_INFINITY (-1UL/2)
 
index d48a7651625dbffdf9e3cb233e1787c0f42ccbd3..0a4d0c1189108cf6ef8541eb637ebde698a67e8f 100644 (file)
@@ -1,3 +1,5 @@
+#include "libc.h"
+
 #if defined(__SH4A__)
 
 #define a_ll a_ll
@@ -30,7 +32,7 @@ static inline void a_barrier()
 #else
 
 #define a_cas a_cas
-__attribute__((__visibility__("hidden"))) extern const void *__sh_cas_ptr;
+extern hidden const void *__sh_cas_ptr;
 static inline int a_cas(volatile int *p, int t, int s)
 {
        register int r1 __asm__("r1");
index af02af945be5f059492c530b002b23da1fa1cd9d..7b12665f173b38663fdc71ebea8a15d104a5d08f 100644 (file)
@@ -1,12 +1,13 @@
 #include <features.h>
+#include "libc.h"
 
 #define START "_start"
 
 #include "crt_arch.h"
 
 int main();
-void _init() __attribute__((weak));
-void _fini() __attribute__((weak));
+weak void _init();
+weak void _fini();
 _Noreturn int __libc_start_main(int (*)(), int, char **,
        void (*)(), void(*)(), void(*)());
 
index be0171535bf860ecab1a35d2f42a977c6b09f0f3..7bb3322f5237054ed6a944d1c8cfd01fb8b3f525 100644 (file)
@@ -3,13 +3,12 @@
 #include "../ldso/dlstart.c"
 
 int main();
-void _init() __attribute__((weak));
-void _fini() __attribute__((weak));
+weak void _init();
+weak void _fini();
 _Noreturn int __libc_start_main(int (*)(), int, char **,
        void (*)(), void(*)(), void(*)());
 
-__attribute__((__visibility__("hidden")))
-_Noreturn void __dls2(unsigned char *base, size_t *sp)
+hidden _Noreturn void __dls2(unsigned char *base, size_t *sp)
 {
        __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0);
 }
index 4dbe17843ca2712388653c4065977d383df0c328..20d50f2cbc8d608af9c8b4bd2ba6b74142702b99 100644 (file)
@@ -1,5 +1,6 @@
 #include <stddef.h>
 #include "dynlink.h"
+#include "libc.h"
 
 #ifndef START
 #define START "_dlstart"
 
 #ifndef GETFUNCSYM
 #define GETFUNCSYM(fp, sym, got) do { \
-       __attribute__((__visibility__("hidden"))) void sym(); \
+       hidden void sym(); \
        static void (*static_func_ptr)() = sym; \
        __asm__ __volatile__ ( "" : "+m"(static_func_ptr) : : "memory"); \
        *(fp) = static_func_ptr; } while(0)
 #endif
 
-__attribute__((__visibility__("hidden")))
-void _dlstart_c(size_t *sp, size_t *dynv)
+hidden void _dlstart_c(size_t *sp, size_t *dynv)
 {
        size_t i, aux[AUX_CNT], dyn[DYN_CNT];
        size_t *rel, rel_size, base;
index 87281ddb6fef7e47d17b98c2846a2971c8f08cc1..b46cbafb973fa77d9252bf030a1969594b6552ab 100644 (file)
@@ -99,8 +99,7 @@ int __init_tp(void *);
 void __init_libc(char **, char *);
 void *__copy_tls(unsigned char *);
 
-__attribute__((__visibility__("hidden")))
-const char *__libc_get_version(void);
+hidden const char *__libc_get_version(void);
 
 static struct builtin_tls {
        char c;
@@ -133,14 +132,11 @@ static struct dso *const nodeps_dummy;
 
 struct debug *_dl_debug_addr = &debug;
 
-__attribute__((__visibility__("hidden")))
-extern int __malloc_replaced;
+extern hidden int __malloc_replaced;
 
-__attribute__((__visibility__("hidden")))
-void (*const __init_array_start)(void)=0, (*const __fini_array_start)(void)=0;
+hidden void (*const __init_array_start)(void)=0, (*const __fini_array_start)(void)=0;
 
-__attribute__((__visibility__("hidden")))
-extern void (*const __init_array_end)(void), (*const __fini_array_end)(void);
+extern hidden void (*const __init_array_end)(void), (*const __fini_array_end)(void);
 
 weak_alias(__init_array_start, __init_array_end);
 weak_alias(__fini_array_start, __fini_array_end);
@@ -306,8 +302,7 @@ static struct symdef find_sym(struct dso *dso, const char *s, int need_def)
        return def;
 }
 
-__attribute__((__visibility__("hidden")))
-ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
 
 static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride)
 {
@@ -1332,8 +1327,7 @@ void __init_tls(size_t *auxv)
 {
 }
 
-__attribute__((__visibility__("hidden")))
-void *__tls_get_new(tls_mod_off_t *v)
+hidden void *__tls_get_new(tls_mod_off_t *v)
 {
        pthread_t self = __pthread_self();
 
@@ -1401,8 +1395,7 @@ static void update_tls_size()
  * linker itself, but some of the relocations performed may need to be
  * replaced later due to copy relocations in the main program. */
 
-__attribute__((__visibility__("hidden")))
-void __dls2(unsigned char *base, size_t *sp)
+hidden void __dls2(unsigned char *base, size_t *sp)
 {
        if (DL_FDPIC) {
                void *p1 = (void *)sp[-2];
@@ -1860,8 +1853,7 @@ end:
        return p;
 }
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *h)
+hidden int __dl_invalid_handle(void *h)
 {
        struct dso *p;
        for (p=head; p; p=p->next) if (h==p) return 0;
@@ -2027,8 +2019,7 @@ int dladdr(const void *addr_arg, Dl_info *info)
        return 1;
 }
 
-__attribute__((__visibility__("hidden")))
-void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra)
+hidden void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra)
 {
        void *res;
        pthread_rwlock_rdlock(&lock);
@@ -2063,8 +2054,7 @@ int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void
        return ret;
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_vseterr(const char *, va_list);
+hidden void __dl_vseterr(const char *, va_list);
 
 static void error(const char *fmt, ...)
 {
index 31d324a8ace03166d2eb6b393886bd7ccaf06afe..e02242435226d070489735f3bce3856de94a43fc 100644 (file)
@@ -72,8 +72,7 @@ typedef Elf32_Phdr Phdr;
 typedef Elf64_Phdr Phdr;
 #endif
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern const size_t _DYNAMIC[];
+extern weak hidden const size_t _DYNAMIC[];
 
 static void static_init_tls(size_t *aux)
 {
index 0583f686ed9b10ea6d373ce8c6c2a60a5b3b929d..c1b066974d48e57baf4c39165c1cc1346fbaac21 100644 (file)
@@ -11,8 +11,7 @@ void __init_tls(size_t *);
 static void dummy(void) {}
 weak_alias(dummy, _init);
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern void (*const __init_array_start)(void), (*const __init_array_end)(void);
+extern weak hidden void (*const __init_array_start)(void), (*const __init_array_end)(void);
 
 static void dummy1(void *p) {}
 weak_alias(dummy1, __init_ssp);
index 4de82fd9d2f39bd19bf71269b9530eae82552c4e..e32596d10fff84a89a73cab4c0d84c26101769af 100644 (file)
@@ -17,7 +17,6 @@ void __stack_chk_fail(void)
        a_crash();
 }
 
-__attribute__((__visibility__("hidden")))
-void __stack_chk_fail_local(void);
+hidden void __stack_chk_fail_local(void);
 
 weak_alias(__stack_chk_fail, __stack_chk_fail_local);
index d6bd546b40ec92e9063c388a081088f39cfb21bd..7c323d2670a7d43a3c43686712e87c081b77720c 100644 (file)
@@ -6,8 +6,7 @@
 #include "libc.h"
 #include "ksigaction.h"
 
-__attribute__((__visibility__("hidden")))
-volatile int __abort_lock[1];
+hidden volatile int __abort_lock[1];
 
 _Noreturn void abort(void)
 {
index bf7835a15cd2d3ecf9d7d7c7e8e1dc25a62d2806..a6869b37594ea06585bdbffd5bb4e0e52c956234 100644 (file)
@@ -12,8 +12,7 @@ weak_alias(dummy, __funcs_on_exit);
 weak_alias(dummy, __stdio_exit);
 weak_alias(dummy, _fini);
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern void (*const __fini_array_start)(void), (*const __fini_array_end)(void);
+extern weak hidden void (*const __fini_array_start)(void), (*const __fini_array_end)(void);
 
 static void libc_exit_fini(void)
 {
index 7eb50c6bd12a3b5e1b0ffdf519b0981597368128..3c3f077dcfa54df9e3c1976301fbe5a04e02648e 100644 (file)
@@ -1,7 +1,7 @@
 #include <stdint.h>
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void *__fdpic_fixup(void *map, uintptr_t *a, uintptr_t *z)
+hidden void *__fdpic_fixup(void *map, uintptr_t *a, uintptr_t *z)
 {
        /* If map is a null pointer, the program was loaded by a
         * non-FDPIC-aware ELF loader, and fixups are not needed,
index 5e14518312c77025d107f3f11a2d1ea626f2734a..7307a738e178b2fa20469d190a8a8b009f6870a4 100644 (file)
@@ -33,24 +33,21 @@ struct __libc {
 #define PAGE_SIZE libc.page_size
 #endif
 
-#ifdef __PIC__
-#define ATTR_LIBC_VISIBILITY __attribute__((visibility("hidden")))
-#else
-#define ATTR_LIBC_VISIBILITY
-#endif
+#define weak __attribute__((__weak__))
+#define hidden __attribute__((__visibility__("hidden")))
 
-extern struct __libc __libc ATTR_LIBC_VISIBILITY;
+extern hidden struct __libc __libc;
 #define libc __libc
 
-extern size_t __hwcap ATTR_LIBC_VISIBILITY;
-extern size_t __sysinfo ATTR_LIBC_VISIBILITY;
+extern hidden size_t __hwcap;
+extern hidden size_t __sysinfo;
 extern char *__progname, *__progname_full;
 
 /* Designed to avoid any overhead in non-threaded processes */
-void __lock(volatile int *) ATTR_LIBC_VISIBILITY;
-void __unlock(volatile int *) ATTR_LIBC_VISIBILITY;
-int __lockfile(FILE *) ATTR_LIBC_VISIBILITY;
-void __unlockfile(FILE *) ATTR_LIBC_VISIBILITY;
+hidden void __lock(volatile int *);
+hidden void __unlock(volatile int *);
+hidden int __lockfile(FILE *);
+hidden void __unlockfile(FILE *);
 #define LOCK(x) __lock(x)
 #define UNLOCK(x) __unlock(x)
 
@@ -61,7 +58,7 @@ extern char **__environ;
 
 #undef weak_alias
 #define weak_alias(old, new) \
-       extern __typeof(old) new __attribute__((weak, alias(#old)))
+       extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
 
 #undef LFS64_2
 #define LFS64_2(x, y) weak_alias(x, y)
index 5d025b0640d776f2d2540adbc0de2936ebd9eb2f..4355d84cf771f5b4a9bcabd6d20c21217360dbeb 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef MALLOC_IMPL_H
 #define MALLOC_IMPL_H
 
+#include "libc.h"
+
 void *__mmap(void *, size_t, int, int, int, off_t);
 int __munmap(void *, size_t);
 void *__mremap(void *, size_t, size_t, int, ...);
@@ -36,10 +38,8 @@ struct bin {
 
 #define IS_MMAPPED(c) !((c)->csize & (C_INUSE))
 
-__attribute__((__visibility__("hidden")))
-void __bin_chunk(struct chunk *);
+hidden void __bin_chunk(struct chunk *);
 
-__attribute__((__visibility__("hidden")))
-extern int __malloc_replaced;
+hidden extern int __malloc_replaced;
 
 #endif
index dfe80a7f894f8560e5f69ef10bdf187c392a889c..23655904348d59f8f52a155b6a5f1e9ab17075d4 100644 (file)
@@ -1,5 +1,6 @@
-__attribute__((__visibility__("hidden")))
-int __shcall(void *arg, int (*func)(void *))
+#include "libc.h"
+
+hidden int __shcall(void *arg, int (*func)(void *))
 {
        return func(arg);
 }
index 6d378a81982b66a251ae8e9b3d1610dc8624cfc4..c12a46cdbcfb9a641924257b8894c4ac1d150914 100644 (file)
@@ -2,6 +2,7 @@
 #define _INTERNAL_SYSCALL_H
 
 #include <sys/syscall.h>
+#include "libc.h"
 #include "syscall_arch.h"
 
 #ifndef SYSCALL_RLIM_INFINITY
@@ -21,8 +22,7 @@
 typedef long syscall_arg_t;
 #endif
 
-__attribute__((visibility("hidden")))
-long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...),
+hidden 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);
 
index dc044ec4129fb1c870ce30cb91b96a35a3a3df93..0d6e1f8206fb21bc860ceefd424718dc6e40b6d7 100644 (file)
@@ -1,9 +1,9 @@
 #include "version.h"
+#include "libc.h"
 
 static const char version[] = VERSION;
 
-__attribute__((__visibility__("hidden")))
-const char *__libc_get_version()
+hidden const char *__libc_get_version()
 {
        return version;
 }
index 99aafdf91b95c3d5a513b73f5fb66b764821366f..bf99dff8adc9d1db18abef84b694cb5d15cf24a1 100644 (file)
@@ -1,8 +1,7 @@
 #include <dlfcn.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+hidden void __dl_seterr(const char *, ...);
 
 static void *stub_dlsym(void *restrict p, const char *restrict s, void *restrict ra)
 {
index f3160ef40645c7adf0cfddd65fd7423159f2ebcf..86c87ef8358c86c78755409909baf63533cb0d4b 100644 (file)
@@ -4,8 +4,7 @@
 
 #define AUX_CNT 38
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern const size_t _DYNAMIC[];
+extern weak hidden const size_t _DYNAMIC[];
 
 static int static_dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data)
 {
index 0ef22319decea4863b2ceafceedb7e0a9cf9d2c0..a774209d9cfa96563760a86ff97578dccba85f14 100644 (file)
@@ -1,7 +1,7 @@
 #include <dlfcn.h>
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+hidden int __dl_invalid_handle(void *);
 
 int dlclose(void *p)
 {
index 378f035647c520e7b8a31026a2ba4654a5ee2852..c8c718ab3ccf5ec306f98c54ebb61ac295e4f24c 100644 (file)
@@ -23,8 +23,7 @@ void __dl_thread_cleanup(void)
                free(self->dlerror_buf);
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_vseterr(const char *fmt, va_list ap)
+hidden void __dl_vseterr(const char *fmt, va_list ap)
 {
        va_list ap2;
        va_copy(ap2, ap);
@@ -43,8 +42,7 @@ void __dl_vseterr(const char *fmt, va_list ap)
        self->dlerror_flag = 1;
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *fmt, ...)
+hidden void __dl_seterr(const char *fmt, ...)
 {
        va_list ap;
        va_start(ap, fmt);
@@ -52,8 +50,7 @@ void __dl_seterr(const char *fmt, ...)
        va_end(ap);
 }
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+hidden int __dl_invalid_handle(void *);
 
 static int stub_invalid_handle(void *h)
 {
index a173d1ac63ef1294decefa6b00db9a9bd7f35ce6..1e2c550082f645c1c057844b2d58c5abf5cace49 100644 (file)
@@ -1,11 +1,10 @@
 #define _GNU_SOURCE
 #include <dlfcn.h>
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+hidden int __dl_invalid_handle(void *);
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+hidden void __dl_seterr(const char *, ...);
 
 int dlinfo(void *dso, int req, void *res)
 {
index dcdb439847d939bfc2c6a2d5a37e3e588876eca3..6b1d792a3abb5519957733dc4bab188eb31ecfef 100644 (file)
@@ -1,8 +1,7 @@
 #include <dlfcn.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+hidden void __dl_seterr(const char *, ...);
 
 static void *stub_dlopen(const char *file, int mode)
 {
index a2985cb64a20a40c3efe53e30b55d2a167bd891a..df7eb9c950e373feb9ebee3be19fe52b1024c317 100644 (file)
@@ -1,8 +1,7 @@
 #include <stddef.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+hidden ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
 
 ptrdiff_t __tlsdesc_static()
 {
index 421a3d4af9b10d45f41f1c2441eef90ea2725a93..7d0e78289f01ac563a8b26942a8185a3c064d8bf 100644 (file)
@@ -1,11 +1,9 @@
 #define bittab __fsmu8
 
 #include <stdint.h>
+#include "libc.h"
 
-#ifdef __PIC__
-__attribute__((__visibility__("hidden")))
-#endif
-extern const uint32_t bittab[];
+extern hidden const uint32_t bittab[];
 
 /* Upper 6 state bits are a negative integer offset to bound-check next byte */
 /*    equivalent to: ( (b-0x80) | (b+offset) ) & ~0x3f      */
index ac9a3ac2fa7e03acd49889b9fa1c22a36f72802a..2adedaa4711cfcc69fb1b4980022b8121bf87c53 100644 (file)
@@ -8,7 +8,8 @@
 
 volatile int dummy_lock[1] = { 0 };
 
-__attribute__((__visibility__("hidden")))
+extern hidden volatile int __abort_lock[1];
+
 weak_alias(dummy_lock, __abort_lock);
 
 static int unmask_done;
index 78762aa2bf8d141737a4ba52ed34fac94308aa52..252529a4028a58ec730033f2543c9cd742f3f915 100644 (file)
@@ -1,9 +1,9 @@
 #include <setjmp.h>
 #include <signal.h>
 #include "syscall.h"
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-int __sigsetjmp_tail(sigjmp_buf jb, int ret)
+hidden int __sigsetjmp_tail(sigjmp_buf jb, int ret)
 {
        void *p = jb->__ss;
        __syscall(SYS_rt_sigprocmask, SIG_SETMASK, ret?p:0, ret?0:p, _NSIG/8);
index 09a2be84f58395f9d31531fa161d52f44c0f275b..afd82effd904feb6e793fbdd0977d7d35156f28d 100644 (file)
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 #include "syscall.h"
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_c();
+hidden long __syscall_cp_c();
 
 static long sccp(syscall_arg_t nr,
                  syscall_arg_t u, syscall_arg_t v, syscall_arg_t w,
index 3b6c9b1b2a2b3f1e3f97f226d092be83f9fec24f..3bc605717ed13f7b72db8b1ae5e39afa9ae183a6 100644 (file)
@@ -2,8 +2,7 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void *__tls_get_new(tls_mod_off_t *);
+hidden void *__tls_get_new(tls_mod_off_t *);
 
 void *__tls_get_addr(tls_mod_off_t *v)
 {
index daf496c28d395d48af202984364984968fe12490..09de65aab04aa8a225d62515d74b61740a4ba8b7 100644 (file)
@@ -5,7 +5,7 @@
 
 #define HWCAP_TLS (1 << 15)
 
-extern const unsigned char __attribute__((__visibility__("hidden")))
+extern hidden const unsigned char
        __a_barrier_oldkuser[], __a_barrier_v6[], __a_barrier_v7[],
        __a_cas_v6[], __a_cas_v7[],
        __a_gettp_cp15[];
@@ -22,8 +22,7 @@ extern const unsigned char __attribute__((__visibility__("hidden")))
 #define __a_gettp_kuser 0xffff0fe0
 #define __a_gettp_cp15 (uintptr_t)__a_gettp_cp15
 
-extern uintptr_t __attribute__((__visibility__("hidden")))
-       __a_barrier_ptr, __a_cas_ptr, __a_gettp_ptr;
+extern hidden uintptr_t __a_barrier_ptr, __a_cas_ptr, __a_gettp_ptr;
 
 int __set_thread_area(void *p)
 {
index e540e846f8849e5fc42a7d0360038c30d3514bf6..605af973fb5598e6b2a34a0789e54373e8216426 100644 (file)
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 #include "syscall.h"
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void *__start_sched(void *p)
+hidden void *__start_sched(void *p)
 {
        struct start_sched_args *ssa = p;
        void *start_arg = ssa->start_arg;
index 5d458af2227dcdbe6474710ca26d8325be434e16..43f8d4054da00415b120745e53df8df1e0e8f3a2 100644 (file)
@@ -4,8 +4,7 @@
 #include "syscall.h"
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-long __cancel(), __syscall_cp_asm(), __syscall_cp_c();
+hidden long __cancel(), __syscall_cp_asm(), __syscall_cp_c();
 
 long __cancel()
 {
@@ -45,8 +44,7 @@ static void _sigaddset(sigset_t *set, int sig)
        set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1);
 }
 
-__attribute__((__visibility__("hidden")))
-extern const char __cp_begin[1], __cp_end[1], __cp_cancel[1];
+extern hidden const char __cp_begin[1], __cp_end[1], __cp_cancel[1];
 
 static void cancel_handler(int sig, siginfo_t *si, void *ctx)
 {
index 9c47f78d1accf1aa4dbf1015fc5bab8025b30946..34264bddd9c10d81424df36571af1abb5ef1f8db 100644 (file)
@@ -7,14 +7,11 @@
 #define CPU_HAS_LLSC 0x0040
 #define CPU_HAS_CAS_L 0x0400
 
-__attribute__((__visibility__("hidden")))
-extern const char __sh_cas_gusa[], __sh_cas_llsc[], __sh_cas_imask[], __sh_cas_cas_l[];
+extern hidden const char __sh_cas_gusa[], __sh_cas_llsc[], __sh_cas_imask[], __sh_cas_cas_l[];
 
-__attribute__((__visibility__("hidden")))
-const void *__sh_cas_ptr;
+hidden const void *__sh_cas_ptr;
 
-__attribute__((__visibility__("hidden")))
-unsigned __sh_nommu;
+hidden unsigned __sh_nommu;
 
 int __set_thread_area(void *p)
 {
index d4fb8be5982ae450e07be7571caee3087947c1fc..719392a6b72cf40ad8c9c542cf2f3da1989856fd 100644 (file)
@@ -12,7 +12,7 @@ void __unmapself_sh_nommu(void *, size_t);
        : : "r"(pc), "r"(sp) : "r0", "memory" )
 #include "../__unmapself.c"
 #undef __unmapself
-extern __attribute__((__visibility__("hidden"))) unsigned __sh_nommu;
+extern hidden unsigned __sh_nommu;
 #else
 #define __sh_nommu 0
 #endif
index b1f3a382b398f67a07779d83c21dcf937e5c235a..b1a1faa648c9729bd394621b42c891dc33bc6402 100644 (file)
@@ -1,8 +1,9 @@
 #include <sys/syscall.h>
+#include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_internal(volatile void*, long long, long long, long long, long long,
-                             long long, long long, long long);
+hidden long __syscall_cp_internal(volatile void*, long long, long long,
+                                  long long, long long, long long,
+                                  long long, long long);
 
 struct __timespec { long long tv_sec; long tv_nsec; };
 struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
@@ -12,9 +13,9 @@ struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
        ts->tv_nsec = __tsc(X)->tv_nsec; \
        (X) = (unsigned long)ts; } } while(0)
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_asm (volatile void * foo, long long n, long long a1, long long a2, long long a3,
-                            long long a4, long long a5, long long a6)
+hidden long __syscall_cp_asm (volatile void * foo, long long n, long long a1,
+                              long long a2, long long a3, long long a4,
+                              long long a5, long long a6)
 {
        struct __timespec_kernel ts[1];
        switch (n) {