зеркало из https://github.com/mozilla/pjs.git
Bug 674010 - Remove check for DLL-challenged libcs. r=ted
This commit is contained in:
Родитель
bde0e15494
Коммит
86af4fa3b9
57
configure.in
57
configure.in
|
@ -3892,63 +3892,6 @@ if test "x$ac_cv_va_val_copy" = "xno"; then
|
|||
fi
|
||||
AC_MSG_RESULT($ac_cv_va_val_copy)
|
||||
|
||||
dnl Check for dll-challenged libc's.
|
||||
dnl This check is apparently only needed for Linux.
|
||||
case "$target" in
|
||||
*-linux*)
|
||||
dnl ===================================================================
|
||||
_curdir=`pwd`
|
||||
export _curdir
|
||||
rm -rf conftest* _conftest
|
||||
mkdir _conftest
|
||||
cat >> conftest.C <<\EOF
|
||||
#include <stdio.h>
|
||||
#include <link.h>
|
||||
#include <dlfcn.h>
|
||||
#ifdef _dl_loaded
|
||||
void __dump_link_map(void) {
|
||||
struct link_map *map = _dl_loaded;
|
||||
while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
|
||||
}
|
||||
int main() {
|
||||
dlopen("./conftest1.so",RTLD_LAZY);
|
||||
dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
|
||||
dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
|
||||
dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
|
||||
__dump_link_map();
|
||||
}
|
||||
#else
|
||||
/* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
|
||||
int main() { printf("./conftest1.so\n"); }
|
||||
#endif
|
||||
EOF
|
||||
|
||||
$PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
|
||||
|
||||
cat >> conftest1.C <<\EOF
|
||||
#include <stdio.h>
|
||||
void foo(void) {printf("foo in dll called\n");}
|
||||
EOF
|
||||
${CXX-g++} -fPIC -c -g conftest1.C
|
||||
${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
|
||||
${CXX-g++} -g conftest.C -o conftest -ldl
|
||||
cp -f conftest1.so conftest _conftest
|
||||
cd _conftest
|
||||
if test `./conftest | grep conftest1.so | wc -l` -gt 1
|
||||
then
|
||||
echo
|
||||
echo "*** Your libc has a bug that can result in loading the same dynamic"
|
||||
echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
|
||||
echo "*** or later. However, if you choose not to upgrade, the only effect"
|
||||
echo "*** will be excessive memory usage at runtime."
|
||||
echo
|
||||
fi
|
||||
cd ${_curdir}
|
||||
rm -rf conftest* _conftest
|
||||
dnl ===================================================================
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl ===================================================================
|
||||
dnl ========================================================
|
||||
dnl Put your C++ language/feature checks below
|
||||
|
|
|
@ -3807,63 +3807,6 @@ if test "x$ac_cv_va_val_copy" = "xno"; then
|
|||
fi
|
||||
AC_MSG_RESULT($ac_cv_va_val_copy)
|
||||
|
||||
dnl Check for dll-challenged libc's.
|
||||
dnl This check is apparently only needed for Linux.
|
||||
case "$target" in
|
||||
*-linux*)
|
||||
dnl ===================================================================
|
||||
_curdir=`pwd`
|
||||
export _curdir
|
||||
rm -rf conftest* _conftest
|
||||
mkdir _conftest
|
||||
cat >> conftest.C <<\EOF
|
||||
#include <stdio.h>
|
||||
#include <link.h>
|
||||
#include <dlfcn.h>
|
||||
#ifdef _dl_loaded
|
||||
void __dump_link_map(void) {
|
||||
struct link_map *map = _dl_loaded;
|
||||
while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
|
||||
}
|
||||
int main() {
|
||||
dlopen("./conftest1.so",RTLD_LAZY);
|
||||
dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
|
||||
dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
|
||||
dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
|
||||
__dump_link_map();
|
||||
}
|
||||
#else
|
||||
/* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
|
||||
int main() { printf("./conftest1.so\n"); }
|
||||
#endif
|
||||
EOF
|
||||
|
||||
$PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
|
||||
|
||||
cat >> conftest1.C <<\EOF
|
||||
#include <stdio.h>
|
||||
void foo(void) {printf("foo in dll called\n");}
|
||||
EOF
|
||||
${CXX-g++} -fPIC -c -g conftest1.C
|
||||
${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
|
||||
${CXX-g++} -g conftest.C -o conftest -ldl
|
||||
cp -f conftest1.so conftest _conftest
|
||||
cd _conftest
|
||||
if test `./conftest | grep conftest1.so | wc -l` -gt 1
|
||||
then
|
||||
echo
|
||||
echo "*** Your libc has a bug that can result in loading the same dynamic"
|
||||
echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
|
||||
echo "*** or later. However, if you choose not to upgrade, the only effect"
|
||||
echo "*** will be excessive memory usage at runtime."
|
||||
echo
|
||||
fi
|
||||
cd ${_curdir}
|
||||
rm -rf conftest* _conftest
|
||||
dnl ===================================================================
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl ===================================================================
|
||||
dnl ========================================================
|
||||
dnl Put your C++ language/feature checks below
|
||||
|
|
Загрузка…
Ссылка в новой задаче