aboutsummaryrefslogtreecommitdiff
path: root/elf/dl-sym.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-01-15 20:48:56 +0000
committerUlrich Drepper <drepper@redhat.com>2007-01-15 20:48:56 +0000
commit4e35ef2c710dfefe96a491d133b5a53414e9a5c2 (patch)
treed9219ecd731de733953c1224356ecbe068b35e7f /elf/dl-sym.c
parentfb453d084d86f22718b60422a135f7c70e47f0ac (diff)
downloadglibc-4e35ef2c710dfefe96a491d133b5a53414e9a5c2.tar
glibc-4e35ef2c710dfefe96a491d133b5a53414e9a5c2.tar.gz
glibc-4e35ef2c710dfefe96a491d133b5a53414e9a5c2.tar.bz2
glibc-4e35ef2c710dfefe96a491d133b5a53414e9a5c2.zip
* sysdeps/generic/ldsodefs.h: Define DL_LOOKUP_SCOPE_LOCK.
* elf/dl-lookup.c (add_dependency): If scope map is locked, unlock it before getting dl_load_lock and then relock. (_dl_lookup_symbol_x): Pass flags to add_dependency. When rerunning _dl_lookup_symbol_x, compute symbol_scope again in case we unlocked the scope. * elf/dl-runtime.c (_dl_fixup): Pass DL_LOOKUP_SCOPE_LOCK to _dl_lookup_symbol_x in case we locked the scope. (_dl_profile_fixup): Likewise. * elf/dl-sym.c (do_sym): In flags passed to call_dl_lookup, also set DL_LOOKUP_SCOPE_LOCK.
Diffstat (limited to 'elf/dl-sym.c')
-rw-r--r--elf/dl-sym.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/elf/dl-sym.c b/elf/dl-sym.c
index 88a5adb0d5..1c3ab5c877 100644
--- a/elf/dl-sym.c
+++ b/elf/dl-sym.c
@@ -1,5 +1,5 @@
/* Look up a symbol in a shared object loaded by `dlopen'.
- Copyright (C) 1999,2000,2001,2002,2004,2006 Free Software Foundation, Inc.
+ Copyright (C) 1999-2002,2004,2006,2007 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
@@ -126,7 +126,7 @@ do_sym (void *handle, const char *name, void *who,
args.name = name;
args.map = match;
args.vers = vers;
- args.flags = flags | DL_LOOKUP_ADD_DEPENDENCY;
+ args.flags = flags | DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_SCOPE_LOCK;
args.refp = &ref;
const char *objname;