I am using Oracle's Studio 12.4 compilers for Linux/x86-64 to build the
current master tarball.
However, I am passing "-m32" to generate x86 (ILP32 ABI) executables.

The full configure mess is:

--prefix=[...] --enable-debug \
CC=cc  CFLAGS="-m32"   --with-wrapper-cflags="-m32" \
CXX=CC CXXFLAGS="-m32" --with-wrapper-cxxflags="-m32" \
FC=f90 FCFLAGS="-m32"  --with-wrapper-fcflags="-m32"


The failing output from "make V=1" is

/bin/sh ../../../libtool  --tag=CC   --mode=link cc  -m32 -g -mt
 -export-dynamic    -o opal_wrapper opal_wrapper.o ../../../opal/
libopen-pal.la -lrt -lm -lutil   -lrt -lm -lutil
libtool: link: cc -m32 -g -mt -o .libs/opal_wrapper opal_wrapper.o
-Wl,--export-dynamic  ../../../opal/.libs/libopen-pal.so -ldl -lrt -lm
-lutil -mt -Wl,-rpath
-Wl,/scratch/phargrov/OMPI/openmpi-master-linux-x86_64-ss12u4-m32/INST/lib
../../../opal/.libs/libopen-pal.so: undefined reference to `ebx'


Now clearly "ebx" should be referring to the CPU register, not an external
symbol, right?
HOWEVER, in x86 PIC code (e.g. a .so file) one CANNOT generally use 'ebx'
in inline asm because it is used as the GOT pointer.
So, their might be more than one problem here.

The same is seen with the older Studio 12.3 compilers for Linux.
However, the problem is *NOT* seen with Studio 12.3 compilers on Solaris-11
and the identical configure options.

-Paul

BTW:
Can somebody tell me if I really need to specify "-m32" in *both* CFLAGS
and --with-wrapper-cflags (etc.)?

-- 
Paul H. Hargrove                          phhargr...@lbl.gov
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department               Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to