>> /* Check error recovery for -fsanitize-recover option. */ >> for (int i = 0; sanitizer_opts[i].name != NULL; ++i) >> if ((opts->x_flag_sanitize_recover & sanitizer_opts[i].flag) >> @@ -2300,7 +2319,8 @@ parse_sanitizer_options (const char *p, location_t >> loc, int scode, >> else if (code == OPT_fsanitize_recover_) >> flags |= ~(SANITIZE_THREAD | SANITIZE_LEAK >> | SANITIZE_UNREACHABLE | SANITIZE_RETURN >> - | SANITIZE_SHADOW_CALL_STACK); >> + | SANITIZE_SHADOW_CALL_STACK >> + | SANITIZE_MEMTAG_STACK); > > Could you explain this? How is the -fsanitize-recover choice propagated > for MTE tagging? For traditional santisers it affects the arguments > to the sanitizer library calls, but I was under the impression that > that wouldn't be the case for MTE. > I added this to avoid calling memtag sanitizer when -fsanitize-recover=all option is passed. Without this hack, one will get:
cc1: error: '-fsanitize-recover=memtag-stack' is not supported The test which fails is: runtest ubsan.exp=sanitize-recover-3.c Thank you, Claudiu