From: George R. <gr...@us...> - 2002-11-15 23:39:38
|
-brtl is needed for our form of binary compatibility between maintenance releases. George Rhoten IBM Globalization Center of Competency/ICU San Jose, CA, USA Peeter Joot@IBMCA 11/15/2002 11:31 AM To: George Rhoten/San Jose/IBM@IBMUS cc: Dan Behman/Toronto/IBM@IBMCA, icu...@os..., Sam Bortman/Toronto/IBM@IBMCA From: Peeter Joot/Toronto/IBM@IBMCA Subject: Re: Building 2.2 on AIX (xlC) without -brtl Use of a static library may be appropriate. Sam will probably end up looking into that. Is there any reason you don't just use -bautoexp instead of -brtl for your default rules for shared libraries on AIX. It doesn't sound like you actually require the use of the run time loader. Peeter -- Peeter Joot DB2 Development Phone: (905) 413-3359 T/L 969-3359 pe...@ca..., Peeter Joot/Toronto/IBM@IBMCA For general OSS questions and service issues, please use the 'askOSS@IBMCA' distribution list. George Rhoten@IBMUS 15/11/2002 02:11 PM To: Peeter Joot/Toronto/IBM@IBMCA cc: Dan Behman/Toronto/IBM@IBMCA, icu...@os..., Sam Bortman/Toronto/IBM@IBMCA From: George Rhoten/San Jose/IBM@IBMUS Subject: Re: Building 2.2 on AIX (xlC) without -brtl We know -brtl adds to the load time. We also know that it does a -bautoexp too. Using an export file just for AIX is not an option for ICU. Since we can't do the Windows style exporting of functions on anything but Windows, the -bautoexp is needed. I think we have different meanings for the term "binary compatibility". Your description of AIX library versioning sounds unusual. ICU has the notion of library versioning that works on Windows, Linux, Solaris, HP, BSD and several other platforms. AIX has the unusual architecture where the difference between static and shared libraries are blurred. I don't think your description of library versioning would even work for us because it isn't fine grained enough like on other platforms, and it would require an overhaul of the ICU makefiles. This is one of the reasons why -bautoexp is used with the unicode/urename.h file, and the library names are also versioned. From my understanding, this is what you want. 1) a shared library of ICU 2) the shared library must not have -brtl Is my understanding correct? Is there a reason why you can't use a static library instead? BTW I've already read "http://www-1.ibm.com/servers/esdd/pdfs/aix_ll.pdf" a while ago, and I guess ICU follows the "System V" architecture. George Rhoten IBM Globalization Center of Competency/ICU San Jose, CA, USA Peeter Joot@IBMCA 11/15/2002 10:24 AM To: George Rhoten/San Jose/IBM@IBMUS cc: Dan Behman/Toronto/IBM@IBMCA, icu...@os..., Sam Bortman/Toronto/IBM@IBMCA From: Peeter Joot/Toronto/IBM@IBMCA Subject: Re: Building 2.2 on AIX (xlC) without -brtl Run time symbol resolution is slower for one. An example is that an attempt to use this db2 product (large) added seconds to our start up time (not acceptable!). The kind of compatability you are talking about doesn't have anything to do with -brtl. In fact, it is likely the opposite, since -brtl implies -bautoexp, which exposes all your internal symbols as well as the interfaces you externalize. Note that there is really no concept of major or minor numbers for AIX shared libraries as there is on ELF platforms. Versioning the libraries on AIX can be done by marking a shared object within an archive (archives on AIX can contain both shared and non-shared objects ; example /usr/lib/libc.a) as load only, and then using a new name for the new code. Existing binaries will then use the old archive(shared_name) combination, and new ones will use the new names. An example of this is the shr.o and shr_xpg5.o shared objects in the /usr/lib/libpthread.a archive. Pre-AIX 4.3 code will only ever reference the libpthread.a(shr.o) object and will continue to load and run on AIX4.3+ using the old pthread semantics ... newly compiled code will have symbol references to libpthread.a(shr_xpg5.o), and the associated new (posix spec) semantics. If you want to experiment with this to understand it 'dump -TvHX32_64' is a useful tool. Peeter -- Peeter Joot DB2 Development Phone: (905) 413-3359 T/L 969-3359 pe...@ca..., Peeter Joot/Toronto/IBM@IBMCA For general OSS questions and service issues, please use the 'askOSS@IBMCA' distribution list. George Rhoten@IBMUS 15/11/2002 01:04 PM To: Peeter Joot/Toronto/IBM@IBMCA cc: Dan Behman/Toronto/IBM@IBMCA, icu...@os..., Sam Bortman/Toronto/IBM@IBMCA From: George Rhoten/San Jose/IBM@IBMUS Subject: Re: Building 2.2 on AIX (xlC) without -brtl When I think of effect #1, I always think of shared libraries (other people on the list may disagree). Why would a shared library not want effect #1? For instance, between 1.8.0 and 1.8.1 a few internal functions were added and we always try to keep binary compatibility between versions with the same major and minor numbers. Without the -brtl, I don't believe this compatibility could be accomplished. If you're using Visual Age 5, you can also remove the -brtl option from LDFLAGS from config/mh-aix-va, and you can see what happens. George Rhoten IBM Globalization Center of Competency/ICU San Jose, CA, USA Peeter Joot@IBMCA 11/15/2002 09:42 AM To: Dan Behman/Toronto/IBM@IBMCA cc: George Rhoten/San Jose/IBM@IBMUS, icu...@os..., Sam Bortman/Toronto/IBM@IBMCA From: Peeter Joot/Toronto/IBM@IBMCA Subject: Re: Building 2.2 on AIX (xlC) without -brtl Note that -brtl implies a whole lot more than just being able to use shared libraries that have the .so or .a suffix. Using -brtl has a few effects: 1) symbol resolution is deferred to run time instead of the default bind time resolution (ie: slower) 2) conflicting or duplicate symbols are relocated in the fashion that occurs on ELF platforms (Solaris, Linux, HP 64-bit, SGI, ...), where the first reference to the symbol is the one that is used for everything else in the process. 3) the use of loadbind for controlled symbol resolution is not possible (or required, which is nice if acceptable, since having to use loadbind and deferred imports is painful). 4) there are some more (see the ld man page). In order for this to function correctly the use of -brtl has to be used for all the executables that link to or load the shared object, and we (DB2) cannot do this for various reasons. What we were wondering is whether or not there is a true design dependency on these sorts of features, or was -brtl used because it seemed at the time that it seemed the appropriate way to build a shared library. Peeter -- Peeter Joot DB2 Development Phone: (905) 413-3359 T/L 969-3359 pe...@ca..., Peeter Joot/Toronto/IBM@IBMCA For general OSS questions and service issues, please use the 'askOSS@IBMCA' distribution list. Dan Behman 15/11/2002 11:41 AM To: George Rhoten/San Jose/IBM@IBMUS cc: icu...@os..., Sam Bortman/Toronto/IBM@IBMCA, Peeter Joot/Toronto/IBM@IBMCA From: Dan Behman/Toronto/IBM@IBMCA Subject: Re: Building 2.2 on AIX (xlC) without -brtl Thanks for the quick response George. Our product is linked without the -brtl option (this cannot change) and from what I understand, we cannot link in any libraries that have themselves been linked with the -brtl option... ---------- Dan Behman DB2 UDB Unix Development ---------- George Rhoten/San Jose/IBM@IBMUS Sent by: icu...@ww... 11/15/2002 11:30 AM To: Dan Behman/Toronto/IBM@IBMCA cc: icu...@ww..., Sam Bortman/Toronto/IBM@IBMCA Subject: Re: Building 2.2 on AIX (xlC) without -brtl What are you trying to accomplish? Why don't you want -brtl? For those on the mailing list not familiar with this option, here is a description: -brtl Tells the linkage editor to accept both .so and .a library file types. George Rhoten IBM Globalization Center of Competency/ICU San Jose, CA, USA db...@ca... Sent by: icu...@ww... 11/15/2002 07:50 AM To: icu...@ww... cc: sbo...@ca... Subject: Building 2.2 on AIX (xlC) without -brtl Hi, I've searched through the mailing list archives, and from what I can tell, its possible to build icu on AIX without the -brtl parameter, but I want to make sure this absolutely won't have any negative effects. Can someone please confirm this? ---------- Dan Behman DB2 UDB Unix Development ---------- _______________________________________________ icu...@os... - icu4c-support mailing list To Un/Subscribe: http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu4c-support _______________________________________________ icu...@os... - icu4c-support mailing list To Un/Subscribe: http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu4c-support |