Building with AIX gcc 3.3

David Edelsohn dje@watson.ibm.com
Mon Jul 7 19:16:00 GMT 2003


>>>>> Ken Foskey writes:

Ken> Code is tested and builds on Linux gcc 3.3.  I am trying to build icu
Ken> 2.2 on AIX for OpenOffice.org port using gcc 3.3 and the standard ld
Ken> tool and I am getting:
 
Ken> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
Ken> information.
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::matches(icu_2_2::Replaceable const&, int&, int,
Ken> signed char)
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::toPattern(icu_2_2::UnicodeString&, signed char)
Ken> const
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::matchesIndexValue(unsigned char) const
Ken> ld: 0711-317 ERROR: Undefined symbol: non-virtual thunk [nv:-4] to
Ken> icu_2_2::UnicodeFilter::addMatchSetTo(icu_2_2::UnicodeSet&) const
Ken> collect2: ld returned 8 exit status

Ken> the nm command (default aix) cannot deal with these files at all.  So I
Ken> cannot really analyse this further.

	I do not know what "cannot deal with these files at all" means.  I
have no difficulty using AIX nm with libstdc++.  If you want demanged
names, use c++filt.
 
Ken> The looks like bug 4122 but I can compile 4122 code fine.  my link line
Ken> is:
Ken> /usr/local/gcc3.3/bin/g++ -O   -Wl,-brtl -shared -Wl,-bexpall  -o
Ken> libicui18n22.0.so ucln_in.o ... ucurr.o -L../common -licuuc22
Ken> -L../data/out -L../stubdata -licudata22 -lpthread -lm

	-Wl,-bexpall does not export symbols with leading underscore,
which are all C++ mangled names in the new ABI.  You need to generate the
export list explicitly using nm and awk substr:

nm -BCpg *.o | awk '{ if ((($2 == "T") || ($2 == "D") || ($2 == "B")) && (substr($3,1,1) != ".")) { print $3 } }' | sort -u > icu.exp

	Also, you need to use -Wl,-G when creating the shared object and
-Wl,-brtl when linking the final application.

Ken> I tried compiling the binutils from tarball and installing it but it
Ken> makes matters worse.

	GNU Binutils does not fully support AIX 5L.

David



More information about the Gcc mailing list