about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rwxr-xr-xconfigure7
-rw-r--r--configure.in7
3 files changed, 20 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 98e34a4322..d9c07ff7e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-21  Joseph Myers  <joseph@codesourcery.com>
+
+	* configure.in (libc_cv_predef_stack_protector): Only consider
+	"foobar" and "__stack_chk_fail" lines in libc_undefs.
+	* configure: Regenerated.
+
 2012-05-21  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_SET_ERRNO):
diff --git a/configure b/configure
index f23c40f99d..09a06377d7 100755
--- a/configure
+++ b/configure
@@ -7696,6 +7696,13 @@ libc_undefs=`$NM -u conftest.o |
   as_fn_error $? "confusing output from $NM -u" "$LINENO" 5
 }
 echo >&5 "libc_undefs='$libc_undefs'"
+# On some architectures, there are architecture-specific undefined
+# symbols (resolved by the linker), so filter out unknown symbols.
+# This will fail to produce the correct result if the compiler
+# defaults to -fstack-protector but this produces an undefined symbol
+# other than __stack_chk_fail.  However, compilers like that have not
+# been encountered in practice.
+libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
 case "$libc_undefs" in
 foobar) libc_cv_predef_stack_protector=no ;;
 '__stack_chk_fail
diff --git a/configure.in b/configure.in
index a9ee7334d6..38b55a6784 100644
--- a/configure.in
+++ b/configure.in
@@ -2072,6 +2072,13 @@ libc_undefs=`$NM -u conftest.o |
   AC_MSG_ERROR([confusing output from $NM -u])
 }
 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
+# On some architectures, there are architecture-specific undefined
+# symbols (resolved by the linker), so filter out unknown symbols.
+# This will fail to produce the correct result if the compiler
+# defaults to -fstack-protector but this produces an undefined symbol
+# other than __stack_chk_fail.  However, compilers like that have not
+# been encountered in practice.
+libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
 case "$libc_undefs" in
 foobar) libc_cv_predef_stack_protector=no ;;
 '__stack_chk_fail