>>    /* 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

Reply via email to