diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-05-05 23:29:18 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-05-05 23:29:18 +0000 |
commit | dc5efe83c0252ad45337ab98eff6c26fdb29b0a9 (patch) | |
tree | d7045a782818d82ee49fc8503df674026e1b0588 /elf/dlopenold.c | |
parent | 4f8dbcb126883c92d33d49c86365a1fb1e54696a (diff) | |
download | glibc-dc5efe83c0252ad45337ab98eff6c26fdb29b0a9.tar.gz glibc-dc5efe83c0252ad45337ab98eff6c26fdb29b0a9.tar.xz glibc-dc5efe83c0252ad45337ab98eff6c26fdb29b0a9.zip |
Update.
* Versions.def (ld.so): Add GLIBC_2.1.1. * elf/Makefile (routines): Add dl-origin. (tests): Add origtest. Add dependencies for the program. * elf/Versions (ld.so) [GLIBC_2.1.1]: Add _dl_origin_path, _dl_platformlen, _dl_dst_count and _dl_dst_substitute. * elf/dl-deps.c (expand_dst): New macro. Expand DSTs in filename. (_dl_map_object_deps): Use expand_dst to expand DSTs in DT_NEEDED, DT_AUXILIARY, and DT_FILTER filenames. * elf/dl-load.c (expand_dynamic_string_token): Explode into two functions and three macros. (_dl_dst_count, _dl_dst_substitute): New functions. * elf/dl-dst.h: New file. * elf/dl-open.c (_dl_open): Take extra parameter with address of caller. Pass address in args structure. (dl_open_worker): Recognize and expand DSTs in filename. * elf/ldsodefs.h (_dl_open): Adapt prototype. * elf/dlopen.c (dlopen_doit): Pass caller address to _dl_open. (__dlopen_check): Pass caller address to dlopen_doit in args. * elf/dlopendoit.c: Likewise. * iconv/gconv_dl.c: Adapt call of _dl_open. * nss/nsswitch.c: Likewise. * elf/origtest.c: New file. * sysdeps/generic/dl-origin.h: Moved to... * sysdeps/generic/dl-origin.c: ...here. * sysdeps/unix/sysv/linux/dl-origin.h: Moved to... * sysdeps/unix/sysv/linux/dl-origin.c: ...here.
Diffstat (limited to 'elf/dlopenold.c')
-rw-r--r-- | elf/dlopenold.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/elf/dlopenold.c b/elf/dlopenold.c index 7e7b462e1a..661a40579a 100644 --- a/elf/dlopenold.c +++ b/elf/dlopenold.c @@ -32,6 +32,8 @@ struct dlopen_args int mode; /* The return value of dlopen_doit. */ struct link_map *new; + /* Address of the caller. */ + const void *caller; }; @@ -40,7 +42,7 @@ dlopen_doit (void *a) { struct dlopen_args *args = (struct dlopen_args *) a; - args->new = _dl_open (args->file ?: "", args->mode); + args->new = _dl_open (args->file ?: "", args->mode, args->caller); } @@ -49,6 +51,7 @@ __dlopen_nocheck (const char *file, int mode) { struct dlopen_args args; args.file = file; + args.caller = __builtin_return_address (0); if ((mode & RTLD_BINDING_MASK) == 0) /* By default assume RTLD_LAZY. */ |