svn commit: r245614 - in vendor/compiler-rt/dist: . SDKs/darwin/usr/include SDKs/linux/usr/include cmake/Modules include include/sanitizer lib lib/arm lib/asan lib/asan/dynamic lib/asan/lit_tests l...

Andrew Turner andrew at FreeBSD.org
Fri Jan 18 20:06:49 UTC 2013


Author: andrew
Date: Fri Jan 18 20:06:45 2013
New Revision: 245614
URL: http://svnweb.freebsd.org/changeset/base/245614

Log:
  Import compiler-rt r172839.

Added:
  vendor/compiler-rt/dist/.arcconfig
  vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTCompile.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake
  vendor/compiler-rt/dist/include/
  vendor/compiler-rt/dist/include/sanitizer/
  vendor/compiler-rt/dist/include/sanitizer/asan_interface.h
  vendor/compiler-rt/dist/include/sanitizer/common_interface_defs.h
  vendor/compiler-rt/dist/include/sanitizer/msan_interface.h
  vendor/compiler-rt/dist/lib/asan/asan_allocator2.cc
  vendor/compiler-rt/dist/lib/asan/asan_fake_stack.cc
  vendor/compiler-rt/dist/lib/asan/asan_intercepted_functions.h
  vendor/compiler-rt/dist/lib/asan/asan_report.cc
  vendor/compiler-rt/dist/lib/asan/asan_report.h
  vendor/compiler-rt/dist/lib/asan/dynamic/
  vendor/compiler-rt/dist/lib/asan/dynamic/Makefile.mk
  vendor/compiler-rt/dist/lib/asan/dynamic/asan_interceptors_dynamic.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/
  vendor/compiler-rt/dist/lib/asan/lit_tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/blacklist-extra.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/initialization-blacklist-extra.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/initialization-blacklist.txt
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/initialization-bug-extra.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/initialization-bug-extra2.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/initialization-nobug-extra.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Helpers/lit.local.cfg
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/clone_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/initialization-bug-any-order.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/interception_failure_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/interception_malloc_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/interception_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/lit.local.cfg
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/malloc-in-qsort.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/overflow-in-qsort.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/rlimit_mmap_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Linux/swapcontext_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/SharedLibs/
  vendor/compiler-rt/dist/lib/asan/lit_tests/SharedLibs/dlclose-test-so.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/SharedLibs/lit.local.cfg
  vendor/compiler-rt/dist/lib/asan/lit_tests/SharedLibs/shared-lib-test-so.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/Unit/
  vendor/compiler-rt/dist/lib/asan/lit_tests/Unit/lit.cfg
  vendor/compiler-rt/dist/lib/asan/lit_tests/Unit/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/asan/lit_tests/blacklist.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/deep_stack_uaf.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/deep_tail_call.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/deep_thread_stack.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/default_options.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/dlclose-test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/force_inline_opt0.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/global-overflow.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/heap-overflow.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/initialization-blacklist.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/initialization-bug.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/initialization-nobug.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/interface_symbols.c
  vendor/compiler-rt/dist/lib/asan/lit_tests/large_func_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/lit.cfg
  vendor/compiler-rt/dist/lib/asan/lit_tests/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/asan/lit_tests/log-path_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/log_path_fork_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/malloc_delete_mismatch.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/malloc_hook.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/memcmp_test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/null_deref.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/on_error_callback.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/sanity_check_pure_c.c
  vendor/compiler-rt/dist/lib/asan/lit_tests/shared-lib-test.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/sleep_before_dying.c
  vendor/compiler-rt/dist/lib/asan/lit_tests/stack-frame-demangle.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/stack-overflow.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/stack-use-after-return.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/strip_path_prefix.c
  vendor/compiler-rt/dist/lib/asan/lit_tests/strncpy-overflow.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/symbolize_callback.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/use-after-free.cc
  vendor/compiler-rt/dist/lib/asan/lit_tests/use-after-scope-inlined.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_test_main.cc
  vendor/compiler-rt/dist/lib/lit.common.cfg
  vendor/compiler-rt/dist/lib/lit.common.unit.cfg
  vendor/compiler-rt/dist/lib/msan/
  vendor/compiler-rt/dist/lib/msan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/msan/msan.cc
  vendor/compiler-rt/dist/lib/msan/msan.h
  vendor/compiler-rt/dist/lib/msan/msan_allocator.cc
  vendor/compiler-rt/dist/lib/msan/msan_flags.h
  vendor/compiler-rt/dist/lib/msan/msan_interceptors.cc
  vendor/compiler-rt/dist/lib/msan/msan_linux.cc
  vendor/compiler-rt/dist/lib/msan/msan_new_delete.cc
  vendor/compiler-rt/dist/lib/msan/msan_platform_limits_posix.cc
  vendor/compiler-rt/dist/lib/msan/msan_platform_limits_posix.h
  vendor/compiler-rt/dist/lib/msan/msan_report.cc
  vendor/compiler-rt/dist/lib/msan/tests/
  vendor/compiler-rt/dist/lib/msan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/msan/tests/lit.cfg
  vendor/compiler-rt/dist/lib/msan/tests/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc
  vendor/compiler-rt/dist/lib/msan/tests/msandr_test_so.cc
  vendor/compiler-rt/dist/lib/msan/tests/msandr_test_so.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interceptors.inc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interceptors_scanf.inc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_lfstack.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_interceptors.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_quarantine.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_report_decorator.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stackdepot.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stackdepot.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stacktrace.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_itanium.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_linux.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer_win.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/scripts/
  vendor/compiler-rt/dist/lib/sanitizer_common/scripts/check_lint.sh   (contents, props changed)
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/lit.cfg
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator_testlib.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_libc_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_mutex_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_printf_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_scanf_interceptor_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_stackdepot_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_test_main.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_test_utils.h
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/standalone_malloc_test.cc
  vendor/compiler-rt/dist/lib/tsan/check_cmake.sh   (contents, props changed)
  vendor/compiler-rt/dist/lib/tsan/lit_tests/
  vendor/compiler-rt/dist/lib/tsan/lit_tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Helpers/
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Helpers/blacklist.txt
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Helpers/lit.local.cfg
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Unit/
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Unit/lit.cfg
  vendor/compiler-rt/dist/lib/tsan/lit_tests/Unit/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/tsan/lit_tests/blacklist.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_close_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_dup_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_location.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_pipe_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_pipe_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_socket_connect_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_socket_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_socketpair_norace.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/fd_stdout_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/free_race.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/free_race2.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/global_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/heap_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/ignore_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java.h
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_alloc.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_lock.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_lock_move.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_race_move.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/java_rwlock.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/lit.cfg
  vendor/compiler-rt/dist/lib/tsan/lit_tests/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/tsan/lit_tests/memcpy_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mop_with_offset.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mop_with_offset2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutex_destroy_locked.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset1.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset3.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset4.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset5.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset6.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/mutexset7.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_on_barrier.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_on_barrier2.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_on_heap.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_on_mutex.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_on_read.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/race_with_finished_thread.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/signal_errno.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/signal_malloc.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/simple_race.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/simple_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/simple_stack.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/simple_stack2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/sleep_sync.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/sleep_sync2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/stack_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/stack_race2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init1.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init3.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init4.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init5.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/static_init6.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/suppress_same_address.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/suppress_same_stacks.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/test_output.sh   (contents, props changed)
  vendor/compiler-rt/dist/lib/tsan/lit_tests/thread_leak.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/thread_leak2.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/thread_leak3.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/thread_name.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/tiny_race.c
  vendor/compiler-rt/dist/lib/tsan/lit_tests/tls_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/tls_race2.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/user_fopen.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/user_malloc.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/virtual_inheritance_compile_bug.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/vptr_benign_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/vptr_harmful_race.cc
  vendor/compiler-rt/dist/lib/tsan/lit_tests/write_in_reader_lock.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_fd.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_fd.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_java.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_java.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutexset.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutexset.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_windows.cc
  vendor/compiler-rt/dist/lib/tsan/tests/
  vendor/compiler-rt/dist/lib/tsan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_bench.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_mop.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_mutex.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_posix.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_string.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_test_util.h
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_test_util_linux.cc
  vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_thread.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/
  vendor/compiler-rt/dist/lib/tsan/tests/unit/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_clock_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_flags_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_mman_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_mutex_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_mutexset_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_platform_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_shadow_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_stack_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_suppressions_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_sync_test.cc
  vendor/compiler-rt/dist/lib/tsan/tests/unit/tsan_vector_test.cc
  vendor/compiler-rt/dist/lib/ubsan/
  vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/ubsan/Makefile.mk
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Float/
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Float/cast-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/add-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/div-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/div-zero.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/incdec-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/mul-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/negate-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/no-recover.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/shift.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/sub-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/uadd-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/uincdec-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/umul-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Integer/usub-overflow.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/bool.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/deduplication.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/enum.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/missing_return.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/unreachable.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/Misc/vla.c
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/TypeCheck/
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/TypeCheck/misaligned.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/TypeCheck/null.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/TypeCheck/vptr.cpp
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/lit.cfg
  vendor/compiler-rt/dist/lib/ubsan/lit_tests/lit.site.cfg.in
  vendor/compiler-rt/dist/lib/ubsan/ubsan_diag.cc
  vendor/compiler-rt/dist/lib/ubsan/ubsan_diag.h
  vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers.cc
  vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers.h
  vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers_cxx.cc
  vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers_cxx.h
  vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash.cc
  vendor/compiler-rt/dist/lib/ubsan/ubsan_type_hash.h
  vendor/compiler-rt/dist/lib/ubsan/ubsan_value.cc
  vendor/compiler-rt/dist/lib/ubsan/ubsan_value.h
  vendor/compiler-rt/dist/make/platform/clang_linux_test_input.c
Deleted:
  vendor/compiler-rt/dist/lib/asan/Makefile.old
  vendor/compiler-rt/dist/lib/asan/asan_interface.h
  vendor/compiler-rt/dist/lib/asan/asan_printf.cc
  vendor/compiler-rt/dist/lib/asan/output_tests/
  vendor/compiler-rt/dist/lib/asan/tests/asan_break_optimization.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator64.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_interface_defs.h
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator64_testlib.cc
  vendor/compiler-rt/dist/lib/tsan/output_tests/
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_printf.cc
  vendor/compiler-rt/dist/lib/tsan/rtl_tests/
  vendor/compiler-rt/dist/lib/tsan/unit_tests/
Modified:
  vendor/compiler-rt/dist/CMakeLists.txt
  vendor/compiler-rt/dist/LICENSE.TXT
  vendor/compiler-rt/dist/Makefile
  vendor/compiler-rt/dist/SDKs/darwin/usr/include/stdio.h
  vendor/compiler-rt/dist/SDKs/linux/usr/include/stdio.h
  vendor/compiler-rt/dist/lib/CMakeLists.txt
  vendor/compiler-rt/dist/lib/Makefile.mk
  vendor/compiler-rt/dist/lib/arm/Makefile.mk
  vendor/compiler-rt/dist/lib/arm/divsi3.S
  vendor/compiler-rt/dist/lib/arm/udivsi3.S
  vendor/compiler-rt/dist/lib/asan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/asan/Makefile.mk
  vendor/compiler-rt/dist/lib/asan/README.txt
  vendor/compiler-rt/dist/lib/asan/asan_allocator.cc
  vendor/compiler-rt/dist/lib/asan/asan_allocator.h
  vendor/compiler-rt/dist/lib/asan/asan_flags.h
  vendor/compiler-rt/dist/lib/asan/asan_globals.cc
  vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc
  vendor/compiler-rt/dist/lib/asan/asan_interceptors.h
  vendor/compiler-rt/dist/lib/asan/asan_internal.h
  vendor/compiler-rt/dist/lib/asan/asan_linux.cc
  vendor/compiler-rt/dist/lib/asan/asan_lock.h
  vendor/compiler-rt/dist/lib/asan/asan_mac.cc
  vendor/compiler-rt/dist/lib/asan/asan_mac.h
  vendor/compiler-rt/dist/lib/asan/asan_malloc_linux.cc
  vendor/compiler-rt/dist/lib/asan/asan_malloc_mac.cc
  vendor/compiler-rt/dist/lib/asan/asan_malloc_win.cc
  vendor/compiler-rt/dist/lib/asan/asan_mapping.h
  vendor/compiler-rt/dist/lib/asan/asan_new_delete.cc
  vendor/compiler-rt/dist/lib/asan/asan_poisoning.cc
  vendor/compiler-rt/dist/lib/asan/asan_posix.cc
  vendor/compiler-rt/dist/lib/asan/asan_rtl.cc
  vendor/compiler-rt/dist/lib/asan/asan_stack.cc
  vendor/compiler-rt/dist/lib/asan/asan_stack.h
  vendor/compiler-rt/dist/lib/asan/asan_stats.cc
  vendor/compiler-rt/dist/lib/asan/asan_stats.h
  vendor/compiler-rt/dist/lib/asan/asan_thread.cc
  vendor/compiler-rt/dist/lib/asan/asan_thread.h
  vendor/compiler-rt/dist/lib/asan/asan_thread_registry.cc
  vendor/compiler-rt/dist/lib/asan/asan_thread_registry.h
  vendor/compiler-rt/dist/lib/asan/asan_win.cc
  vendor/compiler-rt/dist/lib/asan/scripts/asan_symbolize.py
  vendor/compiler-rt/dist/lib/asan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/asan/tests/asan_benchmarks_test.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_globals_test.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_mac_test.mm
  vendor/compiler-rt/dist/lib/asan/tests/asan_noinst_test.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_test.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_test.ignore
  vendor/compiler-rt/dist/lib/asan/tests/asan_test_config.h
  vendor/compiler-rt/dist/lib/asan/tests/asan_test_utils.h
  vendor/compiler-rt/dist/lib/cmpdi2.c
  vendor/compiler-rt/dist/lib/fixsfdi.c
  vendor/compiler-rt/dist/lib/int_endianness.h
  vendor/compiler-rt/dist/lib/interception/CMakeLists.txt
  vendor/compiler-rt/dist/lib/interception/interception.h
  vendor/compiler-rt/dist/lib/interception/interception_linux.cc
  vendor/compiler-rt/dist/lib/interception/interception_linux.h
  vendor/compiler-rt/dist/lib/interception/interception_mac.cc
  vendor/compiler-rt/dist/lib/interception/interception_mac.h
  vendor/compiler-rt/dist/lib/interception/interception_win.cc
  vendor/compiler-rt/dist/lib/interception/interception_win.h
  vendor/compiler-rt/dist/lib/interception/mach_override/mach_override.c
  vendor/compiler-rt/dist/lib/profile/GCDAProfiling.c
  vendor/compiler-rt/dist/lib/sanitizer_common/CMakeLists.txt
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_atomic_clang.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_atomic_msvc.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_internal_defs.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libc.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libc.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_list.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mac.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_mutex.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_placement_new.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_posix.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_printf.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_symbolizer.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_win.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_common_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_flags_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_list_test.cc
  vendor/compiler-rt/dist/lib/tsan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/Makefile.old
  vendor/compiler-rt/dist/lib/tsan/go/buildgo.sh
  vendor/compiler-rt/dist/lib/tsan/go/test.c
  vendor/compiler-rt/dist/lib/tsan/go/tsan_go.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/Makefile.mk
  vendor/compiler-rt/dist/lib/tsan/rtl/Makefile.old
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_clock.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_clock.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_defs.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_flags.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_flags.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_ann.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_ann.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_atomic.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_atomic.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_inl.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mman.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mman.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutex.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_mutex.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_linux.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_mac.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_report.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_report.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_amd64.S
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_mutex.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_report.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_thread.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stat.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_stat.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_suppressions.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_suppressions.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_symbolize.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_symbolize.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_symbolize_addr2line_linux.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_sync.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_sync.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_trace.h
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_update_shadow_word_inl.h
  vendor/compiler-rt/dist/lib/ucmpdi2.c
  vendor/compiler-rt/dist/make/AppleBI.mk
  vendor/compiler-rt/dist/make/config.mk
  vendor/compiler-rt/dist/make/lib_info.mk
  vendor/compiler-rt/dist/make/options.mk
  vendor/compiler-rt/dist/make/platform/clang_darwin.mk
  vendor/compiler-rt/dist/make/platform/clang_linux.mk
  vendor/compiler-rt/dist/make/platform/darwin_bni.mk
  vendor/compiler-rt/dist/test/Unit/endianness.h

Added: vendor/compiler-rt/dist/.arcconfig
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/.arcconfig	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,4 @@
+{
+  "project_id" : "compiler-rt",
+  "conduit_uri" : "http://llvm-reviews.chandlerc.com/"
+}

Modified: vendor/compiler-rt/dist/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/CMakeLists.txt	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/CMakeLists.txt	Fri Jan 18 20:06:45 2013	(r245614)
@@ -15,49 +15,157 @@ include(LLVMParseArguments)
 # runtime libraries.
 cmake_minimum_required(VERSION 2.8.8)
 
-# FIXME: Below we assume that the target build of LLVM/Clang is x86, which is
-# not at all valid. Much of this can be fixed just by switching to use
-# a just-built-clang binary for the compiles.
+# Add path for custom modules
+set(CMAKE_MODULE_PATH
+  ${CMAKE_MODULE_PATH}
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules"
+  )
+include(AddCompilerRT)
+
+set(COMPILER_RT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 
 # Detect whether the current target platform is 32-bit or 64-bit, and setup
 # the correct commandline flags needed to attempt to target 32-bit and 64-bit.
-if(CMAKE_SIZEOF_VOID_P EQUAL 4)
-  set(TARGET_X86_64_CFLAGS "-m64")
-  set(TARGET_I386_CFLAGS "")
+if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR LLVM_BUILD_32_BITS)
+  set(TARGET_64_BIT_CFLAGS "-m64")
+  set(TARGET_32_BIT_CFLAGS "")
 else()
   if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
     message(FATAL_ERROR "Please use a sane architecture with 4 or 8 byte pointers.")
   endif()
-  set(TARGET_X86_64_CFLAGS "")
-  set(TARGET_I386_CFLAGS "-m32")
+  set(TARGET_64_BIT_CFLAGS "")
+  set(TARGET_32_BIT_CFLAGS "-m32")
 endif()
 
+# FIXME: Below we assume that the target build of LLVM/Clang is x86, which is
+# not at all valid. Much of this can be fixed just by switching to use
+# a just-built-clang binary for the compiles.
+
+set(TARGET_x86_64_CFLAGS ${TARGET_64_BIT_CFLAGS})
+set(TARGET_i386_CFLAGS ${TARGET_32_BIT_CFLAGS})
+
+set(COMPILER_RT_SUPPORTED_ARCH
+  x86_64 i386)
+
+function(get_target_flags_for_arch arch out_var)
+  list(FIND COMPILER_RT_SUPPORTED_ARCH ${arch} ARCH_INDEX)
+  if(ARCH_INDEX EQUAL -1)
+    message(FATAL_ERROR "Unsupported architecture: ${arch}")
+  else()
+    set(${out_var} ${TARGET_${arch}_CFLAGS} PARENT_SCOPE)
+  endif()
+endfunction()
+
 # Try to compile a very simple source file to ensure we can target the given
 # platform. We use the results of these tests to build only the various target
 # runtime libraries supported by our current compilers cross-compiling
 # abilities.
 set(SIMPLE_SOURCE64 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple64.c)
 file(WRITE ${SIMPLE_SOURCE64} "#include <stdlib.h>\nint main() {}")
-try_compile(CAN_TARGET_X86_64 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE64}
-            COMPILE_DEFINITIONS "${TARGET_X86_64_CFLAGS}"
-            CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_X86_64_CFLAGS}")
+try_compile(CAN_TARGET_x86_64 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE64}
+            COMPILE_DEFINITIONS "${TARGET_x86_64_CFLAGS}"
+            CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_x86_64_CFLAGS}")
 
 set(SIMPLE_SOURCE32 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple32.c)
 file(WRITE ${SIMPLE_SOURCE32} "#include <stdlib.h>\nint main() {}")
-try_compile(CAN_TARGET_I386 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE32}
-            COMPILE_DEFINITIONS "${TARGET_I386_CFLAGS}"
-            CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_I386_CFLAGS}")
-
-# Because compiler-rt spends a lot of time setting up custom compile flags,
-# define a handy helper function for it. The compile flags setting in CMake
-# has serious issues that make its syntax challenging at best.
-function(set_target_compile_flags target)
-  foreach(arg ${ARGN})
-    set(argstring "${argstring} ${arg}")
+try_compile(CAN_TARGET_i386 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE32}
+            COMPILE_DEFINITIONS "${TARGET_i386_CFLAGS}"
+            CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_i386_CFLAGS}")
+
+# We only support running instrumented tests when we're not cross compiling
+# and target a unix-like system. On Android we define the rules for building
+# unit tests, but don't execute them.
+if("${CMAKE_HOST_SYSTEM}" STREQUAL "${CMAKE_SYSTEM}" AND UNIX AND NOT ANDROID)
+  set(COMPILER_RT_CAN_EXECUTE_TESTS TRUE)
+else()
+  set(COMPILER_RT_CAN_EXECUTE_TESTS FALSE)
+endif()
+    
+function(filter_available_targets out_var)
+  set(archs)
+  foreach(arch ${ARGN})
+    list(FIND COMPILER_RT_SUPPORTED_ARCH ${arch} ARCH_INDEX)
+    if(NOT (ARCH_INDEX EQUAL -1) AND CAN_TARGET_${arch})
+      list(APPEND archs ${arch})
+    endif()
   endforeach()
-  set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}")
+  set(${out_var} ${archs} PARENT_SCOPE)
 endfunction()
 
+# Provide some common commmandline flags for Sanitizer runtimes.
+set(SANITIZER_COMMON_CFLAGS
+  -fPIC
+  -fno-builtin
+  -fno-exceptions
+  -fomit-frame-pointer
+  -funwind-tables
+  -O3
+  )
+if(NOT WIN32)
+  list(APPEND SANITIZER_COMMON_CFLAGS -fvisibility=hidden)
+endif()
+# Build sanitizer runtimes with debug info.
+check_cxx_compiler_flag(-gline-tables-only SUPPORTS_GLINE_TABLES_ONLY_FLAG)
+if(SUPPORTS_GLINE_TABLES_ONLY_FLAG)
+  list(APPEND SANITIZER_COMMON_CFLAGS -gline-tables-only)
+else()
+  list(APPEND SANITIZER_COMMON_CFLAGS -g)
+endif()
+# Warnings suppressions.
+check_cxx_compiler_flag(-Wno-variadic-macros SUPPORTS_NO_VARIADIC_MACROS_FLAG)
+if(SUPPORTS_NO_VARIADIC_MACROS_FLAG)
+  list(APPEND SANITIZER_COMMON_CFLAGS -Wno-variadic-macros)
+endif()
+check_cxx_compiler_flag(-Wno-c99-extensions SUPPORTS_NO_C99_EXTENSIONS_FLAG)
+if(SUPPORTS_NO_C99_EXTENSIONS_FLAG)
+  list(APPEND SANITIZER_COMMON_CFLAGS -Wno-c99-extensions)
+endif()
+if(APPLE)
+  list(APPEND SANITIZER_COMMON_CFLAGS -mmacosx-version-min=10.5)
+endif()
+
+# Architectures supported by Sanitizer runtimes. Specific sanitizers may
+# support only subset of these (e.g. TSan works on x86_64 only).
+filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
+  x86_64 i386)
+
+# Compute the Clang version from the LLVM version.
+# FIXME: We should be able to reuse CLANG_VERSION variable calculated
+#        in Clang cmake files, instead of copying the rules here.
+string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
+       ${PACKAGE_VERSION})
+# Setup the paths where compiler-rt runtimes and headers should be stored.
+set(LIBCLANG_INSTALL_PATH lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})
+string(TOLOWER ${CMAKE_SYSTEM_NAME} LIBCLANG_OS_DIR)
+
+# Install compiler-rt headers.
+install(DIRECTORY include/
+  DESTINATION ${LIBCLANG_INSTALL_PATH}/include
+  FILES_MATCHING
+  PATTERN "*.h"
+  PATTERN ".svn" EXCLUDE
+  )
+
+# Call add_clang_compiler_rt_libraries to make sure that targets are built
+# and installed in the directories where Clang driver expects to find them.
+macro(add_clang_compiler_rt_libraries)
+  # Setup output directories so that clang in build tree works.
+  set_target_properties(${ARGN} PROPERTIES
+    ARCHIVE_OUTPUT_DIRECTORY
+      ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/${LIBCLANG_OS_DIR}
+    LIBRARY_OUTPUT_DIRECTORY
+      ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/${LIBCLANG_OS_DIR}
+    )
+  # Add installation command.
+  install(TARGETS ${ARGN}
+    ARCHIVE DESTINATION ${LIBCLANG_INSTALL_PATH}/lib/${LIBCLANG_OS_DIR}
+    LIBRARY DESTINATION ${LIBCLANG_INSTALL_PATH}/lib/${LIBCLANG_OS_DIR}
+    )
+endmacro(add_clang_compiler_rt_libraries)
+
+# Add the public header's directory to the includes for all of compiler-rt.
+include_directories(include)
+
 add_subdirectory(lib)
 
 if(LLVM_INCLUDE_TESTS)

Modified: vendor/compiler-rt/dist/LICENSE.TXT
==============================================================================
--- vendor/compiler-rt/dist/LICENSE.TXT	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/LICENSE.TXT	Fri Jan 18 20:06:45 2013	(r245614)
@@ -14,7 +14,7 @@ Full text of the relevant licenses is in
 University of Illinois/NCSA
 Open Source License
 
-Copyright (c) 2009-2012 by the contributors listed in CREDITS.TXT
+Copyright (c) 2009-2013 by the contributors listed in CREDITS.TXT
 
 All rights reserved.
 
@@ -55,7 +55,7 @@ SOFTWARE.
 
 ==============================================================================
 
-Copyright (c) 2009-2012 by the contributors listed in CREDITS.TXT
+Copyright (c) 2009-2013 by the contributors listed in CREDITS.TXT
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal

Modified: vendor/compiler-rt/dist/Makefile
==============================================================================
--- vendor/compiler-rt/dist/Makefile	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/Makefile	Fri Jan 18 20:06:45 2013	(r245614)
@@ -92,7 +92,7 @@ test:
 %/.dir:
 	$(Summary) "  MKDIR:     $*"
 	$(Verb) $(MKDIR) $* > /dev/null
-	$(Verb) $(DATE) > $@
+	$(Verb) echo 'Created.' > $@
 
 # Remove directories
 %/.remove:
@@ -117,7 +117,7 @@ $(call Set,Tmp.Configs,$($(Tmp.Key).Conf
 $(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name))
 
 # Top-Level Platform Target
-$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.ObjPath)/%/libcompiler_rt.a)
+$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.Name)-%)
 .PHONY: $(Tmp.Name)
 
 clean::
@@ -131,6 +131,15 @@ endef
 define PerPlatformConfig_template
 $(call Set,Tmp.Config,$(1))
 $(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config))
+$(call Set,Tmp.SHARED_LIBRARY,$(strip \
+  $(call GetCNAVar,SHARED_LIBRARY,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.SHARED_LIBRARY_SUFFIX,$(strip \
+  $(call GetCNAVar,SHARED_LIBRARY_SUFFIX,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+
+# Compute the library suffix.
+$(if $(call streq,1,$(Tmp.SHARED_LIBRARY)),
+  $(call Set,Tmp.LibrarySuffix,$(Tmp.SHARED_LIBRARY_SUFFIX)),
+  $(call Set,Tmp.LibrarySuffix,a))
 
 # Compute the archs to build, depending on whether this is a universal build or
 # not.
@@ -142,8 +151,8 @@ $(call Set,Tmp.ArchsToBuild,\
        $(call VarOrDefault,$(Tmp.Key).Arch.$(Tmp.Config),$($(Tmp.Key).Arch))))
 
 # Copy or lipo to create the per-config library.
-$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.a))
-$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
+$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.$(Tmp.LibrarySuffix)))
+$(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix): $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
 	$(Summary) "  FINAL-ARCHIVE: $(Tmp.Name)/$(Tmp.Config): $$@"
 	-$(Verb) $(RM) $$@
 	$(if $(call streq,1,$(words $(Tmp.ArchsToBuild))), \
@@ -152,7 +161,7 @@ $(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.I
 .PRECIOUS: $(Tmp.ObjPath)/.dir
 
 # Per-Config Targets
-$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.a
+$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix)
 .PHONY: $(Tmp.Name)-$(Tmp.Config)
 
 # Per-Config-Arch Libraries
@@ -172,10 +181,21 @@ $(call Set,Tmp.AR,$(strip \
   $(call GetCNAVar,AR,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.ARFLAGS,$(strip \
   $(call GetCNAVar,ARFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.CC,$(strip \
+  $(call GetCNAVar,CC,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.LDFLAGS,$(strip \
+  $(call GetCNAVar,LDFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.RANLIB,$(strip \
   $(call GetCNAVar,RANLIB,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.RANLIBFLAGS,$(strip \
   $(call GetCNAVar,RANLIBFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.SHARED_LIBRARY,$(strip \
+  $(call GetCNAVar,SHARED_LIBRARY,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+
+# Compute the library suffix.
+$(if $(call streq,1,$(Tmp.SHARED_LIBRARY)),
+  $(call Set,Tmp.LibrarySuffix,$(Tmp.SHARED_LIBRARY_SUFFIX)),
+  $(call Set,Tmp.LibrarySuffix,a))
 
 # Compute the object inputs for this library.
 $(call Set,Tmp.Inputs,\
@@ -188,10 +208,18 @@ $(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.I
 	-$(Verb) $(RM) $$@
 	$(Verb) $(Tmp.AR) $(Tmp.ARFLAGS) $$@ $(Tmp.Inputs)
 	$(Verb) $(Tmp.RANLIB) $(Tmp.RANLIBFLAGS) $$@
+$(Tmp.ObjPath)/libcompiler_rt.dylib: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
+	$(Summary) "  DYLIB:   $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$@"
+	$(Verb) $(Tmp.CC) -arch $(Tmp.Arch) -dynamiclib -o $$@ \
+	  $(Tmp.Inputs) $(Tmp.LDFLAGS)
+$(Tmp.ObjPath)/libcompiler_rt.so: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
+	$(Summary) "  SO:   $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$@"
+	$(Verb) $(Tmp.CC) -shared -o $$@ \
+	  $(Tmp.Inputs) $(Tmp.LDFLAGS)
 .PRECIOUS: $(Tmp.ObjPath)/.dir
 
 # Per-Config-Arch Targets
-$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.a
+$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix)
 .PHONY: $(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch)
 
 # Per-Config-Arch-SubDir Objects

Modified: vendor/compiler-rt/dist/SDKs/darwin/usr/include/stdio.h
==============================================================================
--- vendor/compiler-rt/dist/SDKs/darwin/usr/include/stdio.h	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/SDKs/darwin/usr/include/stdio.h	Fri Jan 18 20:06:45 2013	(r245614)
@@ -17,6 +17,10 @@
 #ifndef __STDIO_H__
 #define __STDIO_H__
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 typedef struct __sFILE FILE;
 typedef __SIZE_TYPE__ size_t;
 
@@ -51,11 +55,30 @@ typedef __SIZE_TYPE__ size_t;
 #    define stderr __stderrp
 extern FILE *__stderrp;
 
+#ifndef SEEK_SET
+#define	SEEK_SET	0	/* set file offset to offset */
+#endif
+#ifndef SEEK_CUR
+#define	SEEK_CUR	1	/* set file offset to current plus offset */
+#endif
+#ifndef SEEK_END
+#define	SEEK_END	2	/* set file offset to EOF plus offset */
+#endif
+
 int fclose(FILE *);
 int fflush(FILE *);
-FILE *fopen(const char * restrict, const char * restrict) __asm(__FOPEN_NAME);
-int fprintf(FILE * restrict, const char * restrict, ...);
-size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict)
+FILE *fopen(const char * __restrict, const char * __restrict) __asm(__FOPEN_NAME);
+int fprintf(FILE * __restrict, const char * __restrict, ...);
+size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict)
   __asm(__FWRITE_NAME);
+size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
+long ftell(FILE *);
+int fseek(FILE *, long, int);
+
+int snprintf(char * __restrict, size_t, const char * __restrict, ...);
+
+#if defined(__cplusplus)
+}
+#endif
 
 #endif /* __STDIO_H__ */

Modified: vendor/compiler-rt/dist/SDKs/linux/usr/include/stdio.h
==============================================================================
--- vendor/compiler-rt/dist/SDKs/linux/usr/include/stdio.h	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/SDKs/linux/usr/include/stdio.h	Fri Jan 18 20:06:45 2013	(r245614)
@@ -26,10 +26,17 @@ extern struct _IO_FILE *stdin;
 extern struct _IO_FILE *stdout;
 extern struct _IO_FILE *stderr;
 
+#define	SEEK_SET	0	/* set file offset to offset */
+#define	SEEK_CUR	1	/* set file offset to current plus offset */
+#define	SEEK_END	2	/* set file offset to EOF plus offset */
+
 extern int fclose(FILE *);
 extern int fflush(FILE *);
 extern FILE *fopen(const char * restrict, const char * restrict);
 extern int fprintf(FILE * restrict, const char * restrict, ...);
 extern size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict);
+extern size_t fread(void * restrict, size_t, size_t, FILE * restrict);
+extern long ftell(FILE *);
+extern int fseek(FILE *, long, int);
 
 #endif /* __STDIO_H__ */

Added: vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,49 @@
+include(AddLLVM)
+include(LLVMParseArguments)
+include(CompilerRTUtils)
+
+# Tries to add "object library" target for a given architecture
+# with name "<name>.<arch>" if architecture can be targeted.
+# add_compiler_rt_object_library(<name> <arch>
+#                                SOURCES <source files>
+#                                CFLAGS <compile flags>)
+macro(add_compiler_rt_object_library name arch)
+  if(CAN_TARGET_${arch})
+    parse_arguments(LIB "SOURCES;CFLAGS" "" ${ARGN})
+    add_library(${name}.${arch} OBJECT ${LIB_SOURCES})
+    set_target_compile_flags(${name}.${arch}
+      ${TARGET_${arch}_CFLAGS} ${LIB_CFLAGS})
+  else()
+    message(FATAL_ERROR "Archtecture ${arch} can't be targeted")
+  endif()
+endmacro()
+
+# Unittests support.
+set(COMPILER_RT_GTEST_PATH ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest)
+set(COMPILER_RT_GTEST_SOURCE ${COMPILER_RT_GTEST_PATH}/gtest-all.cc)
+set(COMPILER_RT_GTEST_INCLUDE_CFLAGS
+  -DGTEST_NO_LLVM_RAW_OSTREAM=1
+  -I${COMPILER_RT_GTEST_PATH}/include
+)
+
+# Use Clang to link objects into a single executable with just-built
+# Clang, using specific link flags. Make executable a part of provided
+# test_suite.
+# add_compiler_rt_test(<test_suite> <test_name>
+#                      OBJECTS <object files>
+#                      DEPS <deps (e.g. runtime libs)>
+#                      LINK_FLAGS <link flags>)
+macro(add_compiler_rt_test test_suite test_name)
+  parse_arguments(TEST "OBJECTS;DEPS;LINK_FLAGS" "" ${ARGN})
+  get_unittest_directory(OUTPUT_DIR)
+  file(MAKE_DIRECTORY ${OUTPUT_DIR})
+  set(output_bin "${OUTPUT_DIR}/${test_name}")
+  add_custom_command(
+    OUTPUT ${output_bin}
+    COMMAND clang ${TEST_OBJECTS} -o "${output_bin}"
+            ${TEST_LINK_FLAGS}
+    DEPENDS clang ${TEST_DEPS})
+  add_custom_target(${test_name} DEPENDS ${output_bin})
+  # Make the test suite depend on the binary.
+  add_dependencies(${test_suite} ${test_name})
+endmacro()

Added: vendor/compiler-rt/dist/cmake/Modules/CompilerRTCompile.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTCompile.cmake	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,16 @@
+include(LLVMParseArguments)
+
+# Compile a source into an object file with just-built Clang using
+# a provided compile flags and dependenices.
+# clang_compile(<object> <source>
+#               CFLAGS <list of compile flags>
+#               DEPS <list of dependencies>)
+macro(clang_compile object_file source)
+  parse_arguments(SOURCE "CFLAGS;DEPS" "" ${ARGN})
+  get_filename_component(source_rpath ${source} REALPATH)
+  add_custom_command(
+    OUTPUT ${object_file}
+    COMMAND clang ${SOURCE_CFLAGS} -c -o "${object_file}" ${source_rpath}
+    MAIN_DEPENDENCY ${source}
+    DEPENDS clang ${SOURCE_DEPS})
+endmacro()

Added: vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,14 @@
+include(LLVMParseArguments)
+
+# Link a shared library with just-built Clang.
+# clang_link_shared(<output.so>
+#                   OBJECTS <list of input objects>
+#                   LINKFLAGS <list of link flags>
+#                   DEPS <list of dependencies>)
+macro(clang_link_shared so_file)
+  parse_arguments(SOURCE "OBJECTS;LINKFLAGS;DEPS" "" ${ARGN})
+  add_custom_command(
+    OUTPUT ${so_file}
+    COMMAND clang -o "${so_file}" -shared ${SOURCE_LINKFLAGS} ${SOURCE_OBJECTS}
+    DEPENDS clang ${SOURCE_DEPS})
+endmacro()

Added: vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,17 @@
+# Because compiler-rt spends a lot of time setting up custom compile flags,
+# define a handy helper function for it. The compile flags setting in CMake
+# has serious issues that make its syntax challenging at best.
+function(set_target_compile_flags target)
+  foreach(arg ${ARGN})
+    set(argstring "${argstring} ${arg}")
+  endforeach()
+  set_property(TARGET ${target} PROPERTY COMPILE_FLAGS "${argstring}")
+endfunction()
+
+function(set_target_link_flags target)
+  foreach(arg ${ARGN})
+    set(argstring "${argstring} ${arg}")
+  endforeach()
+  set_property(TARGET ${target} PROPERTY LINK_FLAGS "${argstring}")
+endfunction()
+

Added: vendor/compiler-rt/dist/include/sanitizer/asan_interface.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/include/sanitizer/asan_interface.h	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,212 @@
+//===-- sanitizer/asan_interface.h ------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of AddressSanitizer, an address sanity checker.
+//
+// This header can be included by the instrumented program to fetch
+// data (mostly allocator statistics) from ASan runtime library.
+//===----------------------------------------------------------------------===//
+#ifndef SANITIZER_ASAN_INTERFACE_H
+#define SANITIZER_ASAN_INTERFACE_H
+
+#include <sanitizer/common_interface_defs.h>
+
+// ----------- ATTENTION -------------
+// This header should NOT include any other headers from ASan runtime.
+// All functions in this header are extern "C" and start with __asan_.
+
+using __sanitizer::uptr;
+
+extern "C" {
+  // This function should be called at the very beginning of the process,
+  // before any instrumented code is executed and before any call to malloc.
+  void __asan_init() SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // This structure describes an instrumented global variable.
+  struct __asan_global {
+    uptr beg;                // The address of the global.
+    uptr size;               // The original size of the global.
+    uptr size_with_redzone;  // The size with the redzone.
+    const char *name;        // Name as a C string.
+    uptr has_dynamic_init;   // Non-zero if the global has dynamic initializer.
+  };
+
+  // These two functions should be called by the instrumented code.
+  // 'globals' is an array of structures describing 'n' globals.
+  void __asan_register_globals(__asan_global *globals, uptr n)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  void __asan_unregister_globals(__asan_global *globals, uptr n)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // These two functions should be called before and after dynamic initializers
+  // run, respectively.  They should be called with parameters describing all
+  // dynamically initialized globals defined in the calling TU.
+  void __asan_before_dynamic_init(uptr first_addr, uptr last_addr)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  void __asan_after_dynamic_init()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // These two functions are used by the instrumented code in the
+  // use-after-return mode. __asan_stack_malloc allocates size bytes of
+  // fake stack and __asan_stack_free poisons it. real_stack is a pointer to
+  // the real stack region.
+  uptr __asan_stack_malloc(uptr size, uptr real_stack)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  void __asan_stack_free(uptr ptr, uptr size, uptr real_stack)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // These two functions are used by instrumented code in the
+  // use-after-scope mode. They mark memory for local variables as
+  // unaddressable when they leave scope and addressable before the
+  // function exits.
+  void __asan_poison_stack_memory(uptr addr, uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  void __asan_unpoison_stack_memory(uptr addr, uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Marks memory region [addr, addr+size) as unaddressable.
+  // This memory must be previously allocated by the user program. Accessing
+  // addresses in this region from instrumented code is forbidden until
+  // this region is unpoisoned. This function is not guaranteed to poison
+  // the whole region - it may poison only subregion of [addr, addr+size) due
+  // to ASan alignment restrictions.
+  // Method is NOT thread-safe in the sense that no two threads can
+  // (un)poison memory in the same memory region simultaneously.
+  void __asan_poison_memory_region(void const volatile *addr, uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Marks memory region [addr, addr+size) as addressable.
+  // This memory must be previously allocated by the user program. Accessing
+  // addresses in this region is allowed until this region is poisoned again.
+  // This function may unpoison a superregion of [addr, addr+size) due to
+  // ASan alignment restrictions.
+  // Method is NOT thread-safe in the sense that no two threads can
+  // (un)poison memory in the same memory region simultaneously.
+  void __asan_unpoison_memory_region(void const volatile *addr, uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Performs cleanup before a NoReturn function. Must be called before things
+  // like _exit and execl to avoid false positives on stack.
+  void __asan_handle_no_return() SANITIZER_INTERFACE_ATTRIBUTE;
+
+// User code should use macro instead of functions.
+#if __has_feature(address_sanitizer)
+#define ASAN_POISON_MEMORY_REGION(addr, size) \
+  __asan_poison_memory_region((addr), (size))
+#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
+  __asan_unpoison_memory_region((addr), (size))
+#else
+#define ASAN_POISON_MEMORY_REGION(addr, size) \
+  ((void)(addr), (void)(size))
+#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
+  ((void)(addr), (void)(size))
+#endif
+
+  // Returns true iff addr is poisoned (i.e. 1-byte read/write access to this
+  // address will result in error report from AddressSanitizer).
+  bool __asan_address_is_poisoned(void const volatile *addr)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // If at least on byte in [beg, beg+size) is poisoned, return the address
+  // of the first such byte. Otherwise return 0.
+  uptr __asan_region_is_poisoned(uptr beg, uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Print the description of addr (useful when debugging in gdb).
+  void __asan_describe_address(uptr addr)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // This is an internal function that is called to report an error.
+  // However it is still a part of the interface because users may want to
+  // set a breakpoint on this function in a debugger.
+  void __asan_report_error(uptr pc, uptr bp, uptr sp,
+                           uptr addr, bool is_write, uptr access_size)
+    SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Sets the exit code to use when reporting an error.
+  // Returns the old value.
+  int __asan_set_error_exit_code(int exit_code)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Sets the callback to be called right before death on error.
+  // Passing 0 will unset the callback.
+  void __asan_set_death_callback(void (*callback)(void))
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  void __asan_set_error_report_callback(void (*callback)(const char*))
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // User may provide function that would be called right when ASan detects
+  // an error. This can be used to notice cases when ASan detects an error, but
+  // the program crashes before ASan report is printed.
+  /* OPTIONAL */ void __asan_on_error()
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // User may provide its own implementation for symbolization function.
+  // It should print the description of instruction at address "pc" to
+  // "out_buffer". Description should be at most "out_size" bytes long.
+  // User-specified function should return true if symbolization was
+  // successful.
+  /* OPTIONAL */ bool __asan_symbolize(const void *pc, char *out_buffer,
+                                       int out_size)
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Returns the estimated number of bytes that will be reserved by allocator
+  // for request of "size" bytes. If ASan allocator can't allocate that much
+  // memory, returns the maximal possible allocation size, otherwise returns
+  // "size".
+  uptr __asan_get_estimated_allocated_size(uptr size)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Returns true if p was returned by the ASan allocator and
+  // is not yet freed.
+  bool __asan_get_ownership(const void *p)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Returns the number of bytes reserved for the pointer p.
+  // Requires (get_ownership(p) == true) or (p == 0).
+  uptr __asan_get_allocated_size(const void *p)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Number of bytes, allocated and not yet freed by the application.
+  uptr __asan_get_current_allocated_bytes()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Number of bytes, mmaped by asan allocator to fulfill allocation requests.
+  // Generally, for request of X bytes, allocator can reserve and add to free
+  // lists a large number of chunks of size X to use them for future requests.
+  // All these chunks count toward the heap size. Currently, allocator never
+  // releases memory to OS (instead, it just puts freed chunks to free lists).
+  uptr __asan_get_heap_size()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Number of bytes, mmaped by asan allocator, which can be used to fulfill
+  // allocation requests. When a user program frees memory chunk, it can first
+  // fall into quarantine and will count toward __asan_get_free_bytes() later.
+  uptr __asan_get_free_bytes()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Number of bytes in unmapped pages, that are released to OS. Currently,
+  // always returns 0.
+  uptr __asan_get_unmapped_bytes()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+  // Prints accumulated stats to stderr. Used for debugging.
+  void __asan_print_accumulated_stats()
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // This function may be optionally provided by user and should return
+  // a string containing ASan runtime options. See asan_flags.h for details.
+  /* OPTIONAL */ const char* __asan_default_options()
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Malloc hooks that may be optionally provided by user.
+  // __asan_malloc_hook(ptr, size) is called immediately after
+  //   allocation of "size" bytes, which returned "ptr".
+  // __asan_free_hook(ptr) is called immediately before
+  //   deallocation of "ptr".
+  /* OPTIONAL */ void __asan_malloc_hook(void *ptr, uptr size)
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+  /* OPTIONAL */ void __asan_free_hook(void *ptr)
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+}  // extern "C"
+
+#endif  // SANITIZER_ASAN_INTERFACE_H

Added: vendor/compiler-rt/dist/include/sanitizer/common_interface_defs.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/include/sanitizer/common_interface_defs.h	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,92 @@
+//===-- sanitizer/common_interface_defs.h -----------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is shared between AddressSanitizer and ThreadSanitizer.
+// It contains basic macro and types.
+// NOTE: This file may be included into user code.
+//===----------------------------------------------------------------------===//
+
+#ifndef SANITIZER_COMMON_INTERFACE_DEFS_H
+#define SANITIZER_COMMON_INTERFACE_DEFS_H
+
+// ----------- ATTENTION -------------
+// This header should NOT include any other headers to avoid portability issues.
+
+#if defined(_WIN32)
+// FIXME find out what we need on Windows. __declspec(dllexport) ?
+# define SANITIZER_INTERFACE_ATTRIBUTE
+# define SANITIZER_WEAK_ATTRIBUTE
+#elif defined(SANITIZER_GO)
+# define SANITIZER_INTERFACE_ATTRIBUTE
+# define SANITIZER_WEAK_ATTRIBUTE
+#else
+# define SANITIZER_INTERFACE_ATTRIBUTE __attribute__((visibility("default")))
+# define SANITIZER_WEAK_ATTRIBUTE  __attribute__((weak))
+#endif
+
+#ifdef __linux__
+# define SANITIZER_SUPPORTS_WEAK_HOOKS 1
+#else
+# define SANITIZER_SUPPORTS_WEAK_HOOKS 0
+#endif
+
+// __has_feature
+#if !defined(__has_feature)
+# define __has_feature(x) 0
+#endif
+
+// For portability reasons we do not include stddef.h, stdint.h or any other
+// system header, but we do need some basic types that are not defined
+// in a portable way by the language itself.
+namespace __sanitizer {
+
+#if defined(_WIN64)
+// 64-bit Windows uses LLP64 data model.
+typedef unsigned long long uptr;  // NOLINT
+typedef signed   long long sptr;  // NOLINT
+#else
+typedef unsigned long uptr;  // NOLINT
+typedef signed   long sptr;  // NOLINT
+#endif  // defined(_WIN64)
+#if defined(__x86_64__)
+// Since x32 uses ILP32 data model in 64-bit hardware mode,  we must use
+// 64-bit pointer to unwind stack frame.
+typedef unsigned long long uhwptr;  // NOLINT
+#else
+typedef uptr uhwptr;   // NOLINT
+#endif
+typedef unsigned char u8;
+typedef unsigned short u16;  // NOLINT
+typedef unsigned int u32;
+typedef unsigned long long u64;  // NOLINT
+typedef signed   char s8;
+typedef signed   short s16;  // NOLINT
+typedef signed   int s32;
+typedef signed   long long s64;  // NOLINT
+
+}  // namespace __sanitizer
+
+extern "C" {
+  // Tell the tools to write their reports to "path.<pid>" instead of stderr.
+  void __sanitizer_set_report_path(const char *path)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Tell the tools to write their reports to given file descriptor instead of
+  // stderr.
+  void __sanitizer_set_report_fd(int fd)
+      SANITIZER_INTERFACE_ATTRIBUTE;
+
+  // Notify the tools that the sandbox is going to be turned on. The reserved
+  // parameter will be used in the future to hold a structure with functions
+  // that the tools may call to bypass the sandbox.
+  void __sanitizer_sandbox_on_notify(void *reserved)
+      SANITIZER_WEAK_ATTRIBUTE SANITIZER_INTERFACE_ATTRIBUTE;
+}  // extern "C"
+
+#endif  // SANITIZER_COMMON_INTERFACE_DEFS_H

Added: vendor/compiler-rt/dist/include/sanitizer/msan_interface.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/compiler-rt/dist/include/sanitizer/msan_interface.h	Fri Jan 18 20:06:45 2013	(r245614)
@@ -0,0 +1,124 @@
+//===-- msan_interface.h --------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of MemorySanitizer.
+//
+// Public interface header.
+//===----------------------------------------------------------------------===//
+#ifndef MSAN_INTERFACE_H
+#define MSAN_INTERFACE_H
+
+#include <sanitizer/common_interface_defs.h>
+
+using __sanitizer::uptr;
+using __sanitizer::sptr;
+using __sanitizer::u32;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// FIXME: document all interface functions.
+
+SANITIZER_INTERFACE_ATTRIBUTE
+int __msan_get_track_origins();
+
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_init();
+
+// Print a warning and maybe return.
+// This function can die based on flags()->exit_code.
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_warning();
+
+// Print a warning and die.
+// Intrumentation inserts calls to this function when building in "fast" mode
+// (i.e. -mllvm -msan-keep-going)
+SANITIZER_INTERFACE_ATTRIBUTE __attribute__((noreturn))
+void __msan_warning_noreturn();
+
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_unpoison(void *a, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_clear_and_unpoison(void *a, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void* __msan_memcpy(void *dst, const void *src, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void* __msan_memset(void *s, int c, uptr n);
+SANITIZER_INTERFACE_ATTRIBUTE
+void* __msan_memmove(void* dest, const void* src, uptr n);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_copy_poison(void *dst, const void *src, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_copy_origin(void *dst, const void *src, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_move_poison(void *dst, const void *src, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_poison(void *a, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_poison_stack(void *a, uptr size);
+
+// Copy size bytes from src to dst and unpoison the result.
+// Useful to implement unsafe loads.
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_load_unpoisoned(void *src, uptr size, void *dst);
+
+// Returns the offset of the first (at least partially) poisoned byte,
+// or -1 if the whole range is good.
+SANITIZER_INTERFACE_ATTRIBUTE
+sptr __msan_test_shadow(const void *x, uptr size);
+
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_set_origin(void *a, uptr size, u32 origin);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_set_alloca_origin(void *a, uptr size, const char *descr);
+SANITIZER_INTERFACE_ATTRIBUTE
+u32 __msan_get_origin(void *a);
+
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_clear_on_return();
+
+// Default: -1 (don't exit on error).
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_set_exit_code(int exit_code);
+
+SANITIZER_INTERFACE_ATTRIBUTE
+int __msan_set_poison_in_malloc(int do_poison);
+
+// For testing.
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_set_expect_umr(int expect_umr);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_break_optimization(void *x);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_print_shadow(const void *x, uptr size);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_print_param_shadow();
+SANITIZER_INTERFACE_ATTRIBUTE
+int  __msan_has_dynamic_component();
+
+// Returns x such that %fs:x is the first byte of __msan_retval_tls.
+SANITIZER_INTERFACE_ATTRIBUTE
+int __msan_get_retval_tls_offset();
+SANITIZER_INTERFACE_ATTRIBUTE
+int __msan_get_param_tls_offset();
+
+// For testing.
+SANITIZER_INTERFACE_ATTRIBUTE
+u32 __msan_get_origin_tls();
+SANITIZER_INTERFACE_ATTRIBUTE
+const char *__msan_get_origin_descr_if_stack(u32 id);
+SANITIZER_INTERFACE_ATTRIBUTE
+void __msan_partial_poison(void* data, void* shadow, uptr size);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif

Modified: vendor/compiler-rt/dist/lib/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/lib/CMakeLists.txt	Fri Jan 18 19:42:08 2013	(r245613)
+++ vendor/compiler-rt/dist/lib/CMakeLists.txt	Fri Jan 18 20:06:45 2013	(r245614)
@@ -1,34 +1,23 @@
-# Compute the Clang version from the LLVM version.
-# FIXME: We should be able to reuse CLANG_VERSION variable calculated
-#        in Clang cmake files, instead of copying the rules here.
-string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
-       ${PACKAGE_VERSION})
-
-# Call add_clang_runtime_static_library(<target_library>) to make
-# sure that static <target_library> is built in the directory
-# where Clang driver expects to find it.
-if (APPLE)
-  set(CLANG_RUNTIME_LIB_DIR
-      ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/darwin)
-elseif (UNIX)
-  # Assume Linux.
-  set(CLANG_RUNTIME_LIB_DIR
-      ${LLVM_BINARY_DIR}/lib/clang/${CLANG_VERSION}/lib/linux)
-endif()
-function(add_clang_runtime_static_library target_name)
-  set_target_properties(${target_name} PROPERTIES
-                        ARCHIVE_OUTPUT_DIRECTORY ${CLANG_RUNTIME_LIB_DIR})
-endfunction()
-
 # First, add the subdirectories which contain feature-based runtime libraries
 # and several convenience helper libraries.
-add_subdirectory(asan)
-add_subdirectory(interception)
-add_subdirectory(sanitizer_common)
+if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux")
+  # AddressSanitizer is supported on Linux and Mac OS X.
+  # Windows support is work in progress.
+  add_subdirectory(asan)
+  add_subdirectory(interception)
+  add_subdirectory(sanitizer_common)
+  if(NOT ANDROID)
+    add_subdirectory(ubsan)
+  endif()
+endif()
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID)
+  # ThreadSanitizer and MemorySanitizer are supported on Linux only.
+  add_subdirectory(tsan)
+  add_subdirectory(msan)
+endif()
 
 # FIXME: Add support for the profile library.
 
-
 # The top-level lib directory contains a large amount of C code which provides
 # generic implementations of the core runtime library along with optimized
 # architecture-specific code in various subdirectories.
@@ -163,7 +152,7 @@ set(GENERIC_SOURCES
   umodti3.c
   )
 
-if(CAN_TARGET_X86_64)
+if(CAN_TARGET_x86_64)
   add_library(clang_rt.x86_64 STATIC
     x86_64/floatdidf.c
     x86_64/floatdisf.c
@@ -173,9 +162,10 @@ if(CAN_TARGET_X86_64)
     x86_64/floatundixf.S
     ${GENERIC_SOURCES}
     )
-  set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_X86_64_CFLAGS}")
+  set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_x86_64_CFLAGS}")
+  add_clang_compiler_rt_libraries(clang_rt.x86_64)
 endif()
-if(CAN_TARGET_I386)
+if(CAN_TARGET_i386)
   add_library(clang_rt.i386 STATIC
     i386/ashldi3.S
     i386/ashrdi3.S
@@ -193,5 +183,6 @@ if(CAN_TARGET_I386)
     i386/umoddi3.S
     ${GENERIC_SOURCES}
     )
-  set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_I386_CFLAGS}")
+  set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_i386_CFLAGS}")
+  add_clang_compiler_rt_libraries(clang_rt.i386)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list