Matthew Malcomson <matthew.malcom...@arm.com> 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@

Reply via email to