delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/11/02/14:18:19

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS
X-Spam-Check-By: sourceware.org
Message-ID: <4AEF305E.1010105@cygwin.com>
Date: Mon, 02 Nov 2009 14:17:50 -0500
From: "Larry Hall (Cygwin)" <reply-to-list-only-lh AT cygwin DOT com>
Reply-To: cygwin AT cygwin DOT com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.21) Gecko/20090320 Remi/2.0.0.21-1.fc8.remi Lightning/0.9 Thunderbird/2.0.0.21 Mnenhy/0.7.5.0
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Shall dlopen("foo") succeeed if only "foo.dll" exists?
References: <20091102164807 DOT GA2897 AT calimero DOT vinschen DOT de>
In-Reply-To: <20091102164807.GA2897@calimero.vinschen.de>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On 11/02/2009 11:48 AM, Corinna Vinschen wrote:
> Weird question, right?
>
> Here's the problem.
>
> Assume you have a file "foo.so" on Linux.  If you call
>
>    dlopen ("./foo.so", RTLD_LAZY);
>
> it succeeds, but
>
>    dlopen ("./foo", RTLD_LAZY);
>
> fails because the dlopen function never adds any suffixes like .so
> automatically.
>
> Now assume you have a "foo.dll" file on Cygwin.
>
>    dlopen ("./foo.dll", RTLD_LAZY);
>
> succeeds, but so does
>
>    dlopen ("./foo", RTLD_LAZY);
>
> The reason is that Cygwin checks for the .dll suffix as well as the
> Windows LoadLibrary function does.
>
> For 1.7 our choice is to keep dlopen() checking for the .dll suffix to
> be more Windows-like, or to be more Linux-like by dropping the check for
> the .dll suffix so that dlopen() fails if the filename isn't specified
> fully.

OK, I'll admit I'm responding with a question without actually looking at the
code and so one can feel free to ignore me.  However the thought that came
to my mind is, should it really matter if dlopen() checks?  What does the check
give us that just passing the name along to LoadLibrary() doesn't?  At first
impression, doing the check just prematurely rejects names without the DLL 
suffix
that would otherwise be accepted by Windows.  Since there's a source level 
change
that (typically) needs to happen to make the code work on Windows as opposed
to Linux/Unix, what benefit are we getting from this added check?

-- 
Larry Hall                              http://www.rfk.com
RFK Partners, Inc.                      (508) 893-9779 - RFK Office
216 Dalton Rd.                          (508) 893-9889 - FAX
Holliston, MA 01746

_____________________________________________________________________

A: Yes.
 > Q: Are you sure?
 >> A: Because it reverses the logical flow of conversation.
 >>> Q: Why is top posting annoying in email?

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019