1
1

Add a patch to libltdl so that the preopen loader doesn't mask a real

error if the file-based dloader (e.g., dlopen) fails to load a DSO for
a complex reason (e.g., unresolved symbol).

This has been widely reported upstream to the libltdl maintainers - a
general solution is difficult.  This is very definitely an
OMPI-specific solution.  Since our embedded libltdl is hidden behind
visibility flags, that's ok.

Note that this is a change to autogen.sh, but this commit does not
force re-running autogen.sh.  You'll just get the new functionality
the next time you re-run autogen.sh.

This commit was SVN r22806.
Этот коммит содержится в:
Jeff Squyres 2010-03-10 17:03:25 +00:00
родитель 17936e6e5f
Коммит 9f1c699f36
3 изменённых файлов: 34 добавлений и 1 удалений

Просмотреть файл

@ -490,6 +490,11 @@ EOF
mv configure.new configure
chmod a+x configure
fi
echo " ++ preopen error masking ib libltdl"
if test -r opal/libltdl/loaders/preopen.c; then
patch -N -p0 < config/libltdl-preopen-error.patch
rm -f opal/libltdl/loaders/preopen.c.rej
fi
# See
# http://lists.gnu.org/archive/html/bug-libtool/2008-05/msg00045.html.

Просмотреть файл

@ -9,7 +9,7 @@
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
@ -21,6 +21,7 @@ EXTRA_DIST = \
distscript.csh \
ompi_get_version.m4sh \
libltdl_dlopen_global.diff \
libltdl-preopen-error.diff \
lt-sun-fortran.diff \
lt1522-pathCC.diff \
lt21a-pathCC.diff \

27
config/libltdl-preopen-error.patch Обычный файл
Просмотреть файл

@ -0,0 +1,27 @@
--- opal/libltdl/loaders/preopen.c.~1~ 2010-03-03 14:13:28.000000000 -0500
+++ opal/libltdl/loaders/preopen.c 2010-03-05 17:57:11.000000000 -0500
@@ -185,7 +185,24 @@
}
}
+#if 0
+ /* Open MPI: This line is commented out because Open MPI does not
+ use the preopen functionality in libltdl at all -- so we never
+ need to see errors from this module. Additionally, this module
+ is usually invoked last in the sequence when trying to
+ lt_dlopenadvise() a DSO -- so if there was a real error when
+ opening that DSO (e.g., a symbol not found), setting the
+ FILE_NOT_FOUND error here will mask the real error.
+
+ This error has been reported upstream to the Libtool maintainers;
+ they acknowledge that it is a problem but no one has come up with
+ a good general solution yet. This Open MPI-specific solution is
+ workable for us, but not workable as a general solution. Hence,
+ we patch in this "if 0" block in autogen.sh after Libtool
+ installs libltdl in the opal/ tree.
+ */
LT__SETERROR (FILE_NOT_FOUND);
+#endif
done:
return module;