Subject: Re: CVS commit: src/libexec/ld.elf_so
To: None <mycroft@netbsd.org>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: tech-toolchain
Date: 04/24/2003 18:15:16
mycroft@netbsd.org said:
> Modified Files:
> 	src/libexec/ld.elf_so: rtld.c rtld.h symbol.c
> Log Message: Attempt to give dlsym() the same symbol-searching
> semantics as _rtld_bind(). 

To elaborate on this (and take it away from the inappropriate list):
It seems that this is wrong.

To quote from SUSv3's dlopen() page:

    Symbols introduced into a program through calls to dlopen() may be
    used in relocation activities. Symbols so introduced may duplicate
    symbols already defined by the program or previous dlopen()
    operations. To resolve the ambiguities such a situation might present,
    the resolution of a symbol reference to symbol definition is based on a
    symbol resolution order. Two such resolution orders are defined: load
    or dependency ordering. Load order establishes an ordering among
    symbol definitions, such that the definition first loaded (including
    definitions from the image file and any dependent objects loaded with
    it) has priority over objects added later (via dlopen()). Load ordering is
    used in relocation processing. Dependency ordering uses a
    breadth-first order starting with a given object, then all of its
    dependencies, then any dependents of those, iterating until all
    dependencies are satisfied. With the exception of the global symbol
    object obtained via a dlopen() operation on a file of 0, dependency
    ordering is used by the dlsym() function. Load ordering is used in
    dlsym() operations upon the global symbol object.

best regards
Matthias