On Mar 14, 2013 5:16 AM, "Alexey Samsonov" <[email protected]> wrote:
>
> Author: samsonov
> Date: Thu Mar 14 07:13:27 2013
> New Revision: 177061
>
> URL: http://llvm.org/viewvc/llvm-project?rev=177061&view=rev
> Log:
> [ASan] Make -fsanitize=address imply -fsanitize=init-order (if the latter
is not explicitly disabled).

Should we consider making it always implied even if it has been previously
explicitly disabled? That's how warning flags work, for example, so users
are used to that sort of precedence/ordering system

>
> Modified:
>     cfe/trunk/lib/Driver/Tools.cpp
>     cfe/trunk/test/Driver/fsanitize.c
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=177061&r1=177060&r2=177061&view=diff
>
==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Thu Mar 14 07:13:27 2013
> @@ -1483,6 +1483,8 @@ SanitizerArgs::SanitizerArgs(const Drive
>        AsanZeroBaseShadow(false) {
>    unsigned AllKinds = 0;  // All kinds of sanitizers that were turned on
>                            // at least once (possibly, disabled further).
> +  unsigned AllRemovedKinds = 0;  // All kinds of sanitizers that were
explicitly
> +                                 // removed at least once.
>    for (ArgList::const_iterator I = Args.begin(), E = Args.end(); I != E;
++I) {
>      unsigned Add, Remove;
>      if (!parse(D, Args, *I, Add, Remove, true))
> @@ -1491,6 +1493,12 @@ SanitizerArgs::SanitizerArgs(const Drive
>      Kind |= Add;
>      Kind &= ~Remove;
>      AllKinds |= Add;
> +    AllRemovedKinds |= Remove;
> +  }
> +  // Assume -fsanitize=address implies -fsanitize=init-order, if the
latter is
> +  // not disabled explicitly.
> +  if ((Kind & Address) != 0 && (AllRemovedKinds & InitOrder) == 0) {
> +    Kind |= InitOrder;
>    }
>
>    UbsanTrapOnError =
>
> Modified: cfe/trunk/test/Driver/fsanitize.c
> URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=177061&r1=177060&r2=177061&view=diff
>
==============================================================================
> --- cfe/trunk/test/Driver/fsanitize.c (original)
> +++ cfe/trunk/test/Driver/fsanitize.c Thu Mar 14 07:13:27 2013
> @@ -16,6 +16,12 @@
>  // RUN: %clang -target x86_64-linux-gnu -fsanitize=address-full %s -###
2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-FULL
>  // CHECK-ASAN-FULL:
"-fsanitize={{((address|init-order|use-after-return|use-after-scope),?){4}"}}
>
> +// RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s -### 2>&1
|  FileCheck %s --check-prefix=CHECK-ASAN-IMPLIED-INIT-ORDER
> +// CHECK-ASAN-IMPLIED-INIT-ORDER:
"-fsanitize={{((address|init-order),?){2}"}}
> +
> +// RUN: %clang -target x86_64-linux-gnu -fsanitize=address
-fno-sanitize=init-order %s -### 2>&1 |  FileCheck %s
--check-prefix=CHECK-ASAN-NO-IMPLIED-INIT-ORDER
> +// CHECK-ASAN-NO-IMPLIED-INIT-ORDER-NOT: init-order
> +
>  // RUN: %clang -target x86_64-linux-gnu -fcatch-undefined-behavior
-fno-sanitize-undefined-trap-on-error %s -### 2>&1 | FileCheck %s
--check-prefix=CHECK-UNDEFINED-NO-TRAP-ERROR
>  // CHECK-UNDEFINED-NO-TRAP-ERROR: '-fcatch-undefined-behavior' not
allowed with '-fno-sanitize-undefined-trap-on-error'
>
>
>
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to