1. 07 Jul, 2014 1 commit
  2. 15 Apr, 2014 1 commit
    • Pavan Balaji's avatar
      Create a dummy function that calls all ROMIO public symbols. · ffcc4904
      Pavan Balaji authored and Kenneth Raffenetti's avatar Kenneth Raffenetti committed
      
      
      All ROMIO public symbols are being added into the libromio convenience
      library, which is LIBADD'ed into libmpi.  The correct behavior would
      be for libtool to add -Wl,--whole-archive to the link line, thus
      forcing all symbols in libromio to end up in libmpi.  However, in some
      cases, this is not working out correctly.  For example, with the
      Absoft compiler, the linker flags were being reordered thus causing
      the -Wl,--whole-archive flag to not correspond to libromio.
      Consequently, only symbols that were used from within the other
      functions of libmpi were being included.
      
      For example, Absoft's linker reordering is below:
      
      ----8<----
      % af77 -v -shared -fPIC src/mpi/attr/.libs/lib_libmpi_la-attrutil.o src/mpi_t/.libs/lib_libmpi_la-pvar_write.o \
        -Wl,--whole-archive src/mpi/romio/.libs/libromio.a -Wl,--no-whole-archive  \
        -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/src/mpl/.libs \
        -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/src/openpa/src/.libs \
        -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/install/lib \
        -L/sandbox/balaji/build-absoft/src/mpl -L/sandbox/balaji/build-absoft/src/openpa/src \
        /sandbox/balaji/build-absoft/src/mpl/.libs/libmpl.so /sandbox/balaji/build-absoft/src/openpa/src/.libs/libopa.so \
        -lrt -lpthread  -O0   -Wl,-soname -Wl,libmpi.so.12 -o lib/.libs/libmpi.so.12.0.0
      
      gcc src/mpi/attr/.libs/lib_libmpi_la-attrutil.o src/mpi_t/.libs/lib_libmpi_la-pvar_write.o \
          /sandbox/balaji/build-absoft/src/mpl/.libs/libmpl.so /sandbox/balaji/build-absoft/src/openpa/src/.libs/libopa.so \
          -L/soft/com/packages/absoft11.0/shlib64 -Wl,--whole-archive -Wl,--no-whole-archive \
          -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/src/mpl/.libs \
          -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/src/openpa/src/.libs \
          -Wl,-rpath -Wl,/sandbox/balaji/build-absoft/install/lib \
          -L/sandbox/balaji/build-absoft/src/mpl -L/sandbox/balaji/build-absoft/src/openpa/src \
          -Wl,-soname -Wl,libmpi.so.12 -shared -o lib/.libs/libmpi.so.12.0.0 src/mpi/romio/.libs/libromio.a \
          -lrt -lpthread -laf90math -lafio -lamisc -laf77math -lm -lmv
      ----8<----
      
      In the past, we got lucky in two ways:
      
      1. We were including all the Fortran 77 symbols into libmpi.  Since
      the Fortran symbols were calling the C ROMIO symbols, those ROMIO
      symbols were pulled in even without -Wl,--whole-archive.
      
      2. The problem only showed up with absoft and nag, both of which are
      Fortran-only compilers.  If a C compiler has this issue, it should
      have shown up when Fortran support is disabled.
      
      Signed-off-by: Kenneth Raffenetti's avatarKen Raffenetti <raffenet@mcs.anl.gov>
      ffcc4904