mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Clean up conditionalize of ld.so.cache support.
This commit is contained in:
parent
8f565a27ed
commit
f57f805541
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2012-10-03 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/mach/hurd/dl-cache.c: File removed.
|
||||
* config.h.in (USE_LDCONFIG): New #undef.
|
||||
* configure.in (use_ldconfig): If set, define USE_LDCONFIG.
|
||||
* configure: Regenerated.
|
||||
* elf/Makefile (dl-routines): Add dl-cache only under
|
||||
[$(use-ldconfig) = yes].
|
||||
* elf/dl-load.c (_dl_map_object): Conditionalize code consulting the
|
||||
cache on [USE_LDCONFIG].
|
||||
* elf/dl-open.c (_dl_open): Call _dl_unload_cache only under
|
||||
[USE_LDCONFIG].
|
||||
* elf/rtld.c (dl_main): Likewise.
|
||||
|
||||
2012-10-03 Pino Toscano <toscano.pino@tiscali.it>
|
||||
|
||||
* sysdeps/posix/sysconf.c (__sysconf): Return 0 also for
|
||||
|
@ -177,6 +177,9 @@
|
||||
/* Define if library functions should try to contact the nscd daemon. */
|
||||
#undef USE_NSCD
|
||||
|
||||
/* Define if the dynamic linker should consult an ld.so.cache file. */
|
||||
#undef USE_LDCONFIG
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
|
4
configure
vendored
4
configure
vendored
@ -7493,6 +7493,10 @@ fi
|
||||
|
||||
|
||||
|
||||
if test x$use_ldconfig = xyes; then
|
||||
$as_echo "#define USE_LDCONFIG 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
@ -2156,6 +2156,9 @@ AC_SUBST(libc_cv_cc_nofma)
|
||||
AC_SUBST(libc_cv_as_i686)
|
||||
AC_SUBST(libc_cv_sparc_as_vis3)
|
||||
|
||||
if test x$use_ldconfig = xyes; then
|
||||
AC_DEFINE(USE_LDCONFIG)
|
||||
fi
|
||||
AC_SUBST(use_ldconfig)
|
||||
AC_SUBST(ldd_rewrite_script)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,28 +0,0 @@
|
||||
/* Stubby version of dl-cache; the Hurd doesn't support this "feature".
|
||||
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
const char *
|
||||
_dl_load_cache_lookup (const char *name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
_dl_unload_cache (void)
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue
Block a user