>>>>> harbecke  writes:

harbecke> when compiling postgres 8.1.2 with GCC 3.3.2 (obtained as binary 
package from
harbecke> http://www-03.ibm.com/servers/aix/products/aixos/linux/download.html
harbecke> ) on AIX 5.3,  we get:

harbecke> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline 
-Wendif-labels -fno-strict-aliasing -L../../src/port   access/SUBSYS.o 
bootstrap/SUBSYS.o catalog/SUBSYS.o parser/SUBSYS.o commands/SUBSYS.o 
executor/SUBSYS.o lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o 
optimizer/SUBSYS.o port/SUBSYS.o postmaster/SUBSYS.o regex/SUBSYS.o 
rewrite/SUBSYS.o storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o 
../../src/timezone/SUBSYS.o ../../src/port/libpgport_srv.a 
-Wl,-bE:../../src/backend/postgres.imp -Wbnoquiet -lm    -lPW -lld -lnsl -ldl 
-lm  -o postgres
harbecke> ld: 0711-317 ERROR: Undefined symbol: ._isnan
harbecke> ld: 0711-317 ERROR: Undefined symbol: ._isnanf
harbecke> ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more 
information.
harbecke> collect2: ld returned 8 exit status

harbecke> The AIX libm (from bos.adt.libm) does not contain the symbol _isnan 
(_isnan is not C99), but both the AIX math.h and the fixincludes replacement 
maps the C99 symbols (without the prefixed underbar) to the underbarred version 
when _ISOC99_SOURCE is defined. Presumably (I'm not able to check this since I 
don't have a native compiler) the native Visual Age compiler turns these into 
inline code and does not generate an external reference.

harbecke> Has this been fixed in more recent compiler versions? Is this a 
problem that can be avoided when GCC is installed from source against the local 
environment?

        This is not a GCC problem.  AIX 5.2 and above provide _isnan and
_isnanf:

$ oslevel
5.3.0.0
$ nm -BCpg /usr/lib/libm.a | grep isnan
/usr/lib/libm.a[isnan.o]:
         0 T ._isnan
/usr/lib/libm.a[_isnanf.o]:
         0 T ._isnanf

Are you sure that the libm fileset is fully installed?

David

Reply via email to