On 07/11/2019 18:37, Matthew Malcomson wrote: > I have rebased this series onto Martin Liska's patches that take the most > recent libhwasan from upstream LLVM. > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00340.html > > I've also cleared up some nomenclature (I had previously used the word > 'colour' > a few times instead of the word 'tag' and that clashes with other > descriptions) > and based the patch series off a more recent GCC revision (r277678). > > There's an ongoing discussion on whether to have __SANITIZER_ADDRESS__, or > __SANITIZER_HWADDRESS__, but I'm keeping that discussion to the existing > thread. > > Similarly there's still the question around C++ exceptions that I'm keeping to > the existing thread (on the first patch series). > > > NOTE: > Unfortunately, there's a bug in the more recent version of GCC I rebased > onto. > Hwasan catches this when bootstrapping, which means bootstrapping with > hwasan > fails. > I'm working on tracking the bug down now, but sending this series upstream > for visibility while that happens. > > Bugzilla link: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92410 > > Entire patch series attached to cover letter. >
It seems that PR 92410 is a little more extensive than it originally looked (in fixing it I saw instances of the same basic problem elsewhere too). Just in case anyone wants to take a look at this HWASAN series in the meantime there are two ways: 1) Bootstrap with hwasan not crashing on error. 2) Apply the last patch I posted on http://pdtlreviewboard.cambridge.arm.com/r/12149/ Number 1 requires the patch below and to run make with HWASAN_OPTIONS set to "halt_on_error=0 exitcode=0". diff --git a/config/bootstrap-hwasan.mk b/config/bootstrap-hwasan.mk index 91989f4..3672b91 100644 --- a/config/bootstrap-hwasan.mk +++ b/config/bootstrap-hwasan.mk @@ -4,8 +4,8 @@ # breaks. Running with a random frame tag gives approx. 50% chance of # bootstrap comparison diff in libiberty/alloca.c. -STAGE2_CFLAGS += -fsanitize=hwaddress --param hwasan-random-frame-tag=0 -STAGE3_CFLAGS += -fsanitize=hwaddress --param hwasan-random-frame-tag=0 +STAGE2_CFLAGS += -fsanitize-recover=hwaddress -fsanitize=hwaddress --param hwasan-random-frame-tag=0 +STAGE3_CFLAGS += -fsanitize-recover=hwaddress -fsanitize=hwaddress --param hwasan-random-frame-tag=0 POSTSTAGE1_LDFLAGS += -fsanitize=hwaddress -static-libhwasan \ -B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/ \ -B$$r/prev-$(TARGET_SUBDIR)/libsanitizer/hwasan/ \ Number 2 option avoids the current problem, but causes two extra testsuite failures (unrelated to hwasan) in gcc.dg/fold-eqandshift-1.c and gcc.c-torture/compile/pr32482.c. These are existing bugs that a new `assert` catches.
