| From nobody Wed Oct 14 16:45:01 1998 |
| X-From-Line: ian@cygnus.com Fri Apr 17 23:33:18 1998 |
| Return-Path: <ian@cygnus.com> |
| Delivered-To: gord@trick.profitpress.com |
| Received: (qmail 23427 invoked from network); 17 Apr 1998 23:33:17 -0000 |
| Received: from unknown (HELO bambam.m-tech.ab.ca) (127.0.0.1) |
| by 127.0.0.1 with SMTP; 17 Apr 1998 23:33:17 -0000 |
| Received: from tweedledumb.cygnus.com (gateway.m-tech.ab.ca [10.0.0.1]) by bambam.m-tech.ab.ca (8.8.5/8.6.9) with ESMTP id OAA06912 for <gord@profitpress.com>; Fri, 17 Apr 1998 14:17:39 -0600 |
| Received: from subrogation.cygnus.com (subrogation.cygnus.com [192.80.44.76]) |
| by tweedledumb.cygnus.com (8.8.5/8.8.5) with ESMTP id QAA18613; |
| Fri, 17 Apr 1998 16:18:12 -0400 (EDT) |
| Received: (ian@localhost) by subrogation.cygnus.com (950413.SGI.8.6.12/8.6.4) id QAA08387; Fri, 17 Apr 1998 16:18:11 -0400 |
| Date: Fri, 17 Apr 1998 16:18:11 -0400 |
| Message-Id: <199804172018.QAA08387@subrogation.cygnus.com> |
| From: Ian Lance Taylor <ian@cygnus.com> |
| To: gord@profitpress.com |
| CC: bug-libtool@gnu.org |
| In-reply-to: <86k98oh6fy.fsf@trick.profitpress.com> (message from Gordon |
| Matzigkeit on 17 Apr 1998 08:24:33 -0600) |
| Subject: Re: libtool on cygwin32 |
| Xref: trick.profitpress.com mail.libtool:1335 |
| Lines: 30 |
| X-Gnus-Article-Number: 2 Mon Nov 2 17:17:55 1998 |
| |
| From: Gordon Matzigkeit <gord@profitpress.com> |
| Date: 17 Apr 1998 08:24:33 -0600 |
| |
| >>>>> Ian Lance Taylor writes: |
| |
| [...] |
| |
| ILT> So, my choices are to use -no-undefined -lbfd everywhere, or to |
| ILT> use it only on Windows. |
| |
| Would `-avoid-deps' (a proposed flag) give you what you want? |
| |
| default = record inter-library dependencies on all platforms, if |
| possible. |
| |
| -no-undefined = the dependency info provided is complete. Build |
| shared libraries on AIX and windows. |
| |
| -avoid-deps = implies `-no-undefined'. However, avoid recording |
| inter-library dependencies unless they are required for building a |
| shared library. |
| |
| Yes, that sounds like it will do what I need. |
| |
| Somebody someday may want to record some library dependencies but not |
| others, in which case you would want |
| -avoid-deps -lfoo -no-avoid-deps -lbar |
| |
| Ian |
| |
| From nobody Wed Oct 14 16:45:40 1998 |
| X-From-Line: ian@cygnus.com Mon Apr 27 16:24:19 1998 |
| Return-Path: <ian@cygnus.com> |
| Delivered-To: gord@trick.profitpress.com |
| Received: (qmail 136 invoked from network); 27 Apr 1998 16:24:18 -0000 |
| Received: from unknown (HELO bambam.m-tech.ab.ca) (127.0.0.1) |
| by localhost with SMTP; 27 Apr 1998 16:24:18 -0000 |
| Received: from tweedledumb.cygnus.com (gateway.m-tech.ab.ca [10.0.0.1]) by bambam.m-tech.ab.ca (8.8.5/8.6.9) with ESMTP id JAA21924 for <gord@m-tech.ab.ca>; Mon, 27 Apr 1998 09:42:43 -0600 |
| Received: from subrogation.cygnus.com (subrogation.cygnus.com [192.80.44.76]) |
| by tweedledumb.cygnus.com (8.8.5/8.8.5) with ESMTP id LAA02934; |
| Mon, 27 Apr 1998 11:48:04 -0400 (EDT) |
| Received: (ian@localhost) by subrogation.cygnus.com (950413.SGI.8.6.12/8.6.4) id LAA01776; Mon, 27 Apr 1998 11:48:03 -0400 |
| Date: Mon, 27 Apr 1998 11:48:03 -0400 |
| Message-Id: <199804271548.LAA01776@subrogation.cygnus.com> |
| From: Ian Lance Taylor <ian@cygnus.com> |
| To: gord@m-tech.ab.ca |
| CC: robbe@orcus.priv.at, bug-libtool@gnu.org |
| In-reply-to: <86bttpvbqd.fsf@trick.profitpress.com> (message from Gordon |
| Matzigkeit on 25 Apr 1998 15:21:30 -0600) |
| Subject: Re: libtool 1.2: Why no inter-lib dependencies on ELF? |
| Xref: trick.profitpress.com mail.libtool:1388 |
| Lines: 27 |
| X-Gnus-Article-Number: 3 Mon Nov 2 17:17:55 1998 |
| |
| From: Gordon Matzigkeit <gord@m-tech.ab.ca> |
| Date: 25 Apr 1998 15:21:30 -0600 |
| |
| There are still some unresolved issues (see |
| http://www.profitpress.com/libtool/deplibs.html). Full inter-library |
| dependency support is scheduled for libtool 1.3, though, and should |
| appear in the next beta-testing release. |
| |
| I read that page, and here are a few quick notes. |
| |
| 1) On any platform which does not require -fpic you can link |
| static libraries into shared libraries. These platforms include |
| AIX, Irix 5/6, and Windows. |
| |
| 2) On any functioning ELF platform you can include code which was not |
| compiled with -fpic in a shared library, and you can link with a |
| static library when creating a shared library. You say that Solaris |
| won't let you link a shared library against a static one, but it |
| appears to work for me. What type of test are you using? |
| |
| 3) On SunOS you can not correctly link a static library into a shared |
| library. It will mostly work, but I believe that certain operations, |
| such as overriding a shared library function in the main executable, |
| will fail. |
| |
| Ian |
| |
| From nobody Wed Oct 14 16:48:43 1998 |
| X-From-Line: gord@gnu.org Thu Sep 10 04:39:20 1998 |
| Return-Path: <gord@gnu.org> |
| Delivered-To: gord@trick.fig.org |
| Received: (qmail 30644 invoked from network); 10 Sep 1998 04:39:18 -0000 |
| Received: from gen2-93ip34.cadvision.com (HELO bambam.m-tech.ab.ca) (209.91.93.34) |
| by cs366707-a.cgmo1.ab.wave.home.com with SMTP; 10 Sep 1998 04:39:18 -0000 |
| Received: from mescaline.gnu.org (gateway [10.0.0.1]) by bambam.m-tech.ab.ca (8.8.5/8.6.9) with ESMTP id WAA26741 for <gord@m-tech.ab.ca>; Wed, 9 Sep 1998 22:38:15 -0600 |
| Received: from mailhost.cyberramp.net (root@mailhost.cyberramp.net [207.158.64.11]) by mescaline.gnu.org (8.8.5/8.6.12GNU) with ESMTP id AAA11165 for <bug-libtool@gnu.org>; Thu, 10 Sep 1998 00:38:17 -0400 |
| Received: from fuzzylog.simple.dallas.tx.us (dal-tsa11-49.cyberramp.net [207.158.111.49]) |
| by mailhost.cyberramp.net (8.9.1a/8.9.1/ler-980825-0832-PM) with ESMTP id XAA13581; |
| Wed, 9 Sep 1998 23:37:41 -0500 (CDT) |
| Received: from scooby (scooby [192.168.1.3]) |
| by fuzzylog.simple.dallas.tx.us (8.8.8/8.8.8) with SMTP id XAA27692; |
| Wed, 9 Sep 1998 23:37:38 -0500 (CDT) |
| Date: Wed, 9 Sep 1998 23:37:38 -0500 (CDT) |
| From: Bob Friesenhahn <bfriesen@simple.dallas.tx.us> |
| To: Libtool Bugs <bug-libtool@gnu.org> |
| Subject: Late-binding looses space efficiency ... |
| Message-ID: <Pine.SO4.4.02.9809092322490.808-100000@scooby.simple.dallas.tx.us> |
| MIME-Version: 1.0 |
| Content-Type: TEXT/PLAIN; charset=US-ASCII |
| Xref: trick.fig.org libtool:1605 |
| Lines: 27 |
| X-Gnus-Article-Number: 4 Mon Nov 2 17:17:55 1998 |
| |
| On most systems, libtool does not supply the dependency libraries (-llib) when |
| it creates the shared library in spite of these being supplied on the libtool |
| command line. The ImageMagick package uses quite a few dependency libraries. |
| The ImageMagick library uses these libraries directly but utilities built |
| using the ImageMagick library only link against these libraries because the |
| ImageMagick library demands it. |
| |
| Through testing we have found that if the 'ltconfig' archive_cmds definition |
| is ammended to include $deplibs that linked programs become much smaller (1/3 |
| to 1/4 the original size). This appears to be because more code is included |
| in the shared library itself, avoiding the need for this to be part of the |
| program. |
| |
| The distributed 'ltconfig' only supplies $deplibs for systems matching osf3* | |
| osf4*. Is there a reason why $deplibs is not supplied for all systems that can |
| support inter-library dependencies? Reducing overall package size is highly |
| desireable in order to reduce disk-space consumption and binary distribution |
| size. |
| |
| Thanks, |
| |
| Bob |
| ====================================== |
| Bob Friesenhahn |
| bfriesen@simple.dallas.tx.us |
| http://www.cyberramp.net/~bfriesen |
| |
| From nobody Wed Oct 14 16:52:40 1998 |
| X-From-Line: ddj@hks.net Thu Sep 17 21:29:13 1998 |
| Return-Path: <ddj@hks.net> |
| Delivered-To: gord@trick.fig.org |
| Received: (qmail 22994 invoked by uid 1003); 17 Sep 1998 21:29:12 -0000 |
| Delivered-To: jana-profitpress-gord@profitpress.com |
| Received: (qmail 22991 invoked from network); 17 Sep 1998 21:29:11 -0000 |
| Received: from dali.hks.net (ddj@208.203.175.210) |
| by cs366707-a.cgmo1.ab.wave.home.com with SMTP; 17 Sep 1998 21:29:11 -0000 |
| Received: (from ddj@localhost) |
| by dali.hks.net (8.8.5/8.8.5) id RAA04020; |
| Thu, 17 Sep 1998 17:26:28 -0400 |
| Received: from BatMail.robin.v2.15.CUILIB.3.45.SNAP.NOT.LINKED.dali..none..ix86.Linux |
| via MS.5.6.dali.(none).ix86_Linux; |
| Thu, 17 Sep 1998 17:26:27 -0400 (EDT) |
| Message-ID: <oq0Lu3Jz000185PkIG@hks.net> |
| Date: Thu, 17 Sep 1998 17:26:27 -0400 (EDT) |
| From: Doug DeJulio <ddj@hks.net> |
| To: gord@profitpress.com |
| Subject: Re: Libtool Inter-library Dependencies |
| Xref: trick.fig.org libtool:1611 |
| Lines: 32 |
| X-Gnus-Article-Number: 5 Mon Nov 2 17:17:55 1998 |
| |
| I read your discussion of why libtool can't handle inter-library |
| dependencies and how people might be able to help fix this. I found |
| an error in item #1 of "The Solution". I quote: |
| |
| > Finally, there are some systems which won't even allow you to link a |
| > shared library against a static one: |
| > Solaris 2.x |
| |
| This is only true in most cases. If all of the accessed individual |
| object files in the static library *could* have been put in a shared |
| library, things will work just fine. It's not the type of library |
| that matters, but the type of object files. |
| |
| Our commercial product includes a library and a few |
| dynamically-loadable modules that make that library accessible to |
| various interpretetd languages (TCL, Perl, PHP3 and Python at the |
| moment, with more coming). We don't distribute a shared library |
| anymore because when we did this caused a ton of trouble (most people |
| just couldn't get it configured correctly). I haven't yet found a |
| platform on which linking dynamically-loadable object file against a |
| static "ar" archive containing relocatable object files causes any |
| trouble (and we support SCO, Digital Unix, SCO, Solaris, Linux, and |
| FreeBSD, so this isn't because of narrow experience). |
| |
| So, the main point is that just deciding whether it'll work based on |
| looking at the library file will in some cases fail when it should |
| have succeeded (and the software we sell is such a case). |
| |
| -- |
| Doug DeJulio | mailto:ddj@hks.net |
| HKS, Incorporated | http://www.hks.net/ |
| |
| From gord@trick.fig.org Wed Nov 4 16:50 EDT 1998 |
| Received: from grande.dcc.unicamp.br (grande.dcc.unicamp.br [143.106.7.8]) |
| by amazonas.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id QAA12687 |
| for <oliva@amazonas.dcc.unicamp.br>; Wed, 4 Nov 1998 16:50:18 -0200 (EDT) |
| Received: from cabler.cableregina.com (ip2.net20483142.cr.sk.ca [204.83.142.2]) |
| by grande.dcc.unicamp.br (8.8.5/8.8.5) with SMTP id QAA03463 |
| for <oliva@dcc.unicamp.br>; Wed, 4 Nov 1998 16:50:12 -0200 (EDT) |
| Received: from [24.72.10.223] by cabler.cableregina.com |
| (SMTPD32-4.0) id A25C7D0074; Wed, 04 Nov 1998 12:52:12 -0600 |
| Received: (qmail 1392 invoked by uid 1001); 4 Nov 1998 18:51:16 -0000 |
| To: "Gary V. Vaughan" <gvaughan@oranda.demon.co.uk> |
| Cc: Ian Lance Taylor <ian@cygnus.com>, tanner@gmx.de, oliva@dcc.unicamp.br, |
| bug-libtool@gnu.org |
| Subject: Re: Inter-library dependencies in libtool |
| References: <199811040125.UAA01678@subrogation.cygnus.com> <3640381C.725FC8F2@oranda.demon.co.uk> |
| X-Attribution: Gord |
| Mime-Version: 1.0 (generated by tm-edit 7.106) |
| From: Gordon Matzigkeit <gord@trick.fig.org> |
| Date: 04 Nov 1998 12:51:11 -0600 |
| In-Reply-To: "Gary V. Vaughan"'s message of Wed, 04 Nov 1998 11:18:52 +0000 |
| Message-ID: <86af27qokg.fsf@trick.fig.org> |
| X-Mailer: Gnus v5.5/Emacs 20.2 |
| Content-Type: text/plain; charset=US-ASCII |
| X-Content-Length: 2911 |
| Xref: araguaia.dcc.unicamp.br libtool-deplibs:6 |
| Lines: 80 |
| X-Gnus-Article-Number: 6 Thu Nov 5 08:41:15 1998 |
| |
| Hi! |
| |
| >>>>> Gary V Vaughan writes: |
| |
| GVV> Ian Lance Taylor wrote: |
| |
| >> This kind of goes to the heart of libtool. libtool wants to |
| >> present a particular interface for using shared libraries. |
| |
| GVV> Is that an "official" design goal? |
| |
| Yes. From the manual: |
| |
| 1. The system must be as elegant as possible. |
| |
| The main power of libtool is that it blurs the distinction between |
| static archives (`.a' files) and shared libraries, by providing an |
| interface that unifies the two into a new beast, the `.la' file. This |
| is the reason why libtool caught on: you can write Makefile rules that |
| work for both shared and static libraries. |
| |
| >> In order to do this, it assumes that the system supports certain |
| >> capabilities. One of those is that the system can support |
| >> undefined symbols in shared libraries. |
| |
| To add to this point: or the system can link shared libraries against |
| one another (deplibs). |
| |
| GVV> My understanding was that libtool wants to provide a single |
| GVV> interface for the building of shared libraries, particularly so |
| GVV> that a developer can use libtool in a Makefile (*without* all of |
| GVV> the system dependant rules that used to me necessary) and get |
| GVV> shared libraries on all of libtool's supported platforms using |
| GVV> the same build rules. |
| |
| Both your understandings are correct. |
| |
| >> That means that on systems which do not permit shared libraries to |
| >> have undefined symbols--AIX and Windows--libtool doesn't really |
| >> work. |
| |
| I would state this somewhat differently: on those platforms, libtool |
| works (it can still build static libraries), but it doesn't shine. |
| |
| >> [[snip]] In other words, the interface which libtool presents is |
| >> deficient. It does not successfully hide the system on which it |
| >> is running, and it forces the code which calls libtool to make |
| >> adjustments. |
| |
| Exactly. |
| |
| I believe the correct way to solve this problem is to.... (drum roll) |
| use inter-library dependencies! |
| |
| If `deplibs' is set, then the library has undefined symbols. If it |
| isn't set, then we could assume it has no undefined symbols. |
| |
| So, using `-lanything' on the .la creation line would be a synonym for |
| `-allow-undefined', and having no `-l' flags would be a synonym for |
| `-no-undefined'. |
| |
| >> Of course even that will not make Windows DLLs identical to ELF |
| >> shared libraries. ELF shared libraries permit the main program to |
| >> override a symbol in the shared library, and Windows DLLs do not. |
| |
| I'd just as soon cross that bridge when we come to it, unless you have |
| any real-world examples that demand more control over whether or not |
| DLLs are built. |
| |
| In any event, this is more incentive for Thomas Tanner's patches to |
| restrict the symbol table, so that people don't get bitten by |
| namespace clashes. |
| |
| Thanks for your comments, |
| |
| -- |
| Gordon Matzigkeit <gord@fig.org> //\ I'm a FIG (http://www.fig.org/) |
| Lovers of freedom, unite! \// I use GNU (http://www.gnu.org/) |
| |
| From ian@cygnus.com Wed Nov 4 17:16 EDT 1998 |
| Received: from grande.dcc.unicamp.br (grande.dcc.unicamp.br [143.106.7.8]) |
| by amazonas.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id RAA17371 |
| for <oliva@amazonas.dcc.unicamp.br>; Wed, 4 Nov 1998 17:15:59 -0200 (EDT) |
| Received: from tweedledumb.cygnus.com (tweedledumb.cygnus.com [192.80.44.1]) |
| by grande.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id RAA04425 |
| for <oliva@dcc.unicamp.br>; Wed, 4 Nov 1998 17:15:45 -0200 (EDT) |
| Received: from subrogation.cygnus.com (subrogation.cygnus.com [192.80.44.76]) |
| by tweedledumb.cygnus.com (8.8.5/8.8.5) with ESMTP id OAA16598; |
| Wed, 4 Nov 1998 14:17:48 -0500 (EST) |
| Received: (ian@localhost) by subrogation.cygnus.com (950413.SGI.8.6.12/8.6.4) id OAA02450; Wed, 4 Nov 1998 14:17:48 -0500 |
| Date: Wed, 4 Nov 1998 14:17:48 -0500 |
| Message-Id: <199811041917.OAA02450@subrogation.cygnus.com> |
| From: Ian Lance Taylor <ian@cygnus.com> |
| To: gord@trick.fig.org |
| CC: gvaughan@oranda.demon.co.uk, tanner@gmx.de, oliva@dcc.unicamp.br, |
| bug-libtool@gnu.org |
| In-reply-to: <86af27qokg.fsf@trick.fig.org> (message from Gordon Matzigkeit on |
| 04 Nov 1998 12:51:11 -0600) |
| Subject: Re: Inter-library dependencies in libtool |
| X-Content-Length: 1774 |
| Xref: araguaia.dcc.unicamp.br libtool-deplibs:7 |
| Lines: 43 |
| X-Gnus-Article-Number: 7 Thu Nov 5 08:41:16 1998 |
| |
| From: Gordon Matzigkeit <gord@trick.fig.org> |
| Date: 04 Nov 1998 12:51:11 -0600 |
| |
| I believe the correct way to solve this problem is to.... (drum roll) |
| use inter-library dependencies! |
| |
| If `deplibs' is set, then the library has undefined symbols. If it |
| isn't set, then we could assume it has no undefined symbols. |
| |
| So, using `-lanything' on the .la creation line would be a synonym for |
| `-allow-undefined', and having no `-l' flags would be a synonym for |
| `-no-undefined'. |
| |
| This sounds reasonable. Of course, -allow-undefined should remain a |
| possible option even if there are no -l options. I guess |
| -no-undefined could be an error check, but it wouldn't have much |
| functional use. |
| |
| >> Of course even that will not make Windows DLLs identical to ELF |
| >> shared libraries. ELF shared libraries permit the main program to |
| >> override a symbol in the shared library, and Windows DLLs do not. |
| |
| I'd just as soon cross that bridge when we come to it, unless you have |
| any real-world examples that demand more control over whether or not |
| DLLs are built. |
| |
| In any event, this is more incentive for Thomas Tanner's patches to |
| restrict the symbol table, so that people don't get bitten by |
| namespace clashes. |
| |
| What I'm talking about is not namespace clashes, but rather the |
| ability to override a particular function from a shared library. For |
| example, I can write my own version of malloc and free, and libc.so on |
| an ELF system will use them rather than the malloc and free linked |
| into the library. |
| |
| I don't think there is anything libtool can do about this. It's |
| something that is very useful when dealing with preexisting shared |
| libraries, but is not particularly useful when dealing with shared |
| libraries you build yourself. |
| |
| Ian |
| |
| From gord@mescaline.gnu.org Thu Nov 5 15:32 EDT 1998 |
| Received: from grande.dcc.unicamp.br (grande.dcc.unicamp.br [143.106.7.8]) |
| by amazonas.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id PAA10607 |
| for <oliva@amazonas.dcc.unicamp.br>; Thu, 5 Nov 1998 15:32:00 -0200 (EDT) |
| Received: from mescaline.gnu.org (mescaline.gnu.org [158.121.106.21]) |
| by grande.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id PAA22399 |
| for <oliva@dcc.unicamp.br>; Thu, 5 Nov 1998 15:31:57 -0200 (EDT) |
| Received: from hades.aethos.co.uk (hades.aethos.co.uk [195.171.18.1] (may be forged)) |
| by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id MAA01615 |
| for <bug-libtool@gnu.org>; Thu, 5 Nov 1998 12:37:11 -0500 |
| Received: from zeus.aethos.co.uk (zeus.aethos.co.uk [193.164.192.100]) |
| by hades.aethos.co.uk (8.8.5/8.8.5) with ESMTP id RAA28242; |
| Thu, 5 Nov 1998 17:37:46 GMT |
| Received: from oranda.demon.co.uk (samhain.aethos.co.uk [193.164.192.38]) by zeus.aethos.co.uk with ESMTP (8.7.1/8.7.1) id RAA03467; Thu, 5 Nov 1998 17:33:25 GMT |
| Message-ID: <3641E0DF.A8F92E78@oranda.demon.co.uk> |
| Date: Thu, 05 Nov 1998 17:31:11 +0000 |
| From: "Gary V. Vaughan" <gvaughan@oranda.demon.co.uk> |
| Organization: Aethos Communication Systems ltd. |
| X-Mailer: Mozilla 4.5 [en] (WinNT; I) |
| X-Accept-Language: en |
| MIME-Version: 1.0 |
| To: Alexandre Oliva <oliva@dcc.unicamp.br> |
| CC: Ian Lance Taylor <ian@cygnus.com>, tanner@gmx.de, gord@trick.fig.org, |
| bug-libtool@gnu.org |
| Subject: Re: Inter-library dependencies in libtool |
| References: <199811041854.NAA02418@subrogation.cygnus.com> <364183EF.9F15E7D6@oranda.demon.co.uk> <orhfweny1t.fsf@araguaia.dcc.unicamp.br> |
| Content-Transfer-Encoding: 7bit |
| Content-Type: text/plain; charset=us-ascii |
| X-Content-Length: 3787 |
| Xref: araguaia.dcc.unicamp.br libtool-deplibs:8 |
| Lines: 87 |
| X-Gnus-Article-Number: 8 Sat Nov 7 05:46:44 1998 |
| |
| If I may be permitted to quote you gratuitously... I think there are two |
| problems here, and solving the first will keep most people happy most of |
| the time. |
| |
| In order of progressive difficulty... |
| |
| 1. COMPILE TIME LTLIBRARIES |
| *************************** |
| |
| Alexandre Oliva wrote: |
| > |
| > [[1.1]] the programmer knows that his library is completely |
| > self-contained, it does not depend on any external symbols |
| > (-no-undefined) |
| |
| 1.2) The link mode command line to libtool contains no -l options, |
| which implies your fallback method (try to link a shared library |
| as if `-no-undefined' had been specified, or if that fails build |
| only a static library). |
| |
| 1.3) The programmer knows that resolving all of the symbols in his |
| library requires linking deplibs, and is able to specify all of |
| them on the link line (some if these may be installed .la files |
| which have deplibs of their own which libtool must also link |
| with). |
| |
| > [[1.4]] the programmer knows that there may be symbols in his library |
| > that are going to be supplied by another library, which [[is]] |
| > unknown in advance. If such dependencies exist, they have to |
| > be resolved at program-linking time (-allow-undefined == default) |
| |
| In the future maybe libtool will be able to do a two stage link |
| for platforms which can't do `-allow-undefined', the first link |
| to find which symbols are unresolved, the second against a |
| temporarily generated set of stubs... I'm not sure whether the |
| stage 2 lib can then resolve its stubbed functions against a |
| different library when it is subsequently linked into an |
| executable? Perhaps I am reiterating Ian's idea about stubbing |
| on broken platforms? |
| |
| In the present, broken platforms will have to manage with static |
| libraries in this case. |
| |
| 2. RUNTIME LTLIBRARIES |
| ********************** |
| |
| > [[2.1]] the programmer needs a library foo that is completely |
| > self-contained, so that he can be sure that dlopen(foo) works, |
| > and just adding -lfoo *after* the library is installed will be |
| > fine (-self-contained ?) |
| |
| 2.2) The programmer needs a library that can be dlopened, but which |
| can have all of its symbols resolved at link time with deplibs. |
| A small amount of magic in the form a .c and .h distributed with |
| libtool (as suggested by Gord) is enough to make sure deplibs |
| are dlopened if necessary and then the library itself is loaded. |
| At best, this will only be supported on platforms for which |
| libtool can generate shared libraries, perhaps only a (large) |
| subset of those. |
| |
| 2.3) The programmer needs a library that can be dlopened, and |
| doesn't know at link time how all of the symbols will be resolved. |
| A (small) subset of the platforms for which libtool can generate |
| shared libraries, will be handled by the aforementioned magic. |
| For the unhandled cases dld will be required. |
| |
| > [[2.4]] although a library is not going to be self-contained, |
| > [[snip]] the platform does not support libraries with undefined |
| > symbols, a shared library is badly needed, [[This will]] require |
| > dld. |
| |
| NOTE: in the above, I am assuming that |
| all-supported-platforms >= (large) >= (small) > no-platforms |
| |
| I don't see any need to add anymore command line switches, except |
| perhaps to tell libtool whether this is a compile time or runtime |
| library, but even that may prove unnecessary. |
| |
| The line between 1.3 and 1.4 could probably use some clarification; what |
| if the link line includes several deplibs, but some symbols are |
| still unresolved? 1.4? Maybe... what if the platform doesn't support |
| `-no-undefined'? Perhaps there is a 1.3.5? In any case, for maximum |
| portability, we want to keep the number of cases of 1.4 to a minimum. |
| |
| Cheers, |
| Gary. |
| |
| From wmperry@aventail.com Sun Nov 1 01:03 EDT 1998 |
| Received: from grande.dcc.unicamp.br (grande.dcc.unicamp.br [143.106.7.8]) |
| by amazonas.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id BAA29973 |
| for <oliva@amazonas.dcc.unicamp.br>; Sun, 1 Nov 1998 01:03:04 -0200 (EDT) |
| Received: from slow.bp.aventail.com (vina05.cntwk.net [207.205.120.131]) |
| by grande.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id BAA10397 |
| for <oliva@dcc.unicamp.br>; Sun, 1 Nov 1998 01:02:59 -0200 (EDT) |
| Received: from kramer-fast.bp.aventail.com (kramer-fast.bp.aventail.com [192.168.200.2]) |
| by slow.bp.aventail.com (8.8.5/8.8.5) with ESMTP id SAA31093; |
| Sat, 31 Oct 1998 18:03:52 -0800 |
| Received: (from wmperry@localhost) |
| by kramer-fast.bp.aventail.com (8.8.5/8.8.5) id WAA21542; |
| Sat, 31 Oct 1998 22:04:49 -0500 |
| Sender: wmperry@aventail.com |
| To: Gordon Matzigkeit <gord@trick.fig.org> |
| Cc: Alexandre Oliva <oliva@dcc.unicamp.br> |
| Subject: Re: libtool 1.2 problems... |
| References: <199810251708.MAA02237@kramer-fast.bp.aventail.com> <oryapxaste.fsf@araguaia.dcc.unicamp.br> <86zpac2z99.fsf@trick.fig.org> |
| Errors-to: wmperry@aventail.com |
| Reply-to: wmperry@aventail.com |
| X-Face: O~Rn;(l][/-o1sALg4A@xpE:9-"'IR[%;,,!m7</SYF`{vYQ(&RI1&EiH[FvT;J}@f!4kfz |
| x_!Y#=y{Uuj9GvUi=cPuajQ(Z42R[wE@{G,sn$qGr5g/wnb*"*ktI+,CD}1Z'wxrM2ag-r0p5I6\nA |
| [WJopW_J.WY; |
| Mime-Version: 1.0 (generated by tm-edit 7.108) |
| From: wmperry@aventail.com (William M. Perry) |
| Date: 31 Oct 1998 22:04:49 -0500 |
| In-Reply-To: Gordon Matzigkeit's message of "31 Oct 1998 15:32:50 -0600" |
| Message-ID: <867lxgazam.fsf@kramer-fast.bp.aventail.com> |
| X-Mailer: Gnus v5.6.8/XEmacs 21.0 - "Pyrenean-pre6" |
| Content-Type: text/plain; charset=US-ASCII |
| X-Content-Length: 2306 |
| Xref: araguaia.dcc.unicamp.br libtool-deplibs:9 |
| Lines: 66 |
| X-Gnus-Article-Number: 9 Fri Nov 20 23:23:12 1998 |
| |
| Gordon Matzigkeit <gord@trick.fig.org> writes: |
| |
| > >>>>> Alexandre Oliva writes: |
| > |
| > AO> I can understand why we'd want all that stuff on systems with |
| > AO> brain-damaged dynamic linkers or such, but on Linux? Gord? |
| > |
| > No specific reason. I was trying to implement something that would |
| > work on all platforms, including Linux. |
| > |
| > >> I think optionally having a PUBLIC_API preprocessor macro or |
| > >> something might be handy. |
| > |
| > AO> Thomas Tanner has recently submitted a patch that implements |
| > AO> that, I think. I still couldn't find the time to look carefully |
| > AO> at the patch, but, from the text description, it looks like |
| > AO> that's exactly what it does. |
| > |
| > I think it's a good idea to be able to specify global symbols |
| > explicitly. That's part of the glibc versioning system that I was |
| > alluding to earlier. |
| > |
| > If you look at the `--version-script' option to GNU ld |
| > ((ld.info)Version Script.), then you'll see more details. |
| |
| To restrict globally visible symbols, here's the info I've got. :) i've |
| been using this for quite a while in our server product. All hail the |
| NSA. |
| |
| Linux: '--retain-symbols-file <FILENAME>' , with all the symbols you want |
| exported in <FILENAME> |
| |
| OSF1: '-hidden -exported_symbol "symname-or-wildcardspec"' |
| |
| AIX: you just restrict what you but in the export list you pass to |
| -bE:<FILENAME>. |
| |
| HP/UX: '+e symname' on the link line for each exported symbol you want |
| |
| Solaris: create a map file for the linker that looks like: |
| { |
| global: |
| symname1; |
| symname2; |
| symname3; |
| local: |
| *; |
| } |
| |
| And use -M <MAPFILE> on the link line. |
| |
| BSD/OS 3.x is the only system I couldn't find a way to support this symbol |
| hiding on. But you might be able to do it better with BSD/OS 4.x now that |
| they have finally moved to elf. |
| |
| BTW: What are the subscription directions for libtool-bugs or a general |
| discussion list for stuff like this? I've had lots of experience over the |
| last 3 years with dynamic loading on various platforms, and would love to |
| get libtool to the point where I could use it for all of our products here |
| at aventail. Less stuff for me to officially maintain. :) |
| |
| I'd also like to see DLD 4.x eventually so that I can just support it and |
| ditch all the crufty junk we are using right now. :) Abstraction good. |
| |
| -Bill P. |
| |