From 3b8039fd51c6b2e292d44794ba273aca2c88b321 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sun, 3 Oct 2004 07:53:52 +0000 Subject: 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. > --- utils/ldconfig.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'utils/ldconfig.c') diff --git a/utils/ldconfig.c b/utils/ldconfig.c index acb78a2ff..e466a42fb 100644 --- a/utils/ldconfig.c +++ b/utils/ldconfig.c @@ -503,7 +503,7 @@ void scan_dir(const char *rawname) { if (!lp->islink) link_shlib(name, lp->name, lp->so); -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ if (!nocache) cache_dolib(name, lp->so, lp->libtype); #endif @@ -553,7 +553,7 @@ char *get_extpath(void) return res; } -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ typedef struct liblist { int flags; @@ -876,6 +876,9 @@ int main(int argc, char **argv) { scan_dir(UCLIBC_RUNTIME_PREFIX "lib"); scan_dir(UCLIBC_RUNTIME_PREFIX "usr/lib"); +#if !defined (__LDSO_CACHE_SUPPORT__) + scan_dir(UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib"); +#endif /* I guess the defaults aren't good enough */ if ((extpath = get_extpath())) @@ -886,8 +889,12 @@ int main(int argc, char **argv) if (len) while (cp[--len] == '/' && len) cp[len] = 0; - if (strcmp(UCLIBC_RUNTIME_PREFIX "lib", cp) == 0 || - strcmp(UCLIBC_RUNTIME_PREFIX "usr/lib", cp) == 0) { + if (strcmp(UCLIBC_RUNTIME_PREFIX "lib", cp) == 0 + || strcmp(UCLIBC_RUNTIME_PREFIX "usr/lib", cp) == 0 +#if !defined (__LDSO_CACHE_SUPPORT__) + || strcmp(UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib", cp) == 0 +#endif + ) { if (verbose >= 0) warnx("Path `%s' given more than once\n", cp); continue; @@ -898,7 +905,7 @@ int main(int argc, char **argv) } } -#ifdef USE_CACHE +#ifdef __LDSO_CACHE_SUPPORT__ if (!nocache) cache_write(); #endif -- cgit v1.2.3