summaryrefslogtreecommitdiff
path: root/ldso
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-10-03 07:53:52 +0000
committerEric Andersen <andersen@codepoet.org>2004-10-03 07:53:52 +0000
commit3b8039fd51c6b2e292d44794ba273aca2c88b321 (patch)
treeee2868495a5f93fa093887d6e39e8da4768c330c /ldso
parent31cfe2300d8b9aee110ba0a7213f6befdd3ffce0 (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.h15
-rw-r--r--ldso/ldso/Makefile2
-rw-r--r--ldso/ldso/dl-elf.c7
-rw-r--r--ldso/libdl/Makefile2
-rw-r--r--ldso/libdl/libdl.c2
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