[PATCH, regression?] Support --static-libstdc++ with native AIX ld

Michael Haubenwallner michael.haubenwallner@salomon.at
Mon Jan 28 09:08:00 GMT 2013

On 01/27/2013 03:16 AM, David Edelsohn wrote:
> On Fri, Jan 25, 2013 at 8:55 AM, Michael Haubenwallner
> <michael.haubenwallner@salomon.at> wrote:
>> Same here, building everything out-of-source. The prerequisites used are:
>> * CONFIG_SHELL=/usr/local/bin/bash 4.1.7 from bullfreeware (symlinks to /opt/freeware/bin/)
>> * /usr/bin/{gcc,g++} 4.6.1 from bullfreeware (symlinks to /opt/freeware/bin/)
>> * /usr/bin/gmake 3.82 from bullfreeware (symlinks to /opt/freeware/bin/)
>> * gmp-5.0.4: as shared library, configured with --prefix=/prereq ABI=32
>> * mpfr-3.1.1: as shared library, configured with --prefix=/prereq --with-gmp=/prereq
>> * mpfr-3.1.1: as shared library, configured with --prefix=/prereq --with-{gmp,mpfr}=/prereq
>> * gawk-3.1.7, flex-2.5.35, m4-1.4.13 from some Gentoo Prefix instance, nowhere in PATH,
>>   thus: export {AWK,FLEX}=/gentoo/prefix/usr/bin/{awk,flex} and this patch:
>>   http://gcc.gnu.org/ml/gcc-patches/2013-01/msg00960.html
>> For gcc:
>> * $CONFIG_SHELL configure --prefix=/does/not/exist/yet --with-{gmp,mpfr,mpc}=/prereq \
>>     --enable--languages=c,c++ --disable-werror --disable-nls
>> * gmake bootstrap
> I committed your patch.

Thank you!

But still curious if you've been able to reproduce the problem,
and why you didn't encounter this problem beforehand.

> By the way, NLS works if you build and install GNU libiconv (1.14) and
> add --with-libiconv-prefix=/prereq to force GCC bootstrap to use GNU
> libiconv instead of AIX libiconv.

Yes, but (you've asked) here is this situation I don't want to configure extra deplib-prefixes
for (remember bullfreeware is listed as provider for gcc-binaries):

* bullfreeware's libiconv-1.13.1 and gettext-0.17 is installed in /opt/freeware,
* /usr/lib/libintl.a is symlinked to /opt/freeware/lib (by bullfreeware's RPM),
* /usr/lib/libiconv.a is the original AIX' one.

Now, /usr/lib/libintl.a needs /opt/freeware/lib/libiconv.a[libiconv.so.2], and it does
contain the correct RUNPATH. But subsequent binaries linking against /usr/lib/libintl.a
don't (necessarily) know about the need to add /opt/freeware/lib as RUNPATH, so these
binaries break with libiconv.so.2 not being found as member of /usr/lib/libiconv.a, because
AIX unfortunately does stop its shared-library search at the first archive filename found.

This also is the main reason for my filename-based-shared-library-versioning thing.

While this topic is related, it has different reasoning - but the result does work:
[1] http://www.perzl.org/aix/index.php?n=FAQs.FAQs#toolbox-compatibility-issue


More information about the Gcc-patches mailing list