aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2012-10-03 16:13:14 -0700
committerRoland McGrath <roland@hack.frob.com>2012-10-03 16:13:14 -0700
commitf57f805541562734a40088b8be93e3bc9e86be54 (patch)
tree8137253002dda45425068fef98c9b7649825c3fb /elf
parent8f565a27edb9908e237cbb77c8ffc7824f579f15 (diff)
downloadglibc-f57f805541562734a40088b8be93e3bc9e86be54.zip
glibc-f57f805541562734a40088b8be93e3bc9e86be54.tar.gz
glibc-f57f805541562734a40088b8be93e3bc9e86be54.tar.bz2
Clean up conditionalize of ld.so.cache support.
Diffstat (limited to 'elf')
-rw-r--r--elf/Makefile9
-rw-r--r--elf/dl-load.c12
-rw-r--r--elf/dl-open.c4
-rw-r--r--elf/rtld.c2
4 files changed, 16 insertions, 11 deletions
diff --git a/elf/Makefile b/elf/Makefile
index 2eb12d3..58cc15c 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -19,6 +19,8 @@
subdir := elf
+include ../Makeconfig
+
headers = elf.h bits/elfclass.h link.h bits/link.h
routines = $(dl-routines) dl-support dl-iteratephdr \
dl-addr enbl-secure dl-profstub \
@@ -26,10 +28,13 @@ routines = $(dl-routines) dl-support dl-iteratephdr \
# The core dynamic linking functions are in libc for the static and
# profiled libraries.
-dl-routines = $(addprefix dl-,load cache lookup object reloc deps \
+dl-routines = $(addprefix dl-,load lookup object reloc deps \
runtime error init fini debug misc \
version profile conflict tls origin scope \
execstack caller open close trampoline)
+ifeq (yes,$(use-ldconfig))
+dl-routines += dl-cache
+endif
all-dl-routines = $(dl-routines) $(sysdep-dl-routines)
# But they are absent from the shared libc, because that code is in ld.so.
elide-routines.os = $(all-dl-routines) dl-support enbl-secure dl-origin \
@@ -45,8 +50,6 @@ CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-iterate-phdr.c = $(uses-callbacks)
-include ../Makeconfig
-
ifeq ($(unwind-find-fde),yes)
routines += unwind-dw2-fde-glibc
shared-only-routines += unwind-dw2-fde-glibc
diff --git a/elf/dl-load.c b/elf/dl-load.c
index ea31417..0bfa74a 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -2197,6 +2197,7 @@ _dl_map_object (struct link_map *loader, const char *name,
&loader->l_runpath_dirs, &realname, &fb, loader,
LA_SER_RUNPATH, &found_other_class);
+#ifdef USE_LDCONFIG
if (fd == -1
&& (__builtin_expect (! (mode & __RTLD_SECURE), 1)
|| ! INTUSE(__libc_enable_secure))
@@ -2208,22 +2209,22 @@ _dl_map_object (struct link_map *loader, const char *name,
if (cached != NULL)
{
-#ifdef SHARED
+# ifdef SHARED
// XXX Correct to unconditionally default to namespace 0?
l = (loader
?: GL(dl_ns)[LM_ID_BASE]._ns_loaded
?: &GL(dl_rtld_map));
-#else
+# else
l = loader;
-#endif
+# endif
/* If the loader has the DF_1_NODEFLIB flag set we must not
use a cache entry from any of these directories. */
if (
-#ifndef SHARED
+# ifndef SHARED
/* 'l' is always != NULL for dynamically linked objects. */
l != NULL &&
-#endif
+# endif
__builtin_expect (l->l_flags_1 & DF_1_NODEFLIB, 0))
{
const char *dirp = system_dirs;
@@ -2261,6 +2262,7 @@ _dl_map_object (struct link_map *loader, const char *name,
}
}
}
+#endif
/* Finally, try the default path. */
if (fd == -1
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 0bc447a..5149e57 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -654,8 +654,8 @@ no more namespaces available for dlmopen()"));
int errcode = _dl_catch_error (&objname, &errstring, &malloced,
dl_open_worker, &args);
-#ifndef MAP_COPY
- /* We must munmap() the cache file. */
+#if defined USE_LDCONFIG && !defined MAP_COPY
+ /* We must unmap the cache file. */
_dl_unload_cache ();
#endif
diff --git a/elf/rtld.c b/elf/rtld.c
index ed5d062..8a02645 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2400,7 +2400,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
_dl_debug_state ();
LIBC_PROBE (init_complete, 2, LM_ID_BASE, r);
-#ifndef MAP_COPY
+#if defined USE_LDCONFIG && !defined MAP_COPY
/* We must munmap() the cache file. */
_dl_unload_cache ();
#endif