about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-08-12 20:09:16 +0000
committerUlrich Drepper <drepper@redhat.com>2007-08-12 20:09:16 +0000
commit27d9ffda17df4d2388687afd12897774fde39bcc (patch)
treee68c74b095d9ae0b5eea23c0b80c54b73b94d3b6 /sysdeps
parent8d944b0fc6195a2cd2308287e96a46b21f675015 (diff)
downloadglibc-27d9ffda17df4d2388687afd12897774fde39bcc.tar.gz
glibc-27d9ffda17df4d2388687afd12897774fde39bcc.tar.xz
glibc-27d9ffda17df4d2388687afd12897774fde39bcc.zip
2007-08-01 Andreas Jaeger <aj@suse.de>
	    Jakub Jelinek  <jakub@redhat.com>

	* elf/ldconfig.c (opt_ignore_aux_cache): Add new option.
	(options): Add option.
	(parse_opt): Handle option.
	(manual_link): Adjust process_file caller.  Call implicit_soname.
	(search_dir): Formatting.  Use and populate auxiliary cache.
	(main): Load and save auxiliary cache.
	* elf/readlib.c (process_file): Add stat_buf argument.  Pass struct
	stat64 from fstat64 to caller.
	(implicit_soname): New function.
	* elf/readelflib.c (process_elf_file): If DT_SONAME is not present,
	leave *soname as NULL.
	* elf/cache.c: Include libgen.h.
	(print_entry, print_cache, compare, save_cache, add_to_cache):
	Formatting and cleanups.
	(aux_cache_entry_id, aux_cache_entry, aux_cache_file_entry,
	aux_cache_file): New structures.
	(AUX_CACHEMAGIC): Define.
	(primes): New array.
	(aux_hash_size, aux_hash): New variables.
	(aux_cache_entry_id_hash, nextprime, init_aux_cache,
	search_aux_cache, insert_to_aux_cache, add_to_aux_cache,
	load_aux_cache, save_aux_cache): New functions.
	* sysdeps/generic/ldconfig.h (_PATH_LDCONFIG_AUX_CACHE): Define.
	(init_aux_cache, search_aux_cache, add_to_aux_cache,
	load_aux_cache, save_aux_cache, implicit_soname): New prototypes.
	(process_file): Adjust prototype.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/ldconfig.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h
index 9da8d6b3d1..fadd5ec370 100644
--- a/sysdeps/generic/ldconfig.h
+++ b/sysdeps/generic/ldconfig.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999.
 
@@ -35,6 +35,9 @@
 #define FLAG_MIPS64_LIBN32	0x0600
 #define FLAG_MIPS64_LIBN64	0x0700
 
+/* Name of auxiliary cache.  */
+#define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
+
 /* Declared in cache.c.  */
 extern void print_cache (const char *cache_name);
 
@@ -45,10 +48,24 @@ extern void save_cache (const char *cache_name);
 extern void add_to_cache (const char *path, const char *lib, int flags,
 			  unsigned int osversion, uint64_t hwcap);
 
+extern void init_aux_cache (void);
+
+extern void load_aux_cache (const char *aux_cache_name);
+
+extern int search_aux_cache (struct stat64 *stat_buf, int *flags,
+			     unsigned int *osversion, char **soname);
+
+extern void add_to_aux_cache (struct stat64 *stat_buf, int flags,
+			      unsigned int osversion, const char *soname);
+
+extern void save_aux_cache (const char *aux_cache_name);
+
 /* Declared in readlib.c.  */
 extern int process_file (const char *real_file_name, const char *file_name,
 			 const char *lib, int *flag, unsigned int *osversion,
-			 char **soname, int is_link);
+			 char **soname, int is_link, struct stat64 *stat_buf);
+
+extern char *implicit_soname (const char *lib, int flag);
 
 /* Declared in readelflib.c.  */
 extern int process_elf_file (const char *file_name, const char *lib, int *flag,