|
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
|