Ping
On 17/12/2019 14:11, Matthew Malcomson wrote: > I've noticed a few minor problems with this patch series after I sent it > out (mostly testcase stuff, one documentation tidy-up, but also that one > patch didn't bootstrap due to something fixed in a later patch). > > I also rely on a documentation change that isn't part of the series. > > I figure I should make this easy on anyone that wants to try the patch > series out, so I'm attaching a compressed tarfile containing the entire > patch series plus the additional documentation patch so it can all be > applied at once with `git apply *`. > > It's attached. > > Matthew. > > > > On 12/12/2019 15:18, Matthew Malcomson wrote: >> Hello, >> >> I've gone through the suggestions Martin made and implemented the ones I >> think >> I can implement for GCC10. >> >> The two functionality changes in this version are: >> Added the --param's hwasan-instrument-reads, hwasan-instrument-writes, >> hwasan-instrument-allocas, hwasan-memintrin, options. I.e. Those that asan >> has >> and that make sense for hwasan. >> >> Avoided HWASAN_STACK_BACKGROUND in hwasan_increment_tag when using a >> deterministic tagging approach. >> >> >> There are a lot of extra comments and tests. >> >> >> Bootstrapped and regtested on x86_64 and AArch64. >> Bootstrapped with `--with-build-config=bootstrap-hwasan` on AArch64 and >> hwasan >> features tested there. >> Built the linux kernel using this feature and ran the test_kasan.ko testing >> to >> check the this works for the kernel. >> (NOTE: I actually did all the above testing before a search and replace of >> `memory_tagging_p` for `hwasan_sanitize_p` and fixing a typo in the >> `hwasan-instrument-allocas` parameter name, I will run all the tests again >> before committing but figure I'll send this out now since I fully expect the >> tests to still pass). >> >> >> I noticed one extra testsuite failure from those mentioned in the previous >> version emails: g++.dg/cpp2a/ucn2.C. >> I believe this is HWASAN correctly catching a problem in the compiler. >> I've logged the issue here >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92919 . >> >> >> I haven't gotten ASAN_MARK to print as HWASAN_MARK when using memory tagging, >> since I'm not sure the way I found to implement this would be acceptable. >> The >> inlined patch below works but it requires a special declaration instead of >> just >> an ~#include~. >> >> >> diff --git a/gcc/internal-fn.h b/gcc/internal-fn.h >> index a1bc081..d81eb12 100644 >> --- a/gcc/internal-fn.h >> +++ b/gcc/internal-fn.h >> @@ -101,10 +101,16 @@ extern void init_internal_fns (); >> >> extern const char *const internal_fn_name_array[]; >> >> + >> +extern bool hwasan_sanitize_p (void); >> static inline const char * >> internal_fn_name (enum internal_fn fn) >> { >> - return internal_fn_name_array[(int) fn]; >> + const char *ret = internal_fn_name_array[(int) fn]; >> + if (! strcmp (ret, "ASAN_MARK") >> + && hwasan_sanitize_p ()) >> + return "HWASAN_MARK"; >> + return ret; >> } >> >> extern internal_fn lookup_internal_fn (const char *); >> >> >> Entire patch series attached to cover letter. >>