[llvm-commits] [compiler-rt] r163294 - in /compiler-rt/trunk/lib/asan: Makefile.disabled Makefile.old README.txt output_tests/

Alexey Samsonov samsonov at google.com
Wed Sep 5 23:39:02 PDT 2012


Author: samsonov
Date: Thu Sep  6 01:39:02 2012
New Revision: 163294

URL: http://llvm.org/viewvc/llvm-project?rev=163294&view=rev
Log:
[ASan] Nuke output_tests/ in favor of lit_tests/. Stop using Makefile.old.

Added:
    compiler-rt/trunk/lib/asan/Makefile.disabled
      - copied unchanged from r163292, compiler-rt/trunk/lib/asan/Makefile.old
Removed:
    compiler-rt/trunk/lib/asan/Makefile.old
    compiler-rt/trunk/lib/asan/output_tests/
Modified:
    compiler-rt/trunk/lib/asan/README.txt

Removed: compiler-rt/trunk/lib/asan/Makefile.old
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/Makefile.old?rev=163293&view=auto
==============================================================================
--- compiler-rt/trunk/lib/asan/Makefile.old (original)
+++ compiler-rt/trunk/lib/asan/Makefile.old (removed)
@@ -1,334 +0,0 @@
-#===- lib/asan/Makefile.old --------------------------------*- Makefile -*--===#
-#
-#                     The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-#===------------------------------------------------------------------------===#
-
-OS=$(shell uname | tr '[A-Z]' '[a-z]')
-ROOT=$(shell pwd)
-MAKEFILE=Makefile.old  # this file.
-
-ifeq ($(ARCH), android)
-  ANDROID_CFLAGS= \
-		-DANDROID \
-		-D__WORDSIZE=32 \
-		-I$(ANDROID_BUILD_TOP)/external/stlport/stlport \
-		-I$(ANDROID_BUILD_TOP)/bionic \
-		-I$(ANDROID_BUILD_TOP)/bionic/libstdc++/include \
-		-I$(ANDROID_BUILD_TOP)/bionic/libc/arch-arm/include \
-		-I$(ANDROID_BUILD_TOP)/bionic/libc/include \
-		-I$(ANDROID_BUILD_TOP)/bionic/libc/kernel/common \
-		-I$(ANDROID_BUILD_TOP)/bionic/libc/kernel/arch-arm \
-		-I$(ANDROID_BUILD_TOP)/bionic/libm/include \
-		-I$(ANDROID_BUILD_TOP)/bionic/libm/include/arm \
-		-I$(ANDROID_BUILD_TOP)/bionic/libthread_db/include \
-		-L$(ANDROID_PRODUCT_OUT)/obj/lib
-  CLANG_FLAGS= \
-		-ccc-host-triple arm-linux-androideabi \
-		-D__compiler_offsetof=__builtin_offsetof \
-		-D__ELF__=1 \
-		-ccc-gcc-name arm-linux-androideabi-g++ \
-		$(ANDROID_CFLAGS)
-  CC=$(ANDROID_EABI_TOOLCHAIN)/arm-linux-androideabi-gcc $(ANDROID_CFLAGS)
-  CXX=$(ANDROID_EABI_TOOLCHAIN)/arm-linux-androideabi-g++ $(ANDROID_CFLAGS)
-endif
-
-ifeq ($(ARCH), arm)
-  # Example make command line:
-  # CROSSTOOL=$HOME/x-tools/arm-unknown-linux-gnueabi/ PATH=$CROSSTOOL/bin:$PATH make ARCH=arm asan_test
-  CLANG_FLAGS= \
-		-ccc-host-triple arm-unknown-linux-gnueabi \
-		-march=armv7-a -mfloat-abi=softfp -mfp=neon \
-		-ccc-gcc-name arm-unknown-linux-gnueabi-g++ \
-		-B$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4 \
-		-B$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/lib \
-		-I$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4/include \
-		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/include/c++/4.4.4 \
-		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/include/c++/4.4.4/arm-unknown-linux-gnueabi \
-		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/include \
-		-I$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/include \
-		-L$(CROSSTOOL)/lib/gcc/arm-unknown-linux-gnueabi/4.4.4 \
-		-L$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/lib \
-		-L$(CROSSTOOL)/arm-unknown-linux-gnueabi/sys-root/usr/lib
-  CC=$(CROSSTOOL)/bin/arm-unknown-linux-gnueabi-gcc 
-  CXX=$(CROSSTOOL)/bin/arm-unknown-linux-gnueabi-g++
-endif
-
-CLANG_FLAGS=
-CLANG_VERSION=3.2
-CLANG_BUILD=$(ROOT)/../../../../build/Release+Asserts
-CLANG_CC=$(CLANG_BUILD)/bin/clang $(CLANG_FLAGS)
-CLANG_CXX=$(CLANG_BUILD)/bin/clang++ $(CLANG_FLAGS)
-FILE_CHECK=$(CLANG_BUILD)/bin/FileCheck
-
-CC=$(CLANG_CC)
-CXX=$(CLANG_CXX)
-
-CFLAGS:=-Wall -fvisibility=hidden
-
-CLEANROOM_CXX=$(CXX) -Wall
-
-INSTALL_DIR=../asan_clang_$(OS)
-BIN=bin_$(OS)
-
-LIBS=#-lpthread -ldl
-ARCH=x86_64
-
-ASAN_STACK=1
-ASAN_GLOBALS=1
-ASAN_SCALE=0  # default will be used
-ASAN_OFFSET=-1  #default will be used
-ASAN_UAR=0
-ASAN_HAS_EXCEPTIONS=1
-ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0
-ASAN_HAS_BLACKLIST=1
-ASAN_NEEDS_SEGV=1
-ASAN_PIE=0
-
-ifeq ($(ARCH), i386)
-BITS=32
-SUFF=$(BITS)
-CFLAGS:=$(CFLAGS) -m$(BITS)
-endif
-
-ifeq ($(ARCH), x86_64)
-BITS=64
-SUFF=$(BITS)
-CFLAGS:=$(CFLAGS) -m$(BITS)
-endif
-
-ifeq ($(ARCH), arm)
-BITS=32
-SUFF=_arm
-CFLAGS:=$(CFLAGS) -march=armv7-a
-ASAN_HAS_EXCEPTIONS=0
-endif
-
-ifeq ($(ARCH), android)
-BITS=32
-SUFF=_android
-CFLAGS:=$(CFLAGS)
-ASAN_HAS_EXCEPTIONS=0
-endif
-
-PIE=
-ifeq ($(ASAN_PIE), 1)
-  PIE=-fPIE -pie
-endif
-
-# This will build libasan on linux for both x86_64 and i386 in the
-# desired location. The Mac library is already build by the clang's make.
-# $(CLANG_BUILD)/lib/clang/$(CLANG_VERSION)/lib/$(OS)/libclang_rt.asan-$(ARCH).a
-LIBASAN_INST_DIR=$(CLANG_BUILD)/lib/clang/$(CLANG_VERSION)/lib/$(OS)
-LIBASAN_A=$(LIBASAN_INST_DIR)/libclang_rt.asan-$(ARCH).a
-
-BLACKLIST=
-ifeq ($(ASAN_HAS_BLACKLIST), 1)
-  BLACKLIST=-mllvm -asan-blacklist=$(ROOT)/tests/asan_test.ignore
-endif
-
-COMMON_ASAN_DEFINES=\
-                -DASAN_UAR=$(ASAN_UAR) \
-		-DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \
-		-DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \
-		-DASAN_HAS_BLACKLIST=$(ASAN_HAS_BLACKLIST)
-
-CLANG_ASAN_CXX=$(CLANG_CXX) \
-	       -faddress-sanitizer \
-		$(BLACKLIST)  \
-		-mllvm -asan-stack=$(ASAN_STACK)      \
-		-mllvm -asan-globals=$(ASAN_GLOBALS)  \
-		-mllvm -asan-mapping-scale=$(ASAN_SCALE) \
-		-mllvm -asan-mapping-offset-log=$(ASAN_OFFSET) \
-		-mllvm -asan-use-after-return=$(ASAN_UAR) \
-		$(COMMON_ASAN_DEFINES)
-
-CLANG_ASAN_LD=$(CLANG_CXX) -faddress-sanitizer
-
-GCC_ASAN_PATH=SET_FROM_COMMAND_LINE
-GCC_ASAN_CXX=$(GCC_ASAN_PATH)/g++ \
-	     -faddress-sanitizer \
-	     $(COMMON_ASAN_DEFINES)
-
-GCC_ASAN_LD=$(GCC_ASAN_PATH)/g++ -ldl -lpthread
-
-ASAN_COMPILER=clang
-
-ifeq ($(ASAN_COMPILER), clang)
-  ASAN_CXX=$(CLANG_ASAN_CXX)
-  ASAN_LD=$(CLANG_ASAN_LD)
-  ASAN_LD_TAIL=
-endif
-
-ifeq ($(ASAN_COMPILER), gcc)
-  ASAN_CXX=$(GCC_ASAN_CXX)
-  ASAN_LD=$(GCC_ASAN_LD)
-  ASAN_LD_TAIL=$(LIBASAN_A)
-endif
-
-INTERCEPTION=../interception
-MACH_OVERRIDE=$(INTERCEPTION)/mach_override
-COMMON=../sanitizer_common
-
-RTL_HDR=$(wildcard *.h) \
-	$(wildcard $(INTERCEPTION)/*.h) \
-	$(wildcard $(MACH_OVERRIDE)/*.h) \
-	$(wildcard $(COMMON)/*.h)
-
-LIBTSAN_SRC=$(wildcard *.cc)
-INTERCEPTION_SRC=$(wildcard $(INTERCEPTION)/*.cc)
-MACH_OVERRIDE_SRC=$(wildcard $(MACH_OVERRIDE)/*.c)
-COMMON_SRC=$(wildcard $(COMMON)/*.cc)
-
-
-LIBASAN_OBJ=$(patsubst %.cc,$(BIN)/%$(SUFF).o,$(LIBTSAN_SRC)) \
-	    $(patsubst $(INTERCEPTION)/%.cc,$(BIN)/%$(SUFF).o,$(INTERCEPTION_SRC)) \
-	    $(patsubst $(COMMON)/%.cc,$(BIN)/%$(SUFF).o,$(COMMON_SRC)) \
-	    $(patsubst $(MACH_OVERRIDE)/%.c,$(BIN)/%$(SUFF).o,$(MACH_OVERRIDE_SRC))
-
-GTEST_ROOT=third_party/googletest
-GTEST_INCLUDE=-I$(GTEST_ROOT)/include
-GTEST_MAKE_DIR=$(GTEST_ROOT)/make-$(OS)$(SUFF)
-GTEST_LIB=$(GTEST_MAKE_DIR)/gtest-all.o
-
-all: b64 b32
-
-test: t64 t32 output_tests
-	@echo "ALL TESTS PASSED"
-
-output_tests: b32 b64
-	cd output_tests && ./test_output.sh $(CLANG_CXX) $(CLANG_CC) $(FILE_CHECK)
-
-t64: b64
-	$(BIN)/asan_test64
-t32: b32
-	$(BIN)/asan_test32
-
-b64: | mk_bin_dir
-	$(MAKE) -f $(MAKEFILE) ARCH=x86_64 asan_test asan_benchmarks
-b32: | mk_bin_dir
-	$(MAKE) -f $(MAKEFILE) ARCH=i386 asan_test asan_benchmarks
-
-lib64:
-	$(MAKE) -f $(MAKEFILE) ARCH=x86_64 lib
-lib32:
-	$(MAKE) -f $(MAKEFILE) ARCH=i386 lib
-
-mk_bin_dir:
-	mkdir -p $(BIN)
-
-clang:
-	cd ../ && llvm/rebuild_clang_and_asan.sh > /dev/null
-
-install: install_clang
-
-$(INSTALL_DIR):
-	mkdir -p $(INSTALL_DIR) $(INSTALL_DIR)/bin $(INSTALL_DIR)/lib
-
-install_clang: | $(INSTALL_DIR)
-	cp -v $(CLANG_BUILD)/bin/clang $(INSTALL_DIR)/bin
-	cp -rv $(CLANG_BUILD)/lib/clang $(INSTALL_DIR)/lib
-	(cd $(INSTALL_DIR)/bin; ln -sf clang clang++)
-
-#install_lib: | $(INSTALL_DIR)
-#	cp -v $(CLANG_BUILD)/lib/libasan*.a $(INSTALL_DIR)/lib
-
-$(BIN)/asan_noinst_test$(SUFF).o: tests/asan_noinst_test.cc $(RTL_HDR) $(MAKEFILE)
-	$(CLEANROOM_CXX) $(COMMON_ASAN_DEFINES) $(PIE) $(CFLAGS) $(GTEST_INCLUDE) \
-		-I. -I.. -I../../include -g -c $< -O2 -o $@
-
-$(BIN)/asan_break_optimization$(SUFF).o: tests/asan_break_optimization.cc $(MAKEFILE)
-	$(CLEANROOM_CXX) $(PIE) $(CFLAGS) -c $< -O0 -o $@
-
-$(BIN)/%_test$(SUFF).o: tests/%_test.cc $(RTL_HDR) $(MAKEFILE)
-	$(ASAN_CXX) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@ $(PIE) $(CFLAGS)
-
-$(BIN)/%_test$(SUFF).o: tests/%_test.mm $(RTL_HDR) $(MAKEFILE)
-	$(ASAN_CXX) $(GTEST_INCLUDE) -I. -I.. -g -c $< -O2 -o $@ -ObjC $(PIE) $(CFLAGS)
-
-RTL_COMMON_FLAGS=$(PIE) $(CFLAGS) -fPIC -c -O2 -fno-exceptions -funwind-tables \
-	   -Ithird_party -I.. -I../../include $(ASAN_FLAGS)
-
-$(BIN)/%$(SUFF).o: $(INTERCEPTION)/%.cc $(RTL_HDR) $(MAKEFILE)
-	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<
-
-$(BIN)/%$(SUFF).o: $(COMMON)/%.cc $(RTL_HDR) $(MAKEFILE)
-	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<
-
-$(BIN)/%$(SUFF).o: $(MACH_OVERRIDE)/%.c $(RTL_HDR) $(MAKEFILE)
-	$(CC) $(RTL_COMMON_FLAGS) -o $@ -g $<
-
-$(BIN)/%$(SUFF).o: %.cc $(RTL_HDR) $(MAKEFILE)
-	$(CXX) $(RTL_COMMON_FLAGS) -o $@ -g $<  \
-		-DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \
-		-DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \
-		-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=$(ASAN_FLEXIBLE_MAPPING_AND_OFFSET)
-
-$(BIN)/%$(SUFF).o: %.c $(RTL_HDR) $(MAKEFILE)
-	$(CC) $(PIE) $(CFLAGS) -fPIC -c -O2 -o $@ -g $< -Ithird_party \
-		$(ASAN_FLAGS)
-
-ifeq ($(OS),darwin)
-LD_FLAGS=-framework Foundation
-else
-LD_FLAGS=
-endif
-
-lib: $(LIBASAN_A)
-
-$(LIBASAN_A): mk_bin_dir $(LIBASAN_OBJ) $(MAKEFILE)
-	mkdir -p $(LIBASAN_INST_DIR)
-	ar ru $@ $(LIBASAN_OBJ)
-	$(CXX) -shared $(CFLAGS) $(LIBASAN_OBJ) $(LD_FLAGS) -o $(BIN)/libasan$(SUFF).so
-
-TEST_OBJECTS_COMMON=\
-	     $(BIN)/asan_globals_test$(SUFF).o \
-	     $(BIN)/asan_break_optimization$(SUFF).o \
-	     $(BIN)/asan_noinst_test$(SUFF).o \
-	     $(BIN)/asan_test$(SUFF).o
-
-BENCHMARK_OBJECTS=\
-	     $(BIN)/asan_benchmarks_test$(SUFF).o \
-	     $(BIN)/asan_break_optimization$(SUFF).o
-
-ifeq ($(OS),darwin)
-TEST_OBJECTS=$(TEST_OBJECTS_COMMON) \
-	     $(BIN)/asan_mac_test$(SUFF).o
-else
-TEST_OBJECTS=$(TEST_OBJECTS_COMMON)
-endif
-
-$(BIN)/asan_test$(SUFF): $(TEST_OBJECTS) $(LIBASAN_A) $(MAKEFILE) tests/asan_test.ignore $(GTEST_LIB)
-	$(ASAN_LD) $(PIE) $(CFLAGS) -g -O3 $(TEST_OBJECTS) \
-		$(LD_FLAGS) -o $@ $(LIBS) $(GTEST_LIB) $(ASAN_LD_TAIL)
-
-$(BIN)/asan_benchmarks$(SUFF): $(BENCHMARK_OBJECTS) $(LIBASAN_A) $(MAKEFILE) $(GTEST_LIB)
-	$(ASAN_LD) $(PIE) $(CFLAGS) -g -O3 $(BENCHMARK_OBJECTS) \
-		$(LD_FLAGS) -o $@ $(LIBS) $(GTEST_LIB) $(ASAN_LD_TAIL)
-
-asan_test: $(BIN)/asan_test$(SUFF)
-
-asan_benchmarks: $(BIN)/asan_benchmarks$(SUFF)
-
-# for now, build gtest with clang/asan even if we use a different compiler.
-$(GTEST_LIB):
-	mkdir -p $(GTEST_MAKE_DIR) && \
-	cd $(GTEST_MAKE_DIR) && \
-	$(MAKE) -f ../make/Makefile CXXFLAGS="$(PIE) $(CFLAGS) -g -w" \
-	  CXX="$(CLANG_CXX)"
-
-get_third_party:
-	rm -rf third_party
-	mkdir third_party
-	(cd third_party && \
-	svn co -r375        http://googletest.googlecode.com/svn/trunk googletest \
-	)
-
-clean:
-	rm -f *.o *.ll *.S *.a *.log asan_test64* asan_test32*  a.out perf.data log
-	rm -f $(LIBASAN_INST_DIR)/libclang_rt.asan-*.a
-	rm -rf $(BIN)
-	rm -rf $(GTEST_ROOT)/make-*

Modified: compiler-rt/trunk/lib/asan/README.txt
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/README.txt?rev=163294&r1=163293&r2=163294&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/README.txt (original)
+++ compiler-rt/trunk/lib/asan/README.txt Thu Sep  6 01:39:02 2012
@@ -4,22 +4,26 @@
 We are in the process of integrating AddressSanitizer with LLVM, stay tuned.
 
 Directory structre:
-
 README.txt       : This file.
-Makefile.mk      : Currently a stub for a proper makefile. not usable.
-Makefile.old     : Old out-of-tree makefile, the only usable one so far.
+Makefile.mk      : File for make-based build.
+CMakeLists.txt   : File for cmake-based build.
 asan_*.{cc,h}    : Sources of the asan run-time lirbary.
-mach_override/*  : Utility to override functions on Darwin (MIT License).
 scripts/*        : Helper scripts.
+tests/*          : ASan unit tests.
+lit_tests/*      : ASan output tests.
 
-Temporary build instructions (verified on linux):
+Also ASan runtime needs the following libraries:
+lib/interception/      : Machinery used to intercept function calls.
+lib/sanitizer_common/  : Code shared between ASan and TSan.
 
-cd lib/asan
-make -f Makefile.old get_third_party  # gets googletest
-make -f Makefile.old test -j 8 CLANG_BUILD=/path/to/Release+Asserts
-# Optional:
-# make -f Makefile.old install # installs clang and rt to lib/asan_clang_linux
+Currently ASan runtime can be built by both make and cmake build systems.
+(see compiler-rt/make and files Makefile.mk for make-based build and
+files CMakeLists.txt for cmake-based build).
 
-For more info see http://code.google.com/p/address-sanitizer/
+ASan unit and output tests work only with cmake. You may run this
+command from the root of your cmake build tree:
 
+make check-asan
 
+For more instructions see:
+http://code.google.com/p/address-sanitizer/wiki/HowToBuild





More information about the llvm-commits mailing list