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

Chandler Carruth chandlerc at google.com
Thu Sep 6 01:58:38 PDT 2012


On Thu, Sep 6, 2012 at 2:39 AM, Alexey Samsonov <samsonov at google.com> wrote:

> 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.
>

Wow, awesome! Any specific complaints thus far?

One I have run into is that there appears to be at least one .o file that
takes over a minute to compile with a the just-built Clang when doing a
debug+asserts build... I suspect there is some assert that is even more
expensive than is reasonable slowing everything down, but I haven't dug
into it...


>
> 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/trunkgoogletest \
> -       )
> -
> -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
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120906/90459a6d/attachment.html>


More information about the llvm-commits mailing list