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.
Этот коммит содержится в:
родитель
17936e6e5f
Коммит
9f1c699f36
@ -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
Обычный файл
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;
|
Загрузка…
x
Ссылка в новой задаче
Block a user