apply hidden visibility to tlsdesc accessor functions
authorRich Felker <dalias@aerifal.cx>
Sat, 18 Apr 2015 03:29:45 +0000 (23:29 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 18 Apr 2015 03:29:45 +0000 (23:29 -0400)
these functions are never called directly; only their addresses are
used, so PLT indirections should never happen unless a broken
application tries to redefine them, but it's still best to make them
hidden.

src/ldso/aarch64/tlsdesc.s
src/ldso/dynlink.c
src/ldso/i386/tlsdesc.s
src/ldso/tlsdesc.c
src/ldso/x86_64/tlsdesc.s

index 69737b2d31a23c4d6b383e3fb3797716ca0d6be5..8ed5c267849149013a23ada67fc6387cb0f27bab 100644 (file)
@@ -3,6 +3,7 @@
 //     return a[1];
 // }
 .global __tlsdesc_static
+.hidden __tlsdesc_static
 .type __tlsdesc_static,@function
 __tlsdesc_static:
        ldr x0,[x0,#8]
@@ -19,6 +20,7 @@ __tlsdesc_static:
 //     return __tls_get_new(p) - tp;
 // }
 .global __tlsdesc_dynamic
+.hidden __tlsdesc_dynamic
 .type __tlsdesc_dynamic,@function
 __tlsdesc_dynamic:
        stp x1,x2,[sp,#-32]!
index 9f91a73822933a39cc1a33100c50426d5e76b4ec..ccd526f058eb214168e76b2398351cdaffe468f5 100644 (file)
@@ -250,6 +250,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();
 
 static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride)
index 00a9fc09ac9776014c833082d9d5caae377c86c9..4a553bce11ee1457d284a00cf7ecdf3a40dc6bba 100644 (file)
@@ -1,5 +1,6 @@
 .text
 .global __tlsdesc_static
+.hidden __tlsdesc_static
 .type __tlsdesc_static,@function
 __tlsdesc_static:
        mov 4(%eax),%eax
@@ -8,6 +9,7 @@ __tlsdesc_static:
 .hidden __tls_get_new
 
 .global __tlsdesc_dynamic
+.hidden __tlsdesc_dynamic
 .type __tlsdesc_dynamic,@function
 __tlsdesc_dynamic:
        mov 4(%eax),%eax
index 031b5b808f6df36a45e3d8f8f49e239432544973..4bc654fa5cbf4c11de62c88270ca9ca0baa52684 100644 (file)
@@ -3,6 +3,9 @@
 #include <stddef.h>
 #include "libc.h"
 
+__attribute__((__visibility__("hidden")))
+ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+
 ptrdiff_t __tlsdesc_static()
 {
        return 0;
index eb21b9dee77bcadfdd5834134f846a4f9cfb7d89..8238c3ebf4d6ecb44b92573133e36cfa882ea383 100644 (file)
@@ -1,5 +1,6 @@
 .text
 .global __tlsdesc_static
+.hidden __tlsdesc_static
 .type __tlsdesc_static,@function
 __tlsdesc_static:
        mov 8(%rax),%rax
@@ -8,6 +9,7 @@ __tlsdesc_static:
 .hidden __tls_get_new
 
 .global __tlsdesc_dynamic
+.hidden __tlsdesc_dynamic
 .type __tlsdesc_dynamic,@function
 __tlsdesc_dynamic:
        mov 8(%rax),%rax