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