[PATCH 00/13] Request to merge Address Sanitizer in

Dodji Seketeli dodji@seketeli.org
Fri Nov 2 22:53:00 GMT 2012


dodji@redhat.com writes:

> The first patch is the initial import of the asan state from the
> Google branch into the [asan] branch.  Subsequent patches clean the
> code up, add features like protection of stack and global variables,
> instrumentation of memory access through built-in functions, and, last
> but not least, the import of the runtime library.

In reply to requests in this thread, I am going to post another patch
set that follows the same grouping that the one above, but that avoids
being a dump of the different commits that happen on the branch.

I made some changes that were requested by some reviewers, like changing
the -fasan flag into -faddress-sanitizer, incorporating the last changes
(to the runtime time library directory layout) from Wei that got
committed to the asan branch, and removing the uselessly included
headers from the asan.c file.  I also rebased the patches on top of
trunk of today.

Below is the new summary of the patch set.  It has been bootstrapped and
passed regression testing on x86_64-unknown-linux-gnu against trunk.

Diego Novillo (1):
  Initial import of asan from the Google branch

Dodji Seketeli (3):
  Make build_check_stmt accept an SSA_NAME for its base
  Factorize condition insertion code out of build_check_stmt
  Instrument built-in memory access function calls

Jakub Jelinek (5):
  Initial asan cleanups
  Emit GIMPLE directly instead of gimplifying GENERIC.
  Allow asan at -O0
  Implement protection of stack variables
  Implement protection of global variables

Wei Mi (1):
  Import the asan runtime library into GCC tree

 ChangeLog.asan                                     |    16 +
 Makefile.def                                       |     2 +
 Makefile.in                                        |   487 +-
 configure                                          |     1 +
 configure.ac                                       |     1 +
 gcc/ChangeLog.asan                                 |   159 +
 gcc/Makefile.in                                    |    10 +-
 gcc/asan.c                                         |  1483 ++
 gcc/asan.h                                         |    70 +
 gcc/cfgexpand.c                                    |   165 +-
 gcc/common.opt                                     |     4 +
 gcc/config/i386/i386.c                             |    11 +
 gcc/doc/invoke.texi                                |    13 +-
 gcc/doc/tm.texi                                    |     6 +
 gcc/doc/tm.texi.in                                 |     2 +
 gcc/gcc.c                                          |     1 +
 gcc/passes.c                                       |     2 +
 gcc/target.def                                     |    11 +
 gcc/toplev.c                                       |    14 +
 gcc/tree-pass.h                                    |     2 +
 gcc/varasm.c                                       |    22 +
 libsanitizer/ChangeLog.asan                        |     3 +
 libsanitizer/LICENSE.TXT                           |    97 +
 libsanitizer/Makefile.am                           |    46 +
 libsanitizer/Makefile.in                           |   773 +
 libsanitizer/README.gcc                            |     4 +
 libsanitizer/aclocal.m4                            |  9599 ++++++++++
 libsanitizer/asan/Makefile.am                      |    76 +
 libsanitizer/asan/Makefile.in                      |   631 +
 libsanitizer/asan/asan_allocator.cc                |  1045 ++
 libsanitizer/asan/asan_allocator.h                 |   177 +
 libsanitizer/asan/asan_flags.h                     |   103 +
 libsanitizer/asan/asan_globals.cc                  |   206 +
 libsanitizer/asan/asan_intercepted_functions.h     |   217 +
 libsanitizer/asan/asan_interceptors.cc             |   704 +
 libsanitizer/asan/asan_interceptors.h              |    39 +
 libsanitizer/asan/asan_internal.h                  |   169 +
 libsanitizer/asan/asan_linux.cc                    |   150 +
 libsanitizer/asan/asan_lock.h                      |    40 +
 libsanitizer/asan/asan_mac.cc                      |   526 +
 libsanitizer/asan/asan_mac.h                       |    54 +
 libsanitizer/asan/asan_malloc_linux.cc             |   142 +
 libsanitizer/asan/asan_malloc_mac.cc               |   427 +
 libsanitizer/asan/asan_malloc_win.cc               |   140 +
 libsanitizer/asan/asan_mapping.h                   |   120 +
 libsanitizer/asan/asan_new_delete.cc               |    54 +
 libsanitizer/asan/asan_poisoning.cc                |   151 +
 libsanitizer/asan/asan_posix.cc                    |   118 +
 libsanitizer/asan/asan_report.cc                   |   492 +
 libsanitizer/asan/asan_report.h                    |    51 +
 libsanitizer/asan/asan_rtl.cc                      |   404 +
 libsanitizer/asan/asan_stack.cc                    |    35 +
 libsanitizer/asan/asan_stack.h                     |    52 +
 libsanitizer/asan/asan_stats.cc                    |    86 +
 libsanitizer/asan/asan_stats.h                     |    65 +
 libsanitizer/asan/asan_thread.cc                   |   153 +
 libsanitizer/asan/asan_thread.h                    |   103 +
 libsanitizer/asan/asan_thread_registry.cc          |   188 +
 libsanitizer/asan/asan_thread_registry.h           |    83 +
 libsanitizer/asan/asan_win.cc                      |   190 +
 libsanitizer/asan/libtool-version                  |     6 +
 libsanitizer/config.guess                          |  1530 ++
 libsanitizer/config.sub                            |  1773 ++
 libsanitizer/configure                             | 17589 +++++++++++++++++++
 libsanitizer/configure.ac                          |    42 +
 libsanitizer/depcomp                               |   630 +
 libsanitizer/include/sanitizer/asan_interface.h    |   197 +
 .../include/sanitizer/common_interface_defs.h      |    66 +
 libsanitizer/install-sh                            |   527 +
 libsanitizer/interception/Makefile.am              |    59 +
 libsanitizer/interception/Makefile.in              |   535 +
 libsanitizer/interception/interception.h           |   195 +
 libsanitizer/interception/interception_linux.cc    |    28 +
 libsanitizer/interception/interception_linux.h     |    35 +
 libsanitizer/interception/interception_mac.cc      |    29 +
 libsanitizer/interception/interception_mac.h       |    47 +
 libsanitizer/interception/interception_win.cc      |   149 +
 libsanitizer/interception/interception_win.h       |    43 +
 libsanitizer/libtool-version                       |     6 +
 libsanitizer/ltmain.sh                             |  9661 ++++++++++
 libsanitizer/missing                               |   376 +
 libsanitizer/sanitizer_common/Makefile.am          |    71 +
 libsanitizer/sanitizer_common/Makefile.in          |   564 +
 .../sanitizer_common/sanitizer_allocator.cc        |    83 +
 .../sanitizer_common/sanitizer_allocator64.h       |   573 +
 libsanitizer/sanitizer_common/sanitizer_atomic.h   |    63 +
 .../sanitizer_common/sanitizer_atomic_clang.h      |   120 +
 .../sanitizer_common/sanitizer_atomic_msvc.h       |   134 +
 libsanitizer/sanitizer_common/sanitizer_common.cc  |   151 +
 libsanitizer/sanitizer_common/sanitizer_common.h   |   181 +
 libsanitizer/sanitizer_common/sanitizer_flags.cc   |    95 +
 libsanitizer/sanitizer_common/sanitizer_flags.h    |    25 +
 .../sanitizer_common/sanitizer_internal_defs.h     |   186 +
 libsanitizer/sanitizer_common/sanitizer_libc.cc    |   189 +
 libsanitizer/sanitizer_common/sanitizer_libc.h     |    69 +
 libsanitizer/sanitizer_common/sanitizer_linux.cc   |   296 +
 libsanitizer/sanitizer_common/sanitizer_list.h     |   118 +
 libsanitizer/sanitizer_common/sanitizer_mac.cc     |   249 +
 libsanitizer/sanitizer_common/sanitizer_mutex.h    |   106 +
 .../sanitizer_common/sanitizer_placement_new.h     |    31 +
 libsanitizer/sanitizer_common/sanitizer_posix.cc   |   187 +
 libsanitizer/sanitizer_common/sanitizer_printf.cc  |   196 +
 libsanitizer/sanitizer_common/sanitizer_procmaps.h |    95 +
 .../sanitizer_common/sanitizer_stackdepot.cc       |   194 +
 .../sanitizer_common/sanitizer_stackdepot.h        |    27 +
 .../sanitizer_common/sanitizer_stacktrace.cc       |   245 +
 .../sanitizer_common/sanitizer_stacktrace.h        |    73 +
 .../sanitizer_common/sanitizer_symbolizer.cc       |   311 +
 .../sanitizer_common/sanitizer_symbolizer.h        |    97 +
 .../sanitizer_common/sanitizer_symbolizer_linux.cc |   162 +
 .../sanitizer_common/sanitizer_symbolizer_mac.cc   |    31 +
 .../sanitizer_common/sanitizer_symbolizer_win.cc   |    33 +
 libsanitizer/sanitizer_common/sanitizer_win.cc     |   205 +
 113 files changed, 58851 insertions(+), 27 deletions(-)
 create mode 100644 ChangeLog.asan
 create mode 100644 gcc/ChangeLog.asan
 create mode 100644 gcc/asan.c
 create mode 100644 gcc/asan.h
 create mode 100644 libsanitizer/ChangeLog.asan
 create mode 100644 libsanitizer/LICENSE.TXT
 create mode 100644 libsanitizer/Makefile.am
 create mode 100644 libsanitizer/Makefile.in
 create mode 100644 libsanitizer/README.gcc
 create mode 100644 libsanitizer/aclocal.m4
 create mode 100644 libsanitizer/asan/Makefile.am
 create mode 100644 libsanitizer/asan/Makefile.in
 create mode 100644 libsanitizer/asan/asan_allocator.cc
 create mode 100644 libsanitizer/asan/asan_allocator.h
 create mode 100644 libsanitizer/asan/asan_flags.h
 create mode 100644 libsanitizer/asan/asan_globals.cc
 create mode 100644 libsanitizer/asan/asan_intercepted_functions.h
 create mode 100644 libsanitizer/asan/asan_interceptors.cc
 create mode 100644 libsanitizer/asan/asan_interceptors.h
 create mode 100644 libsanitizer/asan/asan_internal.h
 create mode 100644 libsanitizer/asan/asan_linux.cc
 create mode 100644 libsanitizer/asan/asan_lock.h
 create mode 100644 libsanitizer/asan/asan_mac.cc
 create mode 100644 libsanitizer/asan/asan_mac.h
 create mode 100644 libsanitizer/asan/asan_malloc_linux.cc
 create mode 100644 libsanitizer/asan/asan_malloc_mac.cc
 create mode 100644 libsanitizer/asan/asan_malloc_win.cc
 create mode 100644 libsanitizer/asan/asan_mapping.h
 create mode 100644 libsanitizer/asan/asan_new_delete.cc
 create mode 100644 libsanitizer/asan/asan_poisoning.cc
 create mode 100644 libsanitizer/asan/asan_posix.cc
 create mode 100644 libsanitizer/asan/asan_report.cc
 create mode 100644 libsanitizer/asan/asan_report.h
 create mode 100644 libsanitizer/asan/asan_rtl.cc
 create mode 100644 libsanitizer/asan/asan_stack.cc
 create mode 100644 libsanitizer/asan/asan_stack.h
 create mode 100644 libsanitizer/asan/asan_stats.cc
 create mode 100644 libsanitizer/asan/asan_stats.h
 create mode 100644 libsanitizer/asan/asan_thread.cc
 create mode 100644 libsanitizer/asan/asan_thread.h
 create mode 100644 libsanitizer/asan/asan_thread_registry.cc
 create mode 100644 libsanitizer/asan/asan_thread_registry.h
 create mode 100644 libsanitizer/asan/asan_win.cc
 create mode 100644 libsanitizer/asan/libtool-version
 create mode 100644 libsanitizer/config.guess
 create mode 100644 libsanitizer/config.sub
 create mode 100755 libsanitizer/configure
 create mode 100644 libsanitizer/configure.ac
 create mode 100644 libsanitizer/depcomp
 create mode 100644 libsanitizer/include/sanitizer/asan_interface.h
 create mode 100644 libsanitizer/include/sanitizer/common_interface_defs.h
 create mode 100644 libsanitizer/install-sh
 create mode 100644 libsanitizer/interception/Makefile.am
 create mode 100644 libsanitizer/interception/Makefile.in
 create mode 100644 libsanitizer/interception/interception.h
 create mode 100644 libsanitizer/interception/interception_linux.cc
 create mode 100644 libsanitizer/interception/interception_linux.h
 create mode 100644 libsanitizer/interception/interception_mac.cc
 create mode 100644 libsanitizer/interception/interception_mac.h
 create mode 100644 libsanitizer/interception/interception_win.cc
 create mode 100644 libsanitizer/interception/interception_win.h
 create mode 100644 libsanitizer/libtool-version
 create mode 100644 libsanitizer/ltmain.sh
 create mode 100644 libsanitizer/missing
 create mode 100644 libsanitizer/sanitizer_common/Makefile.am
 create mode 100644 libsanitizer/sanitizer_common/Makefile.in
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_allocator.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_allocator64.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_common.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_common.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_flags.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_flags.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_internal_defs.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_libc.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_libc.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_linux.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_list.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_mac.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_mutex.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_placement_new.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_posix.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_printf.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_procmaps.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_stackdepot.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_stackdepot.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_stacktrace.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_stacktrace.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer.h
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_linux.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cc
 create mode 100644 libsanitizer/sanitizer_common/sanitizer_win.cc

-- 
		Dodji



More information about the Gcc-patches mailing list