diff options
| author | Rich Felker <dalias@aerifal.cx> | 2016-01-25 19:01:22 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2016-01-25 19:04:45 -0500 | 
| commit | 4058795d4938ea72a27fb3231ce52c69c7e39637 (patch) | |
| tree | 4700c69e4af658e33ab0da78b4252fa69cff2bb8 /src | |
| parent | 14469371cd1efd2be44f0825fec9ad8bb3216da9 (diff) | |
| download | musl-4058795d4938ea72a27fb3231ce52c69c7e39637.tar.gz | |
move static-linked stub dlsym out of dynlink.c
the function name is still __-prefixed because it requires an asm
wrapper to pass the caller's address in order for RTLD_NEXT to work.
since this was the last function in dynlink.c still used for static
linking, now the whole file is conditional on SHARED being defined.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ldso/__dlsym.c | 13 | ||||
| -rw-r--r-- | src/ldso/dynlink.c | 13 | 
2 files changed, 15 insertions, 11 deletions
| diff --git a/src/ldso/__dlsym.c b/src/ldso/__dlsym.c new file mode 100644 index 00000000..99aafdf9 --- /dev/null +++ b/src/ldso/__dlsym.c @@ -0,0 +1,13 @@ +#include <dlfcn.h> +#include "libc.h" + +__attribute__((__visibility__("hidden"))) +void __dl_seterr(const char *, ...); + +static void *stub_dlsym(void *restrict p, const char *restrict s, void *restrict ra) +{ +	__dl_seterr("Symbol not found: %s", s); +	return 0; +} + +weak_alias(stub_dlsym, __dlsym); diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 43f86fa3..e328679b 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -1,3 +1,4 @@ +#ifdef SHARED  #define _GNU_SOURCE  #include <stdio.h>  #include <stdlib.h> @@ -23,8 +24,6 @@  static void error(const char *, ...); -#ifdef SHARED -  #define MAXP2(a,b) (-(-(a)&-(b)))  #define ALIGN(x,y) ((x)+(y)-1 & -(y)) @@ -1913,13 +1912,6 @@ int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void  	}  	return ret;  } -#else -void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra) -{ -	error("Symbol not found: %s", s); -	return 0; -} -#endif  __attribute__((__visibility__("hidden")))  void __dl_vseterr(const char *, va_list); @@ -1928,7 +1920,6 @@ static void error(const char *fmt, ...)  {  	va_list ap;  	va_start(ap, fmt); -#ifdef SHARED  	if (!runtime) {  		vdprintf(2, fmt, ap);  		dprintf(2, "\n"); @@ -1936,7 +1927,7 @@ static void error(const char *fmt, ...)  		va_end(ap);  		return;  	} -#endif  	__dl_vseterr(fmt, ap);  	va_end(ap);  } +#endif | 
