From 4e35ef2c710dfefe96a491d133b5a53414e9a5c2 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 15 Jan 2007 20:48:56 +0000 Subject: * 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. --- elf/dl-sym.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'elf/dl-sym.c') 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; -- cgit 1.4.1