Matthew Malcomson <matthew.malcom...@arm.com> writes: > Though the library has limited support for x86, we don't have any > support for generating code targeting x86 so there is no point building > for that target. > > Ensure we build for AArch64 but not for AArch64 ilp32. > > libsanitizer/ChangeLog: > > * Makefile.am: Condition Build hwasan directory. > * Makefile.in: Regenerate. > * configure: Regenerate. > * configure.ac: Set HWASAN_SUPPORTED based on target > architecture. > * configure.tgt: Likewise.
OK, thanks. Richard > ############### Attachment also inlined for ease of reply > ############### > > > diff --git a/libsanitizer/Makefile.am b/libsanitizer/Makefile.am > index > 2a7e8e1debe838719db0f0fad218b2543cc3111b..065a65e78d49f7689a01ecb64db1f07ca83aa987 > 100644 > --- a/libsanitizer/Makefile.am > +++ b/libsanitizer/Makefile.am > @@ -14,7 +14,7 @@ endif > if LIBBACKTRACE_SUPPORTED > SUBDIRS += libbacktrace > endif > -SUBDIRS += lsan asan ubsan hwasan > +SUBDIRS += lsan asan ubsan > nodist_saninclude_HEADERS += \ > include/sanitizer/lsan_interface.h \ > include/sanitizer/asan_interface.h \ > @@ -23,6 +23,9 @@ nodist_saninclude_HEADERS += \ > if TSAN_SUPPORTED > SUBDIRS += tsan > endif > +if HWASAN_SUPPORTED > +SUBDIRS += hwasan > +endif > endif > > ## May be used by toolexeclibdir. > diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in > index > 2c57d49cbffdb486645aeb5f2c0f85d6e0fad124..3873ea4d7050f04a3f7bbd0dd3f2a71e9b65d287 > 100644 > --- a/libsanitizer/Makefile.in > +++ b/libsanitizer/Makefile.in > @@ -97,6 +97,7 @@ target_triplet = @target@ > @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 > +@HWASAN_SUPPORTED_TRUE@@SANITIZER_SUPPORTED_TRUE@am__append_5 = hwasan > subdir = . > ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 > am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ > @@ -208,7 +209,7 @@ ETAGS = etags > CTAGS = ctags > CSCOPE = cscope > DIST_SUBDIRS = sanitizer_common interception libbacktrace lsan asan \ > - ubsan hwasan tsan > + ubsan tsan hwasan > ACLOCAL = @ACLOCAL@ > ALLOC_FILE = @ALLOC_FILE@ > AMTAR = @AMTAR@ > @@ -364,7 +365,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@ hwasan $(am__append_4) > +@SANITIZER_SUPPORTED_TRUE@ $(am__append_4) $(am__append_5) > 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/configure b/libsanitizer/configure > index > 27e72c089cb891dcce09494fa9e39eebe55d2598..720d4e17044170e4b91c42fede685761d98c1965 > 100755 > --- a/libsanitizer/configure > +++ b/libsanitizer/configure > @@ -659,6 +659,8 @@ link_libubsan > link_libtsan > link_libhwasan > link_libasan > +HWASAN_SUPPORTED_FALSE > +HWASAN_SUPPORTED_TRUE > LSAN_SUPPORTED_FALSE > LSAN_SUPPORTED_TRUE > TSAN_SUPPORTED_FALSE > @@ -12362,7 +12364,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 12365 "configure" > +#line 12367 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > @@ -12468,7 +12470,7 @@ else > lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 > lt_status=$lt_dlunknown > cat > conftest.$ac_ext <<_LT_EOF > -#line 12471 "configure" > +#line 12473 "configure" > #include "confdefs.h" > > #if HAVE_DLFCN_H > @@ -15819,6 +15821,7 @@ fi > # Get target configury. > unset TSAN_SUPPORTED > unset LSAN_SUPPORTED > +unset HWASAN_SUPPORTED > . ${srcdir}/configure.tgt > if test "x$TSAN_SUPPORTED" = "xyes"; then > TSAN_SUPPORTED_TRUE= > @@ -15836,6 +15839,14 @@ else > LSAN_SUPPORTED_FALSE= > fi > > + if test "x$HWASAN_SUPPORTED" = "xyes"; then > + HWASAN_SUPPORTED_TRUE= > + HWASAN_SUPPORTED_FALSE='#' > +else > + HWASAN_SUPPORTED_TRUE='#' > + HWASAN_SUPPORTED_FALSE= > +fi > + > > # Check for functions needed. > for ac_func in clock_getres clock_gettime clock_settime lstat readlink > @@ -16818,7 +16829,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 > hwasan/Makefile ubsan/Makefile" > +ac_config_files="$ac_config_files interception/Makefile > sanitizer_common/Makefile libbacktrace/Makefile lsan/Makefile asan/Makefile > ubsan/Makefile" > > > if test "x$TSAN_SUPPORTED" = "xyes"; then > @@ -16826,6 +16837,11 @@ if test "x$TSAN_SUPPORTED" = "xyes"; then > > fi > > +if test "x$HWASAN_SUPPORTED" = "xyes"; then > + ac_config_files="$ac_config_files hwasan/Makefile" > + > +fi > + > > > > @@ -17090,6 +17106,10 @@ if test -z "${LSAN_SUPPORTED_TRUE}" && test -z > "${LSAN_SUPPORTED_FALSE}"; then > as_fn_error $? "conditional \"LSAN_SUPPORTED\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > fi > +if test -z "${HWASAN_SUPPORTED_TRUE}" && test -z > "${HWASAN_SUPPORTED_FALSE}"; then > + as_fn_error $? "conditional \"HWASAN_SUPPORTED\" was never defined. > +Usually this means the macro was only invoked conditionally." "$LINENO" 5 > +fi > if test -z "${USING_MAC_INTERPOSE_TRUE}" && test -z > "${USING_MAC_INTERPOSE_FALSE}"; then > as_fn_error $? "conditional \"USING_MAC_INTERPOSE\" was never defined. > Usually this means the macro was only invoked conditionally." "$LINENO" 5 > @@ -18099,9 +18119,9 @@ 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" ;; > + "hwasan/Makefile") CONFIG_FILES="$CONFIG_FILES hwasan/Makefile" ;; > > *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; > esac > @@ -20035,7 +20055,7 @@ _EOF > . ${multi_basedir}/config-ml.in > { ml_norecursion=; unset ml_norecursion;} > ;; > - "hwasan/Makefile":F) cat > vpsed$$ << \_EOF > + "ubsan/Makefile":F) cat > vpsed$$ << \_EOF > s!`test -f '$<' || echo '$(srcdir)/'`!! > _EOF > sed -f vpsed$$ $ac_file > tmp$$ > @@ -20046,18 +20066,18 @@ _EOF > . ${multi_basedir}/config-ml.in > { ml_norecursion=; unset ml_norecursion;} > ;; > - "ubsan/Makefile":F) cat > vpsed$$ << \_EOF > + "tsan/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;} > + 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;} > ;; > - "tsan/Makefile":F) cat > vpsed$$ << \_EOF > + "hwasan/Makefile":F) cat > vpsed$$ << \_EOF > s!`test -f '$<' || echo '$(srcdir)/'`!! > _EOF > sed -f vpsed$$ $ac_file > tmp$$ > diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac > index > f0d526c52967112905115c8fbe3540427a27ae03..13cd302030db7d0107ac8de0863d42558dea5c71 > 100644 > --- a/libsanitizer/configure.ac > +++ b/libsanitizer/configure.ac > @@ -96,9 +96,11 @@ fi > # Get target configury. > unset TSAN_SUPPORTED > unset LSAN_SUPPORTED > +unset HWASAN_SUPPORTED > . ${srcdir}/configure.tgt > AM_CONDITIONAL(TSAN_SUPPORTED, [test "x$TSAN_SUPPORTED" = "xyes"]) > AM_CONDITIONAL(LSAN_SUPPORTED, [test "x$LSAN_SUPPORTED" = "xyes"]) > +AM_CONDITIONAL(HWASAN_SUPPORTED, [test "x$HWASAN_SUPPORTED" = "xyes"]) > > # Check for functions needed. > AC_CHECK_FUNCS(clock_getres clock_gettime clock_settime lstat readlink) > @@ -352,7 +354,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 hwasan ubsan], [DIR/Makefile ]), > +AC_CONFIG_FILES(AC_FOREACH([DIR], [interception sanitizer_common > libbacktrace lsan asan ubsan], [DIR/Makefile ]), > [cat > vpsed$$ << \_EOF > s!`test -f '$<' || echo '$(srcdir)/'`!! > _EOF > @@ -380,6 +382,21 @@ _EOF > ]) > fi > > +if test "x$HWASAN_SUPPORTED" = "xyes"; then > + AC_CONFIG_FILES(AC_FOREACH([DIR], [hwasan], [DIR/Makefile ]), > + [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 > + AS_UNSET([ml_norecursion]) > +]) > +fi > + > AC_SUBST([TSAN_TARGET_DEPENDENT_OBJECTS]) > AC_SUBST([SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS]) > > diff --git a/libsanitizer/configure.tgt b/libsanitizer/configure.tgt > index > 52503f1a880ba08b515b8a429ac44a262873f74b..d5b8dc4ec198c2a73dcef530a6e0d6a227eb30ee > 100644 > --- a/libsanitizer/configure.tgt > +++ b/libsanitizer/configure.tgt > @@ -60,6 +60,7 @@ case "${target}" in > TSAN_SUPPORTED=yes > LSAN_SUPPORTED=yes > TSAN_TARGET_DEPENDENT_OBJECTS=tsan_rtl_aarch64.lo > + HWASAN_SUPPORTED=yes > fi > ;; > x86_64-*-darwin1[2-9]* | i?86-*-darwin1[2-9]*)