On 05/06/17 21:06, David Blaikie wrote:


On Mon, Jun 5, 2017 at 10:28 AM Maxim Ostapenko <chefm...@gmail.com <mailto:chefm...@gmail.com>> wrote:

    On 05/06/17 20:16, David Blaikie wrote:
    > This change seemed to be buggy (& I assume missing test coverage to
    > demonstrate that). Galina fixed it in
    > http://llvm.org/viewvc/llvm-project?rev=304663&view=rev based on a
    > compiler warning.

    Oh, right, I've missed that. Sorry!

    >
    > Can you add test coverage to this code to exercise these untested
    > codepaths?

    But doesn't https://reviews.llvm.org/rL299921 introduce testcases for
    arm, thumb, armeb and thumbeb targets to clang driver?


Right, but none of the checks were being done - it was just always true.

The test coverage that's missing is something that would cause the 'if' on line 877 in that patch to return false. So something that isn't x86_64, isn't mips64, isn't aarch64, and isn't arm (so, maybe PPC? for example). That test would demonstrate that lsan is still enabled in that case when it shouldn't be, because the 'IsArmArch' is always true.

Ah, OK, got it. I'll prepare the patch (perhaps with PPC or MIPS).

-Maxim

    Or perhaps I'm
    missing something?

    -Maxim

    >
    > On Tue, Apr 11, 2017 at 12:34 AM Maxim Ostapenko via cfe-commits
    > <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
    <mailto:cfe-commits@lists.llvm.org
    <mailto:cfe-commits@lists.llvm.org>>> wrote:
    >
    >     Author: chefmax
    >     Date: Tue Apr 11 02:22:11 2017
    >     New Revision: 299921
    >
    >     URL: http://llvm.org/viewvc/llvm-project?rev=299921&view=rev
    >     Log:
    >     [lsan] Enable LSan on arm Linux, clang part
    >
    >     This is a compiler part of https://reviews.llvm.org/D29586.
    Enable
    >     LSan on arm Linux.
    >
    >     Differential Revision: https://reviews.llvm.org/D31760
    >
    >     Modified:
    >         cfe/trunk/lib/Driver/ToolChains/Linux.cpp
    >         cfe/trunk/test/Driver/fsanitize.c
    >
    >     Modified: cfe/trunk/lib/Driver/ToolChains/Linux.cpp
    >     URL:
    >
    
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Linux.cpp?rev=299921&r1=299920&r2=299921&view=diff
    >
     
==============================================================================
    >     --- cfe/trunk/lib/Driver/ToolChains/Linux.cpp (original)
    >     +++ cfe/trunk/lib/Driver/ToolChains/Linux.cpp Tue Apr 11
    02:22:11 2017
    >     @@ -864,6 +864,9 @@ SanitizerMask Linux::getSupportedSanitiz
    >                                 getTriple().getArch() ==
    >     llvm::Triple::ppc64le;
    >        const bool IsAArch64 = getTriple().getArch() ==
    >     llvm::Triple::aarch64 ||
    >                               getTriple().getArch() ==
    >     llvm::Triple::aarch64_be;
    >     +  const bool IsArmArch = getTriple().getArch() ==
    >     llvm::Triple::arm ||
    >     +                         llvm::Triple::thumb ||
    >     llvm::Triple::armeb ||
    >     +                         llvm::Triple::thumbeb;
    >        SanitizerMask Res = ToolChain::getSupportedSanitizers();
    >        Res |= SanitizerKind::Address;
    >        Res |= SanitizerKind::KernelAddress;
    >     @@ -871,7 +874,7 @@ SanitizerMask Linux::getSupportedSanitiz
    >        Res |= SanitizerKind::SafeStack;
    >        if (IsX86_64 || IsMIPS64 || IsAArch64)
    >          Res |= SanitizerKind::DataFlow;
    >     -  if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86)
    >     +  if (IsX86_64 || IsMIPS64 || IsAArch64 || IsX86 || IsArmArch)
    >          Res |= SanitizerKind::Leak;
    >        if (IsX86_64 || IsMIPS64 || IsAArch64 || IsPowerPC64)
    >          Res |= SanitizerKind::Thread;
    >
    >     Modified: cfe/trunk/test/Driver/fsanitize.c
    >     URL:
    >
    
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/fsanitize.c?rev=299921&r1=299920&r2=299921&view=diff
    >
     
==============================================================================
    >     --- cfe/trunk/test/Driver/fsanitize.c (original)
    >     +++ cfe/trunk/test/Driver/fsanitize.c Tue Apr 11 02:22:11 2017
    >     @@ -237,6 +237,30 @@
    >      // RUN: %clang -target i686-linux-gnu -fsanitize=address,leak
    >     -fno-sanitize=address %s -### 2>&1 | FileCheck %s
    >     --check-prefix=CHECK-SANA-SANL-NO-SANA-X86
    >      // CHECK-SANA-SANL-NO-SANA-X86: "-fsanitize=leak"
    >
    >     +// RUN: %clang -target arm-linux-gnu -fsanitize=leak %s
    -### 2>&1
    >     | FileCheck %s --check-prefix=CHECK-SANL-ARM
    >     +// CHECK-SANL-ARM: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target arm-linux-gnu -fsanitize=address,leak
    >     -fno-sanitize=address %s -### 2>&1 | FileCheck %s
    >     --check-prefix=CHECK-SANA-SANL-NO-SANA-ARM
    >     +// CHECK-SANA-SANL-NO-SANA-ARM: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target thumb-linux -fsanitize=leak %s -###
    2>&1 |
    >     FileCheck %s --check-prefix=CHECK-SANL-THUMB
    >     +// CHECK-SANL-THUMB: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target thumb-linux -fsanitize=address,leak
    >     -fno-sanitize=address %s -### 2>&1 | FileCheck %s
    >     --check-prefix=CHECK-SANA-SANL-NO-SANA-THUMB
    >     +// CHECK-SANA-SANL-NO-SANA-THUMB: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target armeb-linux-gnu -fsanitize=leak %s -###
    >     2>&1 | FileCheck %s --check-prefix=CHECK-SANL-ARMEB
    >     +// CHECK-SANL-ARMEB: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target armeb-linux-gnu -fsanitize=address,leak
    >     -fno-sanitize=address %s -### 2>&1 | FileCheck %s
    >     --check-prefix=CHECK-SANA-SANL-NO-SANA-ARMEB
    >     +// CHECK-SANA-SANL-NO-SANA-ARMEB: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target thumbeb-linux -fsanitize=leak %s
    -### 2>&1
    >     | FileCheck %s --check-prefix=CHECK-SANL-THUMBEB
    >     +// CHECK-SANL-THUMBEB: "-fsanitize=leak"
    >     +
    >     +// RUN: %clang -target thumbeb-linux -fsanitize=address,leak
    >     -fno-sanitize=address %s -### 2>&1 | FileCheck %s
    >     --check-prefix=CHECK-SANA-SANL-NO-SANA-THUMBEB
    >     +// CHECK-SANA-SANL-NO-SANA-THUMBEB: "-fsanitize=leak"
    >     +
    >      // RUN: %clang -target x86_64-linux-gnu -fsanitize=memory
    %s -###
    >     2>&1 | FileCheck %s --check-prefix=CHECK-MSAN
    >      // CHECK-MSAN: "-fno-assume-sane-operator-new"
    >      // RUN: %clang -target x86_64-linux-gnu -fsanitize=address %s
    >     -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN
    >
    >
    >     _______________________________________________
    >     cfe-commits mailing list
    > cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
    <mailto:cfe-commits@lists.llvm.org
    <mailto:cfe-commits@lists.llvm.org>>
    > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
    >


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to