[cfe-commits] r165503 - in /cfe/trunk/runtime/compiler-rt: Makefile clang_linux_test_input.c

Alexey Samsonov samsonov at google.com
Tue Oct 9 09:03:52 PDT 2012


Author: samsonov
Date: Tue Oct  9 11:03:52 2012
New Revision: 165503

URL: http://llvm.org/viewvc/llvm-project?rev=165503&view=rev
Log:
Fixup for r165097: build 32-bit ASan compiler-rt library on 64-bit Linux only if just-built clang can build simple 32-bit executables

Added:
    cfe/trunk/runtime/compiler-rt/clang_linux_test_input.c
Modified:
    cfe/trunk/runtime/compiler-rt/Makefile

Modified: cfe/trunk/runtime/compiler-rt/Makefile
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/runtime/compiler-rt/Makefile?rev=165503&r1=165502&r2=165503&view=diff
==============================================================================
--- cfe/trunk/runtime/compiler-rt/Makefile (original)
+++ cfe/trunk/runtime/compiler-rt/Makefile Tue Oct  9 11:03:52 2012
@@ -84,19 +84,35 @@
 RuntimeDirs += linux
 RuntimeLibrary.linux.Configs :=
 
+# TryCompile compiler source flags
+# Returns exit code of running a compiler invocation.
+TryCompile = \
+  $(shell \
+    cflags=""; \
+    for flag in $(3); do \
+      cflags="$$cflags $$flag"; \
+    done; \
+    $(1) $$cflags $(2) -o /dev/null > /dev/null 2> /dev/null ; \
+    echo $$?)
+
 # We currently only try to generate runtime libraries on x86.
 ifeq ($(ARCH),x86)
 RuntimeLibrary.linux.Configs += \
 	full-i386.a profile-i386.a asan-i386.a
 endif
+
 ifeq ($(ARCH),x86_64)
 RuntimeLibrary.linux.Configs += \
 	full-x86_64.a profile-x86_64.a asan-x86_64.a tsan-x86_64.a
-# We assume that 32-bit ASan library can be built by Clang on 64-bit platform,
-# and add it to the list of runtime libraries so that
-# "clang -faddress-sanitizer -m32" would work.
+# We need to build 32-bit ASan library on 64-bit platform, and add it to the
+# list of runtime libraries to make "clang -faddress-sanitizer -m32" work.
+# We check that Clang can produce working 32-bit binaries by compiling a simple
+# executable.
+test_source = $(LLVM_SRC_ROOT)/tools/clang/runtime/compiler-rt/clang_linux_test_input.c
+ifeq ($(call TryCompile,$(ToolDir)/clang,$(test_source),-m32),0)
 RuntimeLibrary.linux.Configs += asan-i386.a
 endif
+endif
 
 endif
 

Added: cfe/trunk/runtime/compiler-rt/clang_linux_test_input.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/runtime/compiler-rt/clang_linux_test_input.c?rev=165503&view=auto
==============================================================================
--- cfe/trunk/runtime/compiler-rt/clang_linux_test_input.c (added)
+++ cfe/trunk/runtime/compiler-rt/clang_linux_test_input.c Tue Oct  9 11:03:52 2012
@@ -0,0 +1,4 @@
+// This file is used to check if we can produce working executables
+// for i386 and x86_64 archs on Linux.
+#include <stdlib.h>
+int main(){}





More information about the cfe-commits mailing list