This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Treat RTLD_LOCAL like Solaris (Re: Duplicate dataobjects in shared libraries)


On Thu, 2002-05-30 at 13:01, Jason Merrill wrote:

> No; Solaris' behavior is no more helpful for real-world C++ examples.

Very specialized and maybe true for gcc.


> Is there any kind of a standard for ld.so symbol resolution behavior?

Most things the generic ELF ABI covers.  But the behavior of dlopen() on
the ELF level is not covered by any standard.


> 1) Always prefer the last weak definition if no strong definition is seen.

Special weak symbol handling is going away.  The ELF spec didn't clearly
state what has to happen and so a few implementation (like glibc) added
this kind of support.  But it's not portable and it's unnecessarily
reducing the speed.


> 2) If a DSO A has two unrelated dependencies B and C which both define (and
>    use) the same weak symbol, add C to the dependency list of this loaded
>    copy of B.

If I understand this correctly you mean

   A ---> B
     |
     +--> C

and B defines and uses 'foo' and C defines and uses 'foo'.

In this case it makes no difference whether C gets added to the
dependency list of B since B's scope comes first.


> 3) When resolving a relocation from a DSO loaded with RTLD_LOCAL, start
>    looking from the DSO itself; do not consider other RTLD_LOCAL objects
>    which depend on it.

Starting with the DSO itself is what you select with DF_SYMBOLIC.  It's
generally a very bad idea.  Which other scopes are searched depends
heavily on the actual situation.  There won't be any "this is how C++
needs it and therefore this is how it's gonna be".


I'll look at all this hopefully in two weeks from now.

-- 
---------------.                          ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Red Hat          `--' drepper at redhat.com   `------------------------

Attachment: signature.asc
Description: This is a digitally signed message part


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]