From 1b1cafa50c11d4c772a4f938b2feb7cbcc5f992a Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 17 Apr 2015 23:29:45 -0400 Subject: apply hidden visibility to tlsdesc accessor functions 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 | 2 ++ src/ldso/dynlink.c | 1 + src/ldso/i386/tlsdesc.s | 2 ++ src/ldso/tlsdesc.c | 3 +++ src/ldso/x86_64/tlsdesc.s | 2 ++ 5 files changed, 10 insertions(+) (limited to 'src/ldso') diff --git a/src/ldso/aarch64/tlsdesc.s b/src/ldso/aarch64/tlsdesc.s index 69737b2d..8ed5c267 100644 --- a/src/ldso/aarch64/tlsdesc.s +++ b/src/ldso/aarch64/tlsdesc.s @@ -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]! diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 9f91a738..ccd526f0 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -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) diff --git a/src/ldso/i386/tlsdesc.s b/src/ldso/i386/tlsdesc.s index 00a9fc09..4a553bce 100644 --- a/src/ldso/i386/tlsdesc.s +++ b/src/ldso/i386/tlsdesc.s @@ -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 diff --git a/src/ldso/tlsdesc.c b/src/ldso/tlsdesc.c index 031b5b80..4bc654fa 100644 --- a/src/ldso/tlsdesc.c +++ b/src/ldso/tlsdesc.c @@ -3,6 +3,9 @@ #include #include "libc.h" +__attribute__((__visibility__("hidden"))) +ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic(); + ptrdiff_t __tlsdesc_static() { return 0; diff --git a/src/ldso/x86_64/tlsdesc.s b/src/ldso/x86_64/tlsdesc.s index eb21b9de..8238c3eb 100644 --- a/src/ldso/x86_64/tlsdesc.s +++ b/src/ldso/x86_64/tlsdesc.s @@ -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 -- cgit v1.2.1