Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] r18551 - brakes ob1 compilation on Sles10
From: Pavel Shamis (Pasha) (pasha_at_[hidden])
Date: 2008-06-02 08:25:13


r18551 brakes ompi compilation on SLES10 gcc 4.1.0.

I got follow error on my systems
(http://www.open-mpi.org/mtt/index.php?do_redir=672 ):
make[2]: Entering directory
`/.autodirect/hpc/work/pasha/tmp/mtt-8/installs/5VHm/src/openmpi-1.3a1r18553/ompi/mca/pml/ob1'
/bin/sh ../../../../libtool --tag=CC --mode=link gcc -g -pipe -Wall
-Wundef -Wno-long-long -Wsign-compare -Wmissing-prototypes
-Wstrict-prototypes -Wcomment -pedantic
-Werror-implicit-function-declaration -finline-functions
-fno-strict-aliasing -pthread -fvisibility=hidden -module -avoid-version
-export-dynamic -o mca_pml_ob1.la -rpath
/.autodirect/hpc/work/pasha/tmp/mtt-8/installs/5VHm/install/lib/openmpi
pml_ob1.lo pml_ob1_comm.lo pml_ob1_component.lo pml_ob1_iprobe.lo
pml_ob1_irecv.lo pml_ob1_isend.lo pml_ob1_progress.lo pml_ob1_rdma.lo
pml_ob1_rdmafrag.lo pml_ob1_recvfrag.lo pml_ob1_recvreq.lo
pml_ob1_sendreq.lo pml_ob1_start.lo -lnsl -lutil -lm
libtool: link: gcc -shared .libs/pml_ob1.o .libs/pml_ob1_comm.o
.libs/pml_ob1_component.o .libs/pml_ob1_iprobe.o .libs/pml_ob1_irecv.o
.libs/pml_ob1_isend.o .libs/pml_ob1_progress.o .libs/pml_ob1_rdma.o
.libs/pml_ob1_rdmafrag.o .libs/pml_ob1_recvfrag.o
.libs/pml_ob1_recvreq.o .libs/pml_ob1_sendreq.o .libs/pml_ob1_start.o
-lnsl -lutil -lm -pthread -pthread -Wl,-soname -Wl,mca_pml_ob1.so -o
.libs/mca_pml_ob1.so
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld:
.libs/pml_ob1_sendreq.o: relocation R_X86_64_PC32 against
`mca_pml_ob1_rndv_completion' can not be used when making a shared
object; recompile with -fPIC
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld:
final link failed: Bad value
collect2: ld returned 1 exit status

Removing inline from some of functions (see attached file), resolves the
problem.

Thanks,
Pasha


--- pml_ob1_sendreq.c 2008-06-01 10:59:51.094063000 +0300
+++ pml_ob1_sendreq.c.new 2008-06-02 15:07:02.612983000 +0300
@@ -192,7 +192,7 @@
     MCA_PML_OB1_PROGRESS_PENDING(bml_btl);
 }
 
-static inline void
+static void
 mca_pml_ob1_match_completion_free( struct mca_btl_base_module_t* btl,
                                    struct mca_btl_base_endpoint_t* ep,
                                    struct mca_btl_base_descriptor_t* des,
@@ -235,7 +235,7 @@
  * Completion of the first fragment of a long message that
  * requires an acknowledgement
  */
-static inline void
+static void
 mca_pml_ob1_rndv_completion( mca_btl_base_module_t* btl,
                              struct mca_btl_base_endpoint_t* ep,
                              struct mca_btl_base_descriptor_t* des,
@@ -269,7 +269,7 @@
  * Completion of a get request.
  */
 
-static inline void
+static void
 mca_pml_ob1_rget_completion( mca_btl_base_module_t* btl,
                              struct mca_btl_base_endpoint_t* ep,
                              struct mca_btl_base_descriptor_t* des,
@@ -295,7 +295,7 @@
  * Completion of a control message - return resources.
  */
 
-static inline void
+static void
 mca_pml_ob1_send_ctl_completion( mca_btl_base_module_t* btl,
                                  struct mca_btl_base_endpoint_t* ep,
                                  struct mca_btl_base_descriptor_t* des,
@@ -312,7 +312,7 @@
  * to schedule additional fragments.
  */
 
-static inline void
+static void
 mca_pml_ob1_frag_completion( mca_btl_base_module_t* btl,
                              struct mca_btl_base_endpoint_t* ep,
                              struct mca_btl_base_descriptor_t* des,