Matthew Malcomson <[email protected]> writes:
> This patch tries to tie libhwasan into the GCC build system in the same way
> that the other sanitizer runtime libraries are handled.
>
> libsanitizer/ChangeLog:
>
> * Makefile.am: Build libhwasan.
> * Makefile.in: Build libhwasan.
> * asan/Makefile.in: Build libhwasan.
> * configure: Build libhwasan.
> * configure.ac: Build libhwasan.
> * hwasan/Makefile.am: New file.
> * hwasan/Makefile.in: New file.
> * hwasan/libtool-version: New file.
> * interception/Makefile.in: Build libhwasan.
> * libbacktrace/Makefile.in: Build libhwasan.
> * libsanitizer.spec.in: Build libhwasan.
> * lsan/Makefile.in: Build libhwasan.
> * sanitizer_common/Makefile.in: Build libhwasan.
> * tsan/Makefile.in: Build libhwasan.
> * ubsan/Makefile.in: Build libhwasan.
OK, thanks.
Richard
> ############### Attachment also inlined for ease of reply
> ###############
>
>
> diff --git a/libsanitizer/Makefile.am b/libsanitizer/Makefile.am
> index
> 65ed1e712378ef453f820f86c4d3221f9dee5f2c..2a7e8e1debe838719db0f0fad218b2543cc3111b
> 100644
> --- a/libsanitizer/Makefile.am
> +++ b/libsanitizer/Makefile.am
> @@ -14,11 +14,12 @@ endif
> if LIBBACKTRACE_SUPPORTED
> SUBDIRS += libbacktrace
> endif
> -SUBDIRS += lsan asan ubsan
> +SUBDIRS += lsan asan ubsan hwasan
> nodist_saninclude_HEADERS += \
> include/sanitizer/lsan_interface.h \
> include/sanitizer/asan_interface.h \
> - include/sanitizer/tsan_interface.h
> + include/sanitizer/tsan_interface.h \
> + include/sanitizer/hwasan_interface.h
> if TSAN_SUPPORTED
> SUBDIRS += tsan
> endif
> diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in
> index
> 02c7f70ac6578a3e93a490ce8bd2c54fc0693c50..2c57d49cbffdb486645aeb5f2c0f85d6e0fad124
> 100644
> --- a/libsanitizer/Makefile.in
> +++ b/libsanitizer/Makefile.in
> @@ -92,7 +92,8 @@ target_triplet = @target@
> @SANITIZER_SUPPORTED_TRUE@am__append_1 =
> include/sanitizer/common_interface_defs.h \
> @SANITIZER_SUPPORTED_TRUE@ include/sanitizer/lsan_interface.h \
> @SANITIZER_SUPPORTED_TRUE@ include/sanitizer/asan_interface.h \
> -@SANITIZER_SUPPORTED_TRUE@ include/sanitizer/tsan_interface.h
> +@SANITIZER_SUPPORTED_TRUE@ include/sanitizer/tsan_interface.h \
> +@SANITIZER_SUPPORTED_TRUE@ include/sanitizer/hwasan_interface.h
> @SANITIZER_SUPPORTED_TRUE@@USING_MAC_INTERPOSE_FALSE@am__append_2 =
> interception
> @LIBBACKTRACE_SUPPORTED_TRUE@@SANITIZER_SUPPORTED_TRUE@am__append_3 =
> libbacktrace
> @SANITIZER_SUPPORTED_TRUE@@TSAN_SUPPORTED_TRUE@am__append_4 = tsan
> @@ -207,7 +208,7 @@ ETAGS = etags
> CTAGS = ctags
> CSCOPE = cscope
> DIST_SUBDIRS = sanitizer_common interception libbacktrace lsan asan \
> - ubsan tsan
> + ubsan hwasan tsan
> ACLOCAL = @ACLOCAL@
> ALLOC_FILE = @ALLOC_FILE@
> AMTAR = @AMTAR@
> @@ -329,6 +330,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> @@ -362,7 +364,7 @@ sanincludedir =
> $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer
> nodist_saninclude_HEADERS = $(am__append_1)
> @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \
> @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \
> -@SANITIZER_SUPPORTED_TRUE@ $(am__append_4)
> +@SANITIZER_SUPPORTED_TRUE@ hwasan $(am__append_4)
> gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
>
> # Work around what appears to be a GNU make bug handling MAKEFLAGS
> diff --git a/libsanitizer/asan/Makefile.in b/libsanitizer/asan/Makefile.in
> index
> 29622bf466a37f819c9fade30e31195adda51190..25c7fd7b7597d6e243005a1bb7de5b6243d2cfcf
> 100644
> --- a/libsanitizer/asan/Makefile.in
> +++ b/libsanitizer/asan/Makefile.in
> @@ -383,6 +383,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/configure b/libsanitizer/configure
> index
> 04eca04fbe5e59bae1ba00597de0cf1b7cf1b5fa..27e72c089cb891dcce09494fa9e39eebe55d2598
> 100755
> --- a/libsanitizer/configure
> +++ b/libsanitizer/configure
> @@ -657,6 +657,7 @@ USING_MAC_INTERPOSE_TRUE
> link_liblsan
> link_libubsan
> link_libtsan
> +link_libhwasan
> link_libasan
> LSAN_SUPPORTED_FALSE
> LSAN_SUPPORTED_TRUE
> @@ -12361,7 +12362,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12364 "configure"
> +#line 12365 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -12467,7 +12468,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12470 "configure"
> +#line 12471 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -15943,6 +15944,10 @@ fi
> link_libasan=$link_sanitizer_common
>
>
> +# Set up the set of additional libraries that we need to link against for
> libhwasan.
> +link_libhwasan=$link_sanitizer_common
> +
> +
> # Set up the set of additional libraries that we need to link against for
> libtsan.
> link_libtsan=$link_sanitizer_common
>
> @@ -16813,7 +16818,7 @@ ac_config_files="$ac_config_files Makefile
> libsanitizer.spec libbacktrace/backtr
> ac_config_headers="$ac_config_headers config.h"
>
>
> -ac_config_files="$ac_config_files interception/Makefile
> sanitizer_common/Makefile libbacktrace/Makefile lsan/Makefile asan/Makefile
> ubsan/Makefile"
> +ac_config_files="$ac_config_files interception/Makefile
> sanitizer_common/Makefile libbacktrace/Makefile lsan/Makefile asan/Makefile
> hwasan/Makefile ubsan/Makefile"
>
>
> if test "x$TSAN_SUPPORTED" = "xyes"; then
> @@ -16862,7 +16867,7 @@ case "$host" in
> case "$enable_cet" in
> auto)
> # Check if target supports multi-byte NOPs
> - # and if assembler supports CET insn.
> + # and if compiler and assembler support CET insn.
> cet_save_CFLAGS="$CFLAGS"
> CFLAGS="$CFLAGS -fcf-protection"
> cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> @@ -18094,6 +18099,7 @@ do
> "libbacktrace/Makefile") CONFIG_FILES="$CONFIG_FILES
> libbacktrace/Makefile" ;;
> "lsan/Makefile") CONFIG_FILES="$CONFIG_FILES lsan/Makefile" ;;
> "asan/Makefile") CONFIG_FILES="$CONFIG_FILES asan/Makefile" ;;
> + "hwasan/Makefile") CONFIG_FILES="$CONFIG_FILES hwasan/Makefile" ;;
> "ubsan/Makefile") CONFIG_FILES="$CONFIG_FILES ubsan/Makefile" ;;
> "tsan/Makefile") CONFIG_FILES="$CONFIG_FILES tsan/Makefile" ;;
>
> @@ -20029,6 +20035,17 @@ _EOF
> . ${multi_basedir}/config-ml.in
> { ml_norecursion=; unset ml_norecursion;}
> ;;
> + "hwasan/Makefile":F) cat > vpsed$$ << \_EOF
> +s!`test -f '$<' || echo '$(srcdir)/'`!!
> +_EOF
> + sed -f vpsed$$ $ac_file > tmp$$
> + mv tmp$$ $ac_file
> + rm vpsed$$
> + echo 'MULTISUBDIR =' >> $ac_file
> + ml_norecursion=yes
> + . ${multi_basedir}/config-ml.in
> + { ml_norecursion=; unset ml_norecursion;}
> + ;;
> "ubsan/Makefile":F) cat > vpsed$$ << \_EOF
> s!`test -f '$<' || echo '$(srcdir)/'`!!
> _EOF
> diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac
> index
> a0950c29ebe2c0bf862ffe08f9a441c554da3220..f0d526c52967112905115c8fbe3540427a27ae03
> 100644
> --- a/libsanitizer/configure.ac
> +++ b/libsanitizer/configure.ac
> @@ -120,6 +120,10 @@ AC_CHECK_LIB(dl, dlsym,
> link_libasan=$link_sanitizer_common
> AC_SUBST(link_libasan)
>
> +# Set up the set of additional libraries that we need to link against for
> libhwasan.
> +link_libhwasan=$link_sanitizer_common
> +AC_SUBST(link_libhwasan)
> +
> # Set up the set of additional libraries that we need to link against for
> libtsan.
> link_libtsan=$link_sanitizer_common
> AC_SUBST(link_libtsan)
> @@ -348,7 +352,7 @@ AH_BOTTOM([#include "libbacktrace/backtrace-rename.h"])
> AC_CONFIG_FILES([Makefile libsanitizer.spec
> libbacktrace/backtrace-supported.h])
> AC_CONFIG_HEADER(config.h)
>
> -AC_CONFIG_FILES(AC_FOREACH([DIR], [interception sanitizer_common
> libbacktrace lsan asan ubsan], [DIR/Makefile ]),
> +AC_CONFIG_FILES(AC_FOREACH([DIR], [interception sanitizer_common
> libbacktrace lsan asan hwasan ubsan], [DIR/Makefile ]),
> [cat > vpsed$$ << \_EOF
> s!`test -f '$<' || echo '$(srcdir)/'`!!
> _EOF
> diff --git a/libsanitizer/hwasan/Makefile.am b/libsanitizer/hwasan/Makefile.am
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..2226f68ab29e109e592c51f4064311fcb5a177d2
> --- /dev/null
> +++ b/libsanitizer/hwasan/Makefile.am
> @@ -0,0 +1,89 @@
> +AM_CPPFLAGS = -I $(top_srcdir)/include -I $(top_srcdir)
> +
> +# May be used by toolexeclibdir.
> +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
> +
> +DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DCAN_SANITIZE_UB=0
> -DHWASAN_WITH_INTERCEPTORS=1
> +AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic
> -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -funwind-tables
> -fvisibility=hidden -Wno-variadic-macros -fno-ipa-icf
> +AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS)
> +AM_CXXFLAGS += -std=gnu++14
> +AM_CXXFLAGS += $(EXTRA_CXXFLAGS)
> +ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config
> +
> +toolexeclib_LTLIBRARIES = libhwasan.la
> +
> +hwasan_files = \
> + hwasan_allocator.cpp \
> + hwasan.cpp \
> + hwasan_dynamic_shadow.cpp \
> + hwasan_exceptions.cpp \
> + hwasan_flags.inc \
> + hwasan_globals.cpp \
> + hwasan_interceptors.cpp \
> + hwasan_interceptors_vfork.S \
> + hwasan_linux.cpp \
> + hwasan_memintrinsics.cpp \
> + hwasan_new_delete.cpp \
> + hwasan_poisoning.cpp \
> + hwasan_report.cpp \
> + hwasan_setjmp.S \
> + hwasan_tag_mismatch_aarch64.S \
> + hwasan_thread.cpp \
> + hwasan_thread_list.cpp \
> + hwasan_type_test.cpp
> +
> +libhwasan_la_SOURCES = $(hwasan_files)
> +libhwasan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la
> +if !USING_MAC_INTERPOSE
> +libhwasan_la_LIBADD += $(top_builddir)/interception/libinterception.la
> +endif
> +if LIBBACKTRACE_SUPPORTED
> +libhwasan_la_LIBADD +=
> $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
> +endif
> +libhwasan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
> +
> +libhwasan_la_LDFLAGS = -version-info `grep -v '^\#'
> $(srcdir)/libtool-version` $(link_libhwasan)
> +
> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
> +# values defined in terms of make variables, as is the case for CC and
> +# friends when we are called from the top level Makefile.
> +AM_MAKEFLAGS = \
> + "AR_FLAGS=$(AR_FLAGS)" \
> + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> + "CFLAGS=$(CFLAGS)" \
> + "CXXFLAGS=$(CXXFLAGS)" \
> + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
> + "INSTALL=$(INSTALL)" \
> + "INSTALL_DATA=$(INSTALL_DATA)" \
> + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
> + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
> + "JC1FLAGS=$(JC1FLAGS)" \
> + "LDFLAGS=$(LDFLAGS)" \
> + "LIBCFLAGS=$(LIBCFLAGS)" \
> + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
> + "MAKE=$(MAKE)" \
> + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
> + "PICFLAG=$(PICFLAG)" \
> + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
> + "SHELL=$(SHELL)" \
> + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
> + "exec_prefix=$(exec_prefix)" \
> + "infodir=$(infodir)" \
> + "libdir=$(libdir)" \
> + "prefix=$(prefix)" \
> + "includedir=$(includedir)" \
> + "AR=$(AR)" \
> + "AS=$(AS)" \
> + "LD=$(LD)" \
> + "LIBCFLAGS=$(LIBCFLAGS)" \
> + "NM=$(NM)" \
> + "PICFLAG=$(PICFLAG)" \
> + "RANLIB=$(RANLIB)" \
> + "DESTDIR=$(DESTDIR)"
> +
> +MAKEOVERRIDES=
> +
> +## ################################################################
> +
> +
> diff --git a/libsanitizer/hwasan/Makefile.in b/libsanitizer/hwasan/Makefile.in
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..542af8f193e0d460de93dff7b249edb949be8a67
> --- /dev/null
> +++ b/libsanitizer/hwasan/Makefile.in
> @@ -0,0 +1,803 @@
> +# Makefile.in generated by automake 1.15.1 from Makefile.am.
> +# @configure_input@
> +
> +# Copyright (C) 1994-2017 Free Software Foundation, Inc.
> +
> +# This Makefile.in is free software; the Free Software Foundation
> +# gives unlimited permission to copy and/or distribute it,
> +# with or without modifications, as long as this notice is preserved.
> +
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
> +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
> +# PARTICULAR PURPOSE.
> +
> +@SET_MAKE@
> +
> +VPATH = @srcdir@
> +am__is_gnu_make = { \
> + if test -z '$(MAKELEVEL)'; then \
> + false; \
> + elif test -n '$(MAKE_HOST)'; then \
> + true; \
> + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
> + true; \
> + else \
> + false; \
> + fi; \
> +}
> +am__make_running_with_option = \
> + case $${target_option-} in \
> + ?) ;; \
> + *) echo "am__make_running_with_option: internal error: invalid" \
> + "target option '$${target_option-}' specified" >&2; \
> + exit 1;; \
> + esac; \
> + has_opt=no; \
> + sane_makeflags=$$MAKEFLAGS; \
> + if $(am__is_gnu_make); then \
> + sane_makeflags=$$MFLAGS; \
> + else \
> + case $$MAKEFLAGS in \
> + *\\[\ \ ]*) \
> + bs=\\; \
> + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
> + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
> + esac; \
> + fi; \
> + skip_next=no; \
> + strip_trailopt () \
> + { \
> + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
> + }; \
> + for flg in $$sane_makeflags; do \
> + test $$skip_next = yes && { skip_next=no; continue; }; \
> + case $$flg in \
> + *=*|--*) continue;; \
> + -*I) strip_trailopt 'I'; skip_next=yes;; \
> + -*I?*) strip_trailopt 'I';; \
> + -*O) strip_trailopt 'O'; skip_next=yes;; \
> + -*O?*) strip_trailopt 'O';; \
> + -*l) strip_trailopt 'l'; skip_next=yes;; \
> + -*l?*) strip_trailopt 'l';; \
> + -[dEDm]) skip_next=yes;; \
> + -[JT]) skip_next=yes;; \
> + esac; \
> + case $$flg in \
> + *$$target_option*) has_opt=yes; break;; \
> + esac; \
> + done; \
> + test $$has_opt = yes
> +am__make_dryrun = (target_option=n; $(am__make_running_with_option))
> +am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
> +pkgdatadir = $(datadir)/@PACKAGE@
> +pkgincludedir = $(includedir)/@PACKAGE@
> +pkglibdir = $(libdir)/@PACKAGE@
> +pkglibexecdir = $(libexecdir)/@PACKAGE@
> +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
> +install_sh_DATA = $(install_sh) -c -m 644
> +install_sh_PROGRAM = $(install_sh) -c
> +install_sh_SCRIPT = $(install_sh) -c
> +INSTALL_HEADER = $(INSTALL_DATA)
> +transform = $(program_transform_name)
> +NORMAL_INSTALL = :
> +PRE_INSTALL = :
> +POST_INSTALL = :
> +NORMAL_UNINSTALL = :
> +PRE_UNINSTALL = :
> +POST_UNINSTALL = :
> +build_triplet = @build@
> +host_triplet = @host@
> +target_triplet = @target@
> +@USING_MAC_INTERPOSE_FALSE@am__append_1 =
> $(top_builddir)/interception/libinterception.la
> +@LIBBACKTRACE_SUPPORTED_TRUE@am__append_2 =
> $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
> +subdir = hwasan
> +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
> +am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
> + $(top_srcdir)/../config/depstand.m4 \
> + $(top_srcdir)/../config/lead-dot.m4 \
> + $(top_srcdir)/../config/libstdc++-raw-cxx.m4 \
> + $(top_srcdir)/../config/multi.m4 \
> + $(top_srcdir)/../config/override.m4 \
> + $(top_srcdir)/../config/stdint.m4 \
> + $(top_srcdir)/../config/toolexeclibdir.m4 \
> + $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
> + $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
> + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../libtool.m4 \
> + $(top_srcdir)/../config/enable.m4 \
> + $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
> +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
> + $(ACLOCAL_M4)
> +DIST_COMMON = $(srcdir)/Makefile.am
> +mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
> +CONFIG_HEADER = $(top_builddir)/config.h
> +CONFIG_CLEAN_FILES =
> +CONFIG_CLEAN_VPATH_FILES =
> +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
> +am__vpath_adj = case $$p in \
> + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
> + *) f=$$p;; \
> + esac;
> +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
> +am__install_max = 40
> +am__nobase_strip_setup = \
> + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
> +am__nobase_strip = \
> + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
> +am__nobase_list = $(am__nobase_strip_setup); \
> + for p in $$list; do echo "$$p $$p"; done | \
> + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
> + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
> + if (++n[$$2] == $(am__install_max)) \
> + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
> + END { for (dir in files) print dir, files[dir] }'
> +am__base_list = \
> + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
> + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
> +am__uninstall_files_from_dir = { \
> + test -z "$$files" \
> + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
> + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
> + $(am__cd) "$$dir" && rm -f $$files; }; \
> + }
> +am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
> +LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
> +am__DEPENDENCIES_1 =
> +libhwasan_la_DEPENDENCIES = \
> + $(top_builddir)/sanitizer_common/libsanitizer_common.la \
> + $(am__append_1) $(am__append_2) $(am__DEPENDENCIES_1)
> +am__objects_1 = hwasan_allocator.lo hwasan.lo hwasan_dynamic_shadow.lo \
> + hwasan_exceptions.lo hwasan_globals.lo hwasan_interceptors.lo \
> + hwasan_interceptors_vfork.lo hwasan_linux.lo \
> + hwasan_memintrinsics.lo hwasan_new_delete.lo \
> + hwasan_poisoning.lo hwasan_report.lo hwasan_setjmp.lo \
> + hwasan_tag_mismatch_aarch64.lo hwasan_thread.lo \
> + hwasan_thread_list.lo hwasan_type_test.lo
> +am_libhwasan_la_OBJECTS = $(am__objects_1)
> +libhwasan_la_OBJECTS = $(am_libhwasan_la_OBJECTS)
> +AM_V_lt = $(am__v_lt_@AM_V@)
> +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
> +am__v_lt_0 = --silent
> +am__v_lt_1 =
> +libhwasan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
> + $(CXXFLAGS) $(libhwasan_la_LDFLAGS) $(LDFLAGS) -o $@
> +AM_V_P = $(am__v_P_@AM_V@)
> +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
> +am__v_P_0 = false
> +am__v_P_1 = :
> +AM_V_GEN = $(am__v_GEN_@AM_V@)
> +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
> +am__v_GEN_0 = @echo " GEN " $@;
> +am__v_GEN_1 =
> +AM_V_at = $(am__v_at_@AM_V@)
> +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
> +am__v_at_0 = @
> +am__v_at_1 =
> +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
> +depcomp = $(SHELL) $(top_srcdir)/../depcomp
> +am__depfiles_maybe = depfiles
> +am__mv = mv -f
> +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
> + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
> +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \
> + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
> + $(AM_CCASFLAGS) $(CCASFLAGS)
> +AM_V_CPPAS = $(am__v_CPPAS_@AM_V@)
> +am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@)
> +am__v_CPPAS_0 = @echo " CPPAS " $@;
> +am__v_CPPAS_1 =
> +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
> + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
> +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
> + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
> + $(AM_CXXFLAGS) $(CXXFLAGS)
> +AM_V_CXX = $(am__v_CXX_@AM_V@)
> +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
> +am__v_CXX_0 = @echo " CXX " $@;
> +am__v_CXX_1 =
> +CXXLD = $(CXX)
> +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
> + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
> +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
> +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
> +am__v_CXXLD_0 = @echo " CXXLD " $@;
> +am__v_CXXLD_1 =
> +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
> + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
> +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
> + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
> + $(AM_CFLAGS) $(CFLAGS)
> +AM_V_CC = $(am__v_CC_@AM_V@)
> +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
> +am__v_CC_0 = @echo " CC " $@;
> +am__v_CC_1 =
> +CCLD = $(CC)
> +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
> + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
> + $(AM_LDFLAGS) $(LDFLAGS) -o $@
> +AM_V_CCLD = $(am__v_CCLD_@AM_V@)
> +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
> +am__v_CCLD_0 = @echo " CCLD " $@;
> +am__v_CCLD_1 =
> +SOURCES = $(libhwasan_la_SOURCES)
> +am__can_run_installinfo = \
> + case $$AM_UPDATE_INFO_DIR in \
> + n|no|NO) false;; \
> + *) (install-info --version) >/dev/null 2>&1;; \
> + esac
> +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
> +# Read a list of newline-separated strings from the standard input,
> +# and print each of them once, without duplicates. Input order is
> +# *not* preserved.
> +am__uniquify_input = $(AWK) '\
> + BEGIN { nonempty = 0; } \
> + { items[$$0] = 1; nonempty = 1; } \
> + END { if (nonempty) { for (i in items) print i; }; } \
> +'
> +# Make sure the list of sources is unique. This is necessary because,
> +# e.g., the same source file might be shared among _SOURCES variables
> +# for different programs/libraries.
> +am__define_uniq_tagged_files = \
> + list='$(am__tagged_files)'; \
> + unique=`for i in $$list; do \
> + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
> + done | $(am__uniquify_input)`
> +ETAGS = etags
> +CTAGS = ctags
> +ACLOCAL = @ACLOCAL@
> +ALLOC_FILE = @ALLOC_FILE@
> +AMTAR = @AMTAR@
> +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
> +AR = @AR@
> +AUTOCONF = @AUTOCONF@
> +AUTOHEADER = @AUTOHEADER@
> +AUTOMAKE = @AUTOMAKE@
> +AWK = @AWK@
> +BACKTRACE_SUPPORTED = @BACKTRACE_SUPPORTED@
> +BACKTRACE_SUPPORTS_THREADS = @BACKTRACE_SUPPORTS_THREADS@
> +BACKTRACE_USES_MALLOC = @BACKTRACE_USES_MALLOC@
> +CC = @CC@
> +CCAS = @CCAS@
> +CCASDEPMODE = @CCASDEPMODE@
> +CCASFLAGS = @CCASFLAGS@
> +CCDEPMODE = @CCDEPMODE@
> +CFLAGS = @CFLAGS@
> +CPP = @CPP@
> +CPPFLAGS = @CPPFLAGS@
> +CXX = @CXX@
> +CXXCPP = @CXXCPP@
> +CXXDEPMODE = @CXXDEPMODE@
> +CXXFLAGS = @CXXFLAGS@
> +CYGPATH_W = @CYGPATH_W@
> +DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS
> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DCAN_SANITIZE_UB=0
> -DHWASAN_WITH_INTERCEPTORS=1
> +DEPDIR = @DEPDIR@
> +DSYMUTIL = @DSYMUTIL@
> +DUMPBIN = @DUMPBIN@
> +ECHO_C = @ECHO_C@
> +ECHO_N = @ECHO_N@
> +ECHO_T = @ECHO_T@
> +EGREP = @EGREP@
> +EXEEXT = @EXEEXT@
> +EXTRA_ASFLAGS = @EXTRA_ASFLAGS@
> +EXTRA_CFLAGS = @EXTRA_CFLAGS@
> +EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
> +FGREP = @FGREP@
> +FORMAT_FILE = @FORMAT_FILE@
> +GREP = @GREP@
> +INSTALL = @INSTALL@
> +INSTALL_DATA = @INSTALL_DATA@
> +INSTALL_PROGRAM = @INSTALL_PROGRAM@
> +INSTALL_SCRIPT = @INSTALL_SCRIPT@
> +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
> +LD = @LD@
> +LDFLAGS = @LDFLAGS@
> +LIBOBJS = @LIBOBJS@
> +LIBS = @LIBS@
> +LIBSTDCXX_RAW_CXX_CXXFLAGS = @LIBSTDCXX_RAW_CXX_CXXFLAGS@
> +LIBSTDCXX_RAW_CXX_LDFLAGS = @LIBSTDCXX_RAW_CXX_LDFLAGS@
> +LIBTOOL = @LIBTOOL@
> +LIPO = @LIPO@
> +LN_S = @LN_S@
> +LTLIBOBJS = @LTLIBOBJS@
> +MAINT = @MAINT@
> +MAKEINFO = @MAKEINFO@
> +MKDIR_P = @MKDIR_P@
> +NM = @NM@
> +NMEDIT = @NMEDIT@
> +OBJDUMP = @OBJDUMP@
> +OBJEXT = @OBJEXT@
> +OTOOL = @OTOOL@
> +OTOOL64 = @OTOOL64@
> +PACKAGE = @PACKAGE@
> +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
> +PACKAGE_NAME = @PACKAGE_NAME@
> +PACKAGE_STRING = @PACKAGE_STRING@
> +PACKAGE_TARNAME = @PACKAGE_TARNAME@
> +PACKAGE_URL = @PACKAGE_URL@
> +PACKAGE_VERSION = @PACKAGE_VERSION@
> +PATH_SEPARATOR = @PATH_SEPARATOR@
> +RANLIB = @RANLIB@
> +RPC_DEFS = @RPC_DEFS@
> +SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS =
> @SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS@
> +SED = @SED@
> +SET_MAKE = @SET_MAKE@
> +SHELL = @SHELL@
> +STRIP = @STRIP@
> +TSAN_TARGET_DEPENDENT_OBJECTS = @TSAN_TARGET_DEPENDENT_OBJECTS@
> +VERSION = @VERSION@
> +VIEW_FILE = @VIEW_FILE@
> +abs_builddir = @abs_builddir@
> +abs_srcdir = @abs_srcdir@
> +abs_top_builddir = @abs_top_builddir@
> +abs_top_srcdir = @abs_top_srcdir@
> +ac_ct_CC = @ac_ct_CC@
> +ac_ct_CXX = @ac_ct_CXX@
> +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
> +am__include = @am__include@
> +am__leading_dot = @am__leading_dot@
> +am__quote = @am__quote@
> +am__tar = @am__tar@
> +am__untar = @am__untar@
> +bindir = @bindir@
> +build = @build@
> +build_alias = @build_alias@
> +build_cpu = @build_cpu@
> +build_os = @build_os@
> +build_vendor = @build_vendor@
> +builddir = @builddir@
> +datadir = @datadir@
> +datarootdir = @datarootdir@
> +docdir = @docdir@
> +dvidir = @dvidir@
> +enable_shared = @enable_shared@
> +enable_static = @enable_static@
> +exec_prefix = @exec_prefix@
> +get_gcc_base_ver = @get_gcc_base_ver@
> +host = @host@
> +host_alias = @host_alias@
> +host_cpu = @host_cpu@
> +host_os = @host_os@
> +host_vendor = @host_vendor@
> +htmldir = @htmldir@
> +includedir = @includedir@
> +infodir = @infodir@
> +install_sh = @install_sh@
> +libdir = @libdir@
> +libexecdir = @libexecdir@
> +link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> +link_liblsan = @link_liblsan@
> +link_libtsan = @link_libtsan@
> +link_libubsan = @link_libubsan@
> +localedir = @localedir@
> +localstatedir = @localstatedir@
> +mandir = @mandir@
> +mkdir_p = @mkdir_p@
> +multi_basedir = @multi_basedir@
> +oldincludedir = @oldincludedir@
> +pdfdir = @pdfdir@
> +prefix = @prefix@
> +program_transform_name = @program_transform_name@
> +psdir = @psdir@
> +sbindir = @sbindir@
> +sharedstatedir = @sharedstatedir@
> +srcdir = @srcdir@
> +sysconfdir = @sysconfdir@
> +target = @target@
> +target_alias = @target_alias@
> +target_cpu = @target_cpu@
> +target_noncanonical = @target_noncanonical@
> +target_os = @target_os@
> +target_vendor = @target_vendor@
> +toolexecdir = @toolexecdir@
> +toolexeclibdir = @toolexeclibdir@
> +top_build_prefix = @top_build_prefix@
> +top_builddir = @top_builddir@
> +top_srcdir = @top_srcdir@
> +AM_CPPFLAGS = -I $(top_srcdir)/include -I $(top_srcdir)
> +
> +# May be used by toolexeclibdir.
> +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
> +AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic \
> + -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti \
> + -funwind-tables -fvisibility=hidden -Wno-variadic-macros \
> + -fno-ipa-icf $(LIBSTDCXX_RAW_CXX_CXXFLAGS) -std=gnu++14 \
> + $(EXTRA_CXXFLAGS)
> +ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config
> +toolexeclib_LTLIBRARIES = libhwasan.la
> +hwasan_files = \
> + hwasan_allocator.cpp \
> + hwasan.cpp \
> + hwasan_dynamic_shadow.cpp \
> + hwasan_exceptions.cpp \
> + hwasan_flags.inc \
> + hwasan_globals.cpp \
> + hwasan_interceptors.cpp \
> + hwasan_interceptors_vfork.S \
> + hwasan_linux.cpp \
> + hwasan_memintrinsics.cpp \
> + hwasan_new_delete.cpp \
> + hwasan_poisoning.cpp \
> + hwasan_report.cpp \
> + hwasan_setjmp.S \
> + hwasan_tag_mismatch_aarch64.S \
> + hwasan_thread.cpp \
> + hwasan_thread_list.cpp \
> + hwasan_type_test.cpp
> +
> +libhwasan_la_SOURCES = $(hwasan_files)
> +libhwasan_la_LIBADD = \
> + $(top_builddir)/sanitizer_common/libsanitizer_common.la \
> + $(am__append_1) $(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
> +libhwasan_la_LDFLAGS = -version-info `grep -v '^\#'
> $(srcdir)/libtool-version` $(link_libhwasan)
> +
> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
> +# values defined in terms of make variables, as is the case for CC and
> +# friends when we are called from the top level Makefile.
> +AM_MAKEFLAGS = \
> + "AR_FLAGS=$(AR_FLAGS)" \
> + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> + "CFLAGS=$(CFLAGS)" \
> + "CXXFLAGS=$(CXXFLAGS)" \
> + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
> + "INSTALL=$(INSTALL)" \
> + "INSTALL_DATA=$(INSTALL_DATA)" \
> + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
> + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
> + "JC1FLAGS=$(JC1FLAGS)" \
> + "LDFLAGS=$(LDFLAGS)" \
> + "LIBCFLAGS=$(LIBCFLAGS)" \
> + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
> + "MAKE=$(MAKE)" \
> + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
> + "PICFLAG=$(PICFLAG)" \
> + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
> + "SHELL=$(SHELL)" \
> + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
> + "exec_prefix=$(exec_prefix)" \
> + "infodir=$(infodir)" \
> + "libdir=$(libdir)" \
> + "prefix=$(prefix)" \
> + "includedir=$(includedir)" \
> + "AR=$(AR)" \
> + "AS=$(AS)" \
> + "LD=$(LD)" \
> + "LIBCFLAGS=$(LIBCFLAGS)" \
> + "NM=$(NM)" \
> + "PICFLAG=$(PICFLAG)" \
> + "RANLIB=$(RANLIB)" \
> + "DESTDIR=$(DESTDIR)"
> +
> +MAKEOVERRIDES =
> +all: all-am
> +
> +.SUFFIXES:
> +.SUFFIXES: .S .cpp .lo .o .obj
> +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am
> $(am__configure_deps)
> + @for dep in $?; do \
> + case '$(am__configure_deps)' in \
> + *$$dep*) \
> + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
> + && { if test -f $@; then exit 0; else break; fi; }; \
> + exit 1;; \
> + esac; \
> + done; \
> + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign hwasan/Makefile'; \
> + $(am__cd) $(top_srcdir) && \
> + $(AUTOMAKE) --foreign hwasan/Makefile
> +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
> + @case '$?' in \
> + *config.status*) \
> + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
> + *) \
> + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
> $(am__depfiles_maybe)'; \
> + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
> $(am__depfiles_maybe);; \
> + esac;
> +
> +$(top_builddir)/config.status: $(top_srcdir)/configure
> $(CONFIG_STATUS_DEPENDENCIES)
> + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +
> +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
> + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
> + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
> +$(am__aclocal_m4_deps):
> +
> +install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
> + @$(NORMAL_INSTALL)
> + @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" ||
> list=; \
> + list2=; for p in $$list; do \
> + if test -f $$p; then \
> + list2="$$list2 $$p"; \
> + else :; fi; \
> + done; \
> + test -z "$$list2" || { \
> + echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \
> + $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
> + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install
> $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \
> + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install
> $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \
> + }
> +
> +uninstall-toolexeclibLTLIBRARIES:
> + @$(NORMAL_UNINSTALL)
> + @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" ||
> list=; \
> + for p in $$list; do \
> + $(am__strip_dir) \
> + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall
> rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \
> + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f
> "$(DESTDIR)$(toolexeclibdir)/$$f"; \
> + done
> +
> +clean-toolexeclibLTLIBRARIES:
> + -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f
> $(toolexeclib_LTLIBRARIES)
> + @list='$(toolexeclib_LTLIBRARIES)'; \
> + locs=`for p in $$list; do echo $$p; done | \
> + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
> + sort -u`; \
> + test -z "$$locs" || { \
> + echo rm -f $${locs}; \
> + rm -f $${locs}; \
> + }
> +
> +libhwasan.la: $(libhwasan_la_OBJECTS) $(libhwasan_la_DEPENDENCIES)
> $(EXTRA_libhwasan_la_DEPENDENCIES)
> + $(AM_V_CXXLD)$(libhwasan_la_LINK) -rpath $(toolexeclibdir)
> $(libhwasan_la_OBJECTS) $(libhwasan_la_LIBADD) $(LIBS)
> +
> +mostlyclean-compile:
> + -rm -f *.$(OBJEXT)
> +
> +distclean-compile:
> + -rm -f *.tab.c
> +
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hwasan.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_allocator.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_dynamic_shadow.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_exceptions.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_globals.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_interceptors.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_interceptors_vfork.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hwasan_linux.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_memintrinsics.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_new_delete.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_poisoning.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hwasan_report.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hwasan_setjmp.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_tag_mismatch_aarch64.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hwasan_thread.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_thread_list.Plo@am__quote@
> +@AMDEP_TRUE@@am__include@
> @am__quote@./$(DEPDIR)/hwasan_type_test.Plo@am__quote@
> +
> +.S.o:
> +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -MT $@ -MD -MP -MF
> $(DEPDIR)/$*.Tpo -c -o $@ $<
> +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Po
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@'
> libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o
> $@ $<
> +
> +.S.obj:
> +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -MT $@ -MD -MP -MF
> $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
> +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Po
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@'
> libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o
> $@ `$(CYGPATH_W) '$<'`
> +
> +.S.lo:
> +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(LTCPPASCOMPILE) -MT $@ -MD -MP
> -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
> +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Plo
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@'
> libtool=yes @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o
> $@ $<
> +
> +.cpp.o:
> +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF
> $(DEPDIR)/$*.Tpo -c -o $@ $<
> +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Po
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@'
> libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
> +
> +.cpp.obj:
> +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF
> $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
> +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Po
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@'
> libtool=no @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@
> `$(CYGPATH_W) '$<'`
> +
> +.cpp.lo:
> +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF
> $(DEPDIR)/$*.Tpo -c -o $@ $<
> +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo
> $(DEPDIR)/$*.Plo
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@'
> libtool=yes @AMDEPBACKSLASH@
> +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
> $(depcomp) @AMDEPBACKSLASH@
> +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@
> $<
> +
> +mostlyclean-libtool:
> + -rm -f *.lo
> +
> +clean-libtool:
> + -rm -rf .libs _libs
> +
> +ID: $(am__tagged_files)
> + $(am__define_uniq_tagged_files); mkid -fID $$unique
> +tags: tags-am
> +TAGS: tags
> +
> +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
> + set x; \
> + here=`pwd`; \
> + $(am__define_uniq_tagged_files); \
> + shift; \
> + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
> + test -n "$$unique" || unique=$$empty_fix; \
> + if test $$# -gt 0; then \
> + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
> + "$$@" $$unique; \
> + else \
> + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
> + $$unique; \
> + fi; \
> + fi
> +ctags: ctags-am
> +
> +CTAGS: ctags
> +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
> + $(am__define_uniq_tagged_files); \
> + test -z "$(CTAGS_ARGS)$$unique" \
> + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
> + $$unique
> +
> +GTAGS:
> + here=`$(am__cd) $(top_builddir) && pwd` \
> + && $(am__cd) $(top_srcdir) \
> + && gtags -i $(GTAGS_ARGS) "$$here"
> +cscopelist: cscopelist-am
> +
> +cscopelist-am: $(am__tagged_files)
> + list='$(am__tagged_files)'; \
> + case "$(srcdir)" in \
> + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
> + *) sdir=$(subdir)/$(srcdir) ;; \
> + esac; \
> + for i in $$list; do \
> + if test -f "$$i"; then \
> + echo "$(subdir)/$$i"; \
> + else \
> + echo "$$sdir/$$i"; \
> + fi; \
> + done >> $(top_builddir)/cscope.files
> +
> +distclean-tags:
> + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
> +check-am: all-am
> +check: check-am
> +all-am: Makefile $(LTLIBRARIES)
> +installdirs:
> + for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
> + test -z "$$dir" || $(MKDIR_P) "$$dir"; \
> + done
> +install: install-am
> +install-exec: install-exec-am
> +install-data: install-data-am
> +uninstall: uninstall-am
> +
> +install-am: all-am
> + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
> +
> +installcheck: installcheck-am
> +install-strip:
> + if test -z '$(STRIP)'; then \
> + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
> + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
> \
> + install; \
> + else \
> + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
> + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s
> \
> + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
> + fi
> +mostlyclean-generic:
> +
> +clean-generic:
> +
> +distclean-generic:
> + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
> + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f
> $(CONFIG_CLEAN_VPATH_FILES)
> +
> +maintainer-clean-generic:
> + @echo "This command is intended for maintainers to use"
> + @echo "it deletes files that may require special tools to rebuild."
> +clean: clean-am
> +
> +clean-am: clean-generic clean-libtool clean-toolexeclibLTLIBRARIES \
> + mostlyclean-am
> +
> +distclean: distclean-am
> + -rm -rf ./$(DEPDIR)
> + -rm -f Makefile
> +distclean-am: clean-am distclean-compile distclean-generic \
> + distclean-tags
> +
> +dvi: dvi-am
> +
> +dvi-am:
> +
> +html: html-am
> +
> +html-am:
> +
> +info: info-am
> +
> +info-am:
> +
> +install-data-am:
> +
> +install-dvi: install-dvi-am
> +
> +install-dvi-am:
> +
> +install-exec-am: install-toolexeclibLTLIBRARIES
> +
> +install-html: install-html-am
> +
> +install-html-am:
> +
> +install-info: install-info-am
> +
> +install-info-am:
> +
> +install-man:
> +
> +install-pdf: install-pdf-am
> +
> +install-pdf-am:
> +
> +install-ps: install-ps-am
> +
> +install-ps-am:
> +
> +installcheck-am:
> +
> +maintainer-clean: maintainer-clean-am
> + -rm -rf ./$(DEPDIR)
> + -rm -f Makefile
> +maintainer-clean-am: distclean-am maintainer-clean-generic
> +
> +mostlyclean: mostlyclean-am
> +
> +mostlyclean-am: mostlyclean-compile mostlyclean-generic \
> + mostlyclean-libtool
> +
> +pdf: pdf-am
> +
> +pdf-am:
> +
> +ps: ps-am
> +
> +ps-am:
> +
> +uninstall-am: uninstall-toolexeclibLTLIBRARIES
> +
> +.MAKE: install-am install-strip
> +
> +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
> + clean-libtool clean-toolexeclibLTLIBRARIES cscopelist-am ctags \
> + ctags-am distclean distclean-compile distclean-generic \
> + distclean-libtool distclean-tags dvi dvi-am html html-am info \
> + info-am install install-am install-data install-data-am \
> + install-dvi install-dvi-am install-exec install-exec-am \
> + install-html install-html-am install-info install-info-am \
> + install-man install-pdf install-pdf-am install-ps \
> + install-ps-am install-strip install-toolexeclibLTLIBRARIES \
> + installcheck installcheck-am installdirs maintainer-clean \
> + maintainer-clean-generic mostlyclean mostlyclean-compile \
> + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
> + tags tags-am uninstall uninstall-am \
> + uninstall-toolexeclibLTLIBRARIES
> +
> +.PRECIOUS: Makefile
> +
> +
> +# Tell versions [3.59,3.63) of GNU make to not export all variables.
> +# Otherwise a system limit (for SysV at least) may be exceeded.
> +.NOEXPORT:
> diff --git a/libsanitizer/hwasan/libtool-version
> b/libsanitizer/hwasan/libtool-version
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..d1f9aa1b950cc95efea87b7a70e96e44df0f9c17
> --- /dev/null
> +++ b/libsanitizer/hwasan/libtool-version
> @@ -0,0 +1,6 @@
> +# This file is used to maintain libtool version info for libhwasan. See
> +# the libtool manual to understand the meaning of the fields. This is
> +# a separate file so that version updates don't involve re-running
> +# automake.
> +# CURRENT:REVISION:AGE
> +0:0:0
> diff --git a/libsanitizer/interception/Makefile.in
> b/libsanitizer/interception/Makefile.in
> index
> a20f52ea4b825e733b2c0ca24780e766ad69367d..4a872cb49690e7b739ad07d73a517849be2ba1ea
> 100644
> --- a/libsanitizer/interception/Makefile.in
> +++ b/libsanitizer/interception/Makefile.in
> @@ -301,6 +301,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/libbacktrace/Makefile.in
> b/libsanitizer/libbacktrace/Makefile.in
> index
> c843bcee0e4d39d788470d2d03b53d2f817aa231..3f05cdf3d621be74ee6346852c80b71f885e1203
> 100644
> --- a/libsanitizer/libbacktrace/Makefile.in
> +++ b/libsanitizer/libbacktrace/Makefile.in
> @@ -351,6 +351,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/libsanitizer.spec.in
> b/libsanitizer/libsanitizer.spec.in
> index
> a4fa87d8dfc51549b0f932b31a610db1a2e86c29..70a33574d7b1d494c4875cfc41f29606bde2172e
> 100644
> --- a/libsanitizer/libsanitizer.spec.in
> +++ b/libsanitizer/libsanitizer.spec.in
> @@ -3,6 +3,8 @@
>
> *link_libasan: @link_libasan@
>
> +*link_libhwasan: @link_libhwasan@
> +
> *link_libtsan: @link_libtsan@
>
> *link_libubsan: @link_libubsan@
> diff --git a/libsanitizer/lsan/Makefile.in b/libsanitizer/lsan/Makefile.in
> index
> 23a6fa69ec6941ec8a3f02f6a283b8015a8f706f..fbe87cd24961f0ca2d338b43c9d81af709a02802
> 100644
> --- a/libsanitizer/lsan/Makefile.in
> +++ b/libsanitizer/lsan/Makefile.in
> @@ -346,6 +346,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/sanitizer_common/Makefile.in
> b/libsanitizer/sanitizer_common/Makefile.in
> index
> 299de50b34a6c1cbb33d6f3536d8df1a132d2f59..7e5555cc9df53c5b081313d22ffc532adbe967a5
> 100644
> --- a/libsanitizer/sanitizer_common/Makefile.in
> +++ b/libsanitizer/sanitizer_common/Makefile.in
> @@ -338,6 +338,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/tsan/Makefile.in b/libsanitizer/tsan/Makefile.in
> index
> bfbdfe0d89c635c7ca1fe246722ec04949002f1b..ce11d2497b75a306f80f1701110b5eefc5330318
> 100644
> --- a/libsanitizer/tsan/Makefile.in
> +++ b/libsanitizer/tsan/Makefile.in
> @@ -375,6 +375,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@
> diff --git a/libsanitizer/ubsan/Makefile.in b/libsanitizer/ubsan/Makefile.in
> index
> 312d6a5e5137ab64faef9a3f0f44ae3284c23e1b..2775c1422137d46d0d68a0a516826e6d62daf137
> 100644
> --- a/libsanitizer/ubsan/Makefile.in
> +++ b/libsanitizer/ubsan/Makefile.in
> @@ -340,6 +340,7 @@ install_sh = @install_sh@
> libdir = @libdir@
> libexecdir = @libexecdir@
> link_libasan = @link_libasan@
> +link_libhwasan = @link_libhwasan@
> link_liblsan = @link_liblsan@
> link_libtsan = @link_libtsan@
> link_libubsan = @link_libubsan@