[llvm-commits] [llvm] r83047 - in /llvm/trunk/autoconf: configure.ac m4/linux_mixed_64_32.m4

Nick Lewycky nicholas at mxc.ca
Mon Sep 28 22:40:45 PDT 2009


Author: nicholas
Date: Tue Sep 29 00:40:45 2009
New Revision: 83047

URL: http://llvm.org/viewvc/llvm-project?rev=83047&view=rev
Log:
On Linux, uname -m reports the kernel type. Some Linux systems are 32-bit but
with a 64-bit kernel, which confuses LLVM. Make LLVM double-check this by
checking which defines the system gcc actually sets.

Added:
    llvm/trunk/autoconf/m4/linux_mixed_64_32.m4
Modified:
    llvm/trunk/autoconf/configure.ac

Modified: llvm/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=83047&r1=83046&r2=83047&view=diff

==============================================================================
--- llvm/trunk/autoconf/configure.ac (original)
+++ llvm/trunk/autoconf/configure.ac Tue Sep 29 00:40:45 2009
@@ -284,6 +284,14 @@
   AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
 fi
 
+dnl Handle 32-bit linux systems running a 64-bit kernel.
+if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
+  AC_IS_LINUX_MIXED
+  if test "$llvm_cv_linux_mixed" = "yes"; then
+    llvm_cv_target_arch="x86"
+  fi
+fi
+
 # Determine the LLVM native architecture for the target
 case "$llvm_cv_target_arch" in
     x86)     LLVM_NATIVE_ARCH="X86" ;;

Added: llvm/trunk/autoconf/m4/linux_mixed_64_32.m4
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/m4/linux_mixed_64_32.m4?rev=83047&view=auto

==============================================================================
--- llvm/trunk/autoconf/m4/linux_mixed_64_32.m4 (added)
+++ llvm/trunk/autoconf/m4/linux_mixed_64_32.m4 Tue Sep 29 00:40:45 2009
@@ -0,0 +1,17 @@
+#
+# Some Linux machines run a 64-bit kernel with a 32-bit userspace. 'uname -m'
+# shows these as x86_64. Ask the system 'gcc' what it thinks.
+#
+AC_DEFUN([AC_IS_LINUX_MIXED],
+[AC_CACHE_CHECK(for 32-bit userspace on 64-bit system,llvm_cv_linux_mixed,
+[ AC_LANG_PUSH([C])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+      [[#ifndef __x86_64__
+       error: Not x86-64 even if uname says so!
+      #endif
+      ]])],
+      [llvm_cv_linux_mixed=no],
+      [llvm_cv_linux_mixed=yes])
+  AC_LANG_POP([C])
+])
+])





More information about the llvm-commits mailing list