+2012-04-10 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * elf/dl-support.c (_dl_inhibit_cache): New variable.
+ * elf/rtld.c (_rtld_global_ro): New member _dl_inhibit_cache.
+ (dl_main): Handle --inhibit-cache.
+ * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): New member
+ _dl_inhibit_cache.
+ * elf/dl-load.c (_dl_map_object): Use it.
+ * elf/Makefile: Define SYSCONFDIR when building rtld.c.
+
2012-04-09 Joseph Myers <joseph@codesourcery.com>
[BZ #13872]
-# Copyright (C) 1995-2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 1995-2012 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
-D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
CFLAGS-cache.c = $(SYSCONF-FLAGS)
+CFLAGS-rtld.c = $(SYSCONF-FLAGS)
CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1)
/* Map in a shared object's segments from the file.
- Copyright (C) 1995-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 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
if (fd == -1
&& (__builtin_expect (! (mode & __RTLD_SECURE), 1)
- || ! INTUSE(__libc_enable_secure)))
+ || ! INTUSE(__libc_enable_secure))
+ && __builtin_expect (GLRO(dl_inhibit_cache) == 0, 1))
{
/* Check the list of libraries in the file /etc/ld.so.cache,
for compatibility with Linux's ldconfig program. */
/* Support for dynamic linking code in static libc.
- Copyright (C) 1996-2008,2009,2010,2011 Free Software Foundation, Inc.
+ Copyright (C) 1996-2012 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
size_t _dl_pagesize = EXEC_PAGESIZE;
+int _dl_inhibit_cache;
+
unsigned int _dl_osversion;
/* All known directories in sorted order. */
._dl_fpu_control = _FPU_DEFAULT,
._dl_pointer_guard = 1,
._dl_pagesize = EXEC_PAGESIZE,
+ ._dl_inhibit_cache = 0,
/* Function pointers. */
._dl_debug_printf = _dl_debug_printf,
{
mode = verify;
+ ++_dl_skip_args;
+ --_dl_argc;
+ ++INTUSE(_dl_argv);
+ }
+ else if (! strcmp (INTUSE(_dl_argv)[1], "--inhibit-cache"))
+ {
+ GLRO(dl_inhibit_cache) = 1;
++_dl_skip_args;
--_dl_argc;
++INTUSE(_dl_argv);
--list list all dependencies and how they are resolved\n\
--verify verify that given object really is a dynamically linked\n\
object we can handle\n\
+ --inhibit-cache Do not use " LD_SO_CACHE "\n\
--library-path PATH use given PATH instead of content of the environment\n\
variable LD_LIBRARY_PATH\n\
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 1995-2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 1995-2012 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
/* Cached value of `getpagesize ()'. */
EXTERN size_t _dl_pagesize;
+ /* Do we read from ld.so.cache? */
+ EXTERN int _dl_inhibit_cache;
+
/* Copy of the content of `_dl_main_searchlist' at startup time. */
EXTERN struct r_scope_elem _dl_initial_searchlist;