On Oct 14, 2010, at 5:38 PM, Jed Brown wrote:
> $ nm -D /home/jed/src/openmpi-1.5/bclang/ompi/contrib/vt/vt/../../../.libs/libmpi.so |grep MPI_Abort
> 0000000000074380 T PMPI_Abort
>
> In contrast, with gcc:
>
> $ nm -D /home/jed/src/openmpi-1.5/bgcc/ompi/contrib/vt/vt/../../../.libs/libmpi.so |grep MPI_Abort
> 00000000000712d0 W MPI_Abort
> 00000000000712d0 T PMPI_Abort
>
> Weak symbol issue, I don't know how clang is different in this regard.
Ah ha -- maybe this is the root problem and the VT guys are not to blame. :-)
config.log determined that weak symbol support was there, but I wonder if that was somehow a lie...?
configure:14417: checking for weak symbol support
configure:14448: clang -O3 -DNDEBUG -Werror -ansi -c conftest_weak.c
configure:14455: $? = 0
configure:14465: clang -O3 -DNDEBUG -Werror -ansi conftest.c conftest_weak.o -o conftest
configure:14472: $? = 0
configure:14498: result: yes
The configure test essentially looks like this -- could you try this manually and see what happens?
cat > conftest_weak.h <<EOF
int real(int i);
int fake(int i);
EOF
cat > conftest_weak.c <<EOF
#include "conftest_weak.h"
#pragma weak fake = real
int real(int i) { return i; }
EOF
cat > conftest.c <<EOF
#include "conftest_weak.h"
int main() { return fake(3); }
EOF
# Try the compile
clang $CFLAGS -c conftest_weak.c
clang $CFLAGS conftest.c conftest_weak.o -o conftest $LDFLAGS $LIBS
The configure test rules that weak symbol support is there if both compiler invocations return an exit status of 0.
--
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/
|