X-Spam-Check-By: sourceware.org
Message-ID: <458CAA19.44517B89@dessent.net>
Date: Fri, 22 Dec 2006 20:01:29 -0800
From: Brian Dessent <brian@dessent.net>
X-Mailer: Mozilla 4.79 [en] (Windows NT 5.0; U)
MIME-Version: 1.0
To: cygwin@cygwin.com
Subject: Re: Is it possible to directly call a function in a dlopen library
References: <89c3ea2b0612212204g4cf5ee2bg4b90780aaab85c0f@mail.gmail.com> 	 <458C0887.6080201@cygwin.com> 	 <89c3ea2b0612221906l7e99c12m2776e0c2b13f5568@mail.gmail.com> 	 <458CA19A.DD0291F3@dessent.net> <89c3ea2b0612221948w4528d90bk5a934f3a5bd727b0@mail.gmail.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-IsSubscribed: yes
Reply-To: cygwin@cygwin.com
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

andy wang wrote:

> So maybe it is possible on Linux? I asked this question because I find
> this kind of logic in asterisk! the main program will load the .so
> using dlopen. i.e. module1.so and module2.so, and I notice that
> module2.so will call directly (without dlsym, just func1( ... ) which
> is defined in module1.so). I am very confused :-(. Is it because it
> used RTLD_GLOBAL?

Yes, ELF is a completely different world than PE/COFF.  ELF has many
capabilities that don't exist in PE/COFF, like lazy binding.  This is
essentially what the autoload.cc technique is reimplementing, a sort of
ersatz PLT.  Except on ELF this is provided by the operating system (or
more precisely the libc's dynamic linker ld.so) so there is no need for
the application to worry about it.  And programs that rely on this are
non-portable, as Win32 is not the only platform with this restriction,
although it's certainly the most common.

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

