diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-02-19 00:00:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-02-19 00:00:05 +0000 |
commit | 61e0617ac34c4daaeb2f07f89a05c9f9353b8879 (patch) | |
tree | 8dc1f2e00b67c6661892258bf2d479e793854c54 /elf/link.h | |
parent | 1a989e004c00955e60cd315666ebd450d6fa9732 (diff) | |
download | glibc-61e0617ac34c4daaeb2f07f89a05c9f9353b8879.tar glibc-61e0617ac34c4daaeb2f07f89a05c9f9353b8879.tar.gz glibc-61e0617ac34c4daaeb2f07f89a05c9f9353b8879.tar.bz2 glibc-61e0617ac34c4daaeb2f07f89a05c9f9353b8879.zip |
Update.
* elf/link.h (link_map): Add l_dev and l_ino.
* elf/dl-load.c (_dl_map_object_from_fd): Test dev/ino of newly
loaded shared object with all laoded objects. Initialize l_ino
and l_dev in case it's new.
* elf/rtld.c (dl_main): Explain situation is l_dev/l_ino with main
object.
* elf/Makefile: Compile and run new test.
* elf/multiload.c: New file.
Diffstat (limited to 'elf/link.h')
-rw-r--r-- | elf/link.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/elf/link.h b/elf/link.h index ecf0469b7a..4abcb49070 100644 --- a/elf/link.h +++ b/elf/link.h @@ -1,6 +1,6 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999 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 @@ -24,6 +24,7 @@ #include <features.h> #include <elf.h> #include <dlfcn.h> +#include <sys/types.h> /* We use this macro to refer to ELF types independent of the native wordsize. `ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'. */ @@ -193,6 +194,11 @@ struct link_map /* A similar array, this time only with the local scope. This is used occasionally. */ struct r_scope_elem *l_local_scope[2]; + + /* This information is kept to check for sure whether a shared + object is the same as one already loaded. */ + dev_t l_dev; + ino_t l_ino; }; #endif /* link.h */ |