On 05/11/2016 04:20 PM, Jakub Jelinek wrote:
> On Wed, May 11, 2016 at 04:13:27PM +0200, Martin Liška wrote:
>> It's bit confusing for a use that -fsanitize-recover=address does not recover
>> an instrumented binary. As a default value of halt_on_error is set to 0 for 
>> address sanitizer,
>> the binary fails on a first error.
>>
>> Following patch attempts to explain the ENV variable.
>>
>> Ready for trunk?
>> Thanks,
>> Martin
> 
>> >From 95f694a92428759773e5259323e82cbf49eade34 Mon Sep 17 00:00:00 2001
>> From: marxin <mli...@suse.cz>
>> Date: Wed, 11 May 2016 16:05:49 +0200
>> Subject: [PATCH] Document ASAN_OPTIONS="halt_on_error" env variable.
>>
>> gcc/ChangeLog:
>>
>> 2016-05-11  Martin Liska  <mli...@suse.cz>
>>
>>      * doc/invoke.texi: Explain connection between -fsanitize-recover=address
>>      and ASAN_OPTIONS="halt_on_error=1".
>> ---
>>  gcc/doc/invoke.texi | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
>> index a54a0af..722647a 100644
>> --- a/gcc/doc/invoke.texi
>> +++ b/gcc/doc/invoke.texi
>> @@ -9998,6 +9998,12 @@ for which this feature is experimental.
>>  accepted, the former enables recovery for all sanitizers that support it,
>>  the latter disables recovery for all sanitizers that support it.
>>  
>> +The error recovery mode can be overwritten by @code{halt_on_error=1} 
>> provided
>> +to one of the following environment variables: @env{ASAN_OPTIONS}, 
>> @env{TSAN_OPTIONS}
>> +or @env{UBSAN_OPTIONS}. The default value is set to @code{halt_on_error=1},
>> +only the address sanitizer by default does not recover and 
>> @code{halt_on_error=0}
>> +must be provided.
> 
> It can be overridden (not overwritten?) only in one way I believe, i.e. the
> code must be built with -fsanitize-recover=<whatever> (whether by default or
> not) and the recovery must be enabled in the library (by default or using
> env var) for successful recovery.  If you compile without recovery, then no
> matter what you do on the env var side it still will be fatal.
> So the docs need to make that clear.
> 
>       Jakub
> 

Thank you Jakub for the note. What about the second version of the patch?

Thanks,
Martin
>From da688c187067dc5c475a4ab5b844c11c4bcd0494 Mon Sep 17 00:00:00 2001
From: marxin <mli...@suse.cz>
Date: Wed, 11 May 2016 16:05:49 +0200
Subject: [PATCH] Document ASAN_OPTIONS="halt_on_error" env variable.

gcc/ChangeLog:

2016-05-11  Martin Liska  <mli...@suse.cz>

	* doc/invoke.texi: Explain connection between -fsanitize-recover=address
	and ASAN_OPTIONS="halt_on_error=1".
---
 gcc/doc/invoke.texi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a54a0af..282367d 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -9998,6 +9998,12 @@ for which this feature is experimental.
 accepted, the former enables recovery for all sanitizers that support it,
 the latter disables recovery for all sanitizers that support it.
 
+Even if a recovery mode is turned on, it can be overridden by providing
+@code{halt_on_error=1} to one of the following environment variables:
+@env{ASAN_OPTIONS}, @env{TSAN_OPTIONS}, @env{UBSAN_OPTIONS}.
+The default value is set to @code{halt_on_error=0} for all options,
+except @env{ASAN_OPTIONS}.
+
 Syntax without explicit @var{opts} parameter is deprecated.  It is equivalent to
 @smallexample
 -fsanitize-recover=undefined,float-cast-overflow,float-divide-by-zero
-- 
2.8.2

Reply via email to