libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rename troublesome ltdl apis [libtool--devo--1.0--patch-275]


From: Gary V. Vaughan
Subject: Re: rename troublesome ltdl apis [libtool--devo--1.0--patch-275]
Date: Sun, 18 Sep 2005 20:09:44 +0100
User-agent: Mozilla Thunderbird 1.0.6 (Macintosh/20050716)

Ralf Wildenhues wrote:
> Hi Gary,

Hallo Ralf,

Thanks for reviewing.

> * Gary V. Vaughan wrote on Sun, Sep 18, 2005 at 11:52:06AM CEST:
> 
>>Ralf Wildenhues wrote:
>>
>>>* Gary V. Vaughan wrote on Sat, Sep 17, 2005 at 10:05:48PM CEST:
>>>
>>>I don't understand why now you start to rename _all_ of that stuff, and
>>>not only the troubling lt_dlcaller_register.
>>
>>For exactly the same reasons as with lt_dlcaller_register.  It all
>>follows on quite logically -
>>
>>  i) lt_dlcaller_id was declared as an unsigned int in old ltdl.h,
>>     but lt_dlinterface_register no longer returns an unsigned int,
>>     but an opaque void*.
> 
> OMG.  I overlooked that.  What a mess.  :(

Indeed :-(  Extreme programming methodologies only work in a vacuum.

>> ii) Now, lt_dlcaller_{g,s}et_data each take an argument of a different
>>     type than before (void * vs unsigned) and rather than relying on
>>     just the compiler's type checking by your argument for renaming
>>     lt_dlcaller_register, these functions too need renaming.
> 
> Oh brother.
> 
> Let's approach this from a different side: how many packages actually
> make use of these functions?  I would be a lot less uncomfortable with
> these changes if I knew that nobody besides m4 actually used any of
> this.

For this particular patch, only m4 that I am aware of, but it's been
around long enough that we should take care over it in case it has been
quietly but widely adopted.

>>>This places an undue
>>>burden on innocent users that never deal with more than one module
>>>loader.  Those would otherwise be fine with just adapting their call of
>>>lt_dlcaller_register.
>>
>>There are no such users with libtool-2.0, as libltdl itself has modules
>>in the handles list which (like all modules) should be protected from
>>other clients (hence my patch-277).  In order to do that, lt_dlcaller_id
>>needs to be richer than an unsigned, and the rest follows as explained
>>above.  Assuming popular libraries take advantage of 2.0 libltdl module
>>loading, inevitably some ltdl module loading libraries can have no clue
>>as to whether their client application, or other libraries that client
>>uses will be adding modules to the internal ltdl handle list, and we
>>need to make it as robust as possible for each client to not worry about
>>modules loaded by the others... lt_dlinterface_id was the mechanism I
>>invented for this purpose, but failed to follow through to the rest of
>>the libltdl API until now.
> 
> 
> Hmm.  But the whole module-loading-libraries is still not fully
> functional without help from the program because of the
> LTDL_SET_PRELOADED_SYMBOLS issue?

Argh.  I'd forgotten about that :-(

> Is that correct?

Yes, certainly it is correct for preloaded modules.  However, I don't
think we need to worry about fixing this for 2.0 -- although it might
be good to document that if libraries use the new library dlloading
with preopened libraries, they will be relying on the application to
invoke LTDL_SET_PRELOADED_SYMBOLS :-(

> Is that the only remaining structural problem?

I can't think of anything else right now.

>  (I have another usage report about this
> with open questions coming up, on the libtool list.)

Okay.

>>>There is no need to keep users from shooting themselves in the foot, if
>>>they ignore documentation.
>>>
>>>Am I missing something again?
>>
>>Only the same arguments we both put forth for changing the name of
>>lt_dlcaller_register -- forced to change function footprint to avoid
>>problems with other clients' modules, which in turn suggests a good
>>reason to rename said functions to force a hard compilation failure if
>>the user doesn't upgrade the caller's semantics to match the new APIs.
> 
> 
> Yes, I think this part I can follow now.
> 
> Do any packages use these features extensively?  IOW, can m4 serve at
> least as a good testbed for your last three patches?

Sure.  You want me to post the matching patches for m4 too?

> Because I will
> not give my ACK unless it does not regress on at least mingw, cygwin,
> a standard unix and a static-only platform (AIX would be good, too),
> where regressing is measured in "these code paths are actually used at
> some place".

Good call.  I only have access to Gentoo-2005.0, Mac OS 10.4.2. :-(
I can preroll test tarballs of libtool and m4 with the patches applied
if that helps...

> And I also still want to read the patches closely..

Okay, I'll wait for your comments before I make m4 patches.

Cheers,
        Gary.
-- 
Gary V. Vaughan      ())_.  address@hidden,gnu.org}
Research Scientist   ( '/   http://tkd.kicks-ass.net
GNU Hacker           / )=   http://www.gnu.org/software/libtool
Technical Author   `(_~)_   http://sources.redhat.com/autobook

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]