diff options
author | Eric Andersen <andersen@codepoet.org> | 2004-10-03 07:53:52 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2004-10-03 07:53:52 +0000 |
commit | 3b8039fd51c6b2e292d44794ba273aca2c88b321 (patch) | |
tree | ee2868495a5f93fa093887d6e39e8da4768c330c /ldso | |
parent | 31cfe2300d8b9aee110ba0a7213f6befdd3ffce0 (diff) |
This patch from Mike Frysinger, extended from an earlier patch from Peter S.
Mazinger implements the changes suggested by me on the uclibc list.
On Tuesday 28 September 2004 02:24 pm, Erik Andersen wrote:
> What I think should be done is
>
> *) Someone that cares about USE_CACHE should fix that option
> up to be sure it works, and give it a proper config entry
> in extra/Configs/Config.in, and rename it to something
> more appropriate such as LDSO_CACHE_SUPPORT.
>
> *) When LDSO_CACHE_SUPPORT=n, UCLIBC_RUNTIME_PREFIX /usr/X11R6/lib
> should be included in the default library search path in
> dl-elf.c, ldd, and ldconfig.
>
> *) When LDSO_CACHE_SUPPORT=y, UCLIBC_RUNTIME_PREFIX /usr/X11R6/lib
> should be excluded from the default library search path in
> dl-elf.c, ldd, and ldconfig, and those wishing to include
> X11 stuff should add that into /etc/ld.so.conf and re-run
> ldconfig.
>
> *) At present, LDSO_CONF and LDSO_CACHE use the same names
> and same structure as glibc. This precludes
> LDSO_CACHE_SUPPORT being uses in any sane fashion on a
> dial glibc and uClibc system. Just as it was necessary
> for use to use a different name for 'libuClibc' rather
> than 'libc', and 'ld-uClibc.so.0' rather than
> 'ld-linux.so.2' it seems that these configuration files
> really ought to be given different names.
>
Diffstat (limited to 'ldso')
-rw-r--r-- | ldso/include/dl-elf.h | 15 | ||||
-rw-r--r-- | ldso/ldso/Makefile | 2 | ||||
-rw-r--r-- | ldso/ldso/dl-elf.c | 7 | ||||
-rw-r--r-- | ldso/libdl/Makefile | 2 | ||||
-rw-r--r-- | ldso/libdl/libdl.c | 2 |
5 files changed, 13 insertions, 15 deletions
diff --git a/ldso/include/dl-elf.h b/ldso/include/dl-elf.h index f1213d1b3..5a6e56c80 100644 --- a/ldso/include/dl-elf.h +++ b/ldso/include/dl-elf.h @@ -5,15 +5,10 @@ #include <elf.h> #include <link.h> -#ifdef DEBUG -# define LDSO_CONF "../util/ld.so.conf" -# define LDSO_CACHE "../util/ld.so.cache" -# define LDSO_PRELOAD "../util/ld.so.preload" -#else -# define LDSO_CONF UCLIBC_RUNTIME_PREFIX "etc/ld.so.conf" -# define LDSO_CACHE UCLIBC_RUNTIME_PREFIX "etc/ld.so.cache" -# define LDSO_PRELOAD UCLIBC_RUNTIME_PREFIX "etc/ld.so.preload" -#endif +#define LDSO_BASE_PATH UCLIBC_RUNTIME_PREFIX "etc/" __LDSO_BASE_FILENAME__ +#define LDSO_CONF LDSO_BASE_PATH ".conf" +#define LDSO_CACHE LDSO_BASE_PATH ".cache" +#define LDSO_PRELOAD LDSO_BASE_PATH ".preload" #define LIB_ANY -1 @@ -30,7 +25,7 @@ struct elf_resolve; /* Definitions and prototypes for cache stuff */ -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ extern int _dl_map_cache(void); extern int _dl_unmap_cache(void); diff --git a/ldso/ldso/Makefile b/ldso/ldso/Makefile index 90f44baa8..4196748f9 100644 --- a/ldso/ldso/Makefile +++ b/ldso/ldso/Makefile @@ -23,7 +23,7 @@ LDSO_FULLNAME=ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so SSPFLAGS=$(call check_gcc,-fno-stack-protector,) -XXFLAGS=$(XWARNINGS) $(LIBRARY_CACHE) $(SSPFLAGS) +XXFLAGS=$(XWARNINGS) $(SSPFLAGS) ifeq ($(DODEBUG),y) # Not really much point in including debugging info, since gdb # can't really debug ldso, since gdb requires help from ldso to diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c index 019acaac8..0719680e9 100644 --- a/ldso/ldso/dl-elf.c +++ b/ldso/ldso/dl-elf.c @@ -32,7 +32,7 @@ #include "ldso.h" -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ static caddr_t _dl_cache_addr = NULL; static size_t _dl_cache_size = 0; @@ -317,7 +317,7 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, * ABI, so we have some flexibility here. For now, search it before * the hard coded paths that follow (i.e before /lib and /usr/lib). */ -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ if (_dl_cache_addr != NULL && _dl_cache_addr != (caddr_t) - 1) { int i; header_t *header = (header_t *) _dl_cache_addr; @@ -358,6 +358,9 @@ struct elf_resolve *_dl_load_shared_library(int secure, struct dyn_elf **rpnt, if ((tpnt1 = search_for_named_library(libname, secure, UCLIBC_RUNTIME_PREFIX "lib:" UCLIBC_RUNTIME_PREFIX "usr/lib" +#if !defined (__LDSO_CACHE_SUPPORT__) + ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" +#endif , rpnt) ) != NULL) { diff --git a/ldso/libdl/Makefile b/ldso/libdl/Makefile index 3d1c2ebe4..2da54e0a7 100644 --- a/ldso/libdl/Makefile +++ b/ldso/libdl/Makefile @@ -21,7 +21,7 @@ TOPDIR=../../ include $(TOPDIR)Rules.mak -XXFLAGS=$(XWARNINGS) $(LIBRARY_CACHE) +XXFLAGS=$(XWARNINGS) ifeq ($(DODEBUG),y) XXFLAGS+=-O0 -g3 else diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c index 3992163ae..aa19e81cc 100644 --- a/ldso/libdl/libdl.c +++ b/ldso/libdl/libdl.c @@ -54,7 +54,7 @@ extern struct elf_resolve *_dl_loaded_modules __attribute__ ((__weak__)); extern struct r_debug *_dl_debug_addr __attribute__ ((__weak__)); extern unsigned long _dl_error_number __attribute__ ((__weak__)); extern void *(*_dl_malloc_function)(size_t) __attribute__ ((__weak__)); -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ int _dl_map_cache(void) __attribute__ ((__weak__)); int _dl_unmap_cache(void) __attribute__ ((__weak__)); #endif |