[compiler-rt] r209013 - Exclude several ASan tests from test suite if we're using GCC

Greg Fitzgerald garious at gmail.com
Fri May 16 14:39:41 PDT 2014


I'm segfaulting on the dereference of 'shadow_address' in the code
below.  I see there's no special case for __arm__ when setting
SHADOW_OFFSET.  How do we choose this number?


static inline bool AddressIsPoisoned(uptr a) {
  PROFILE_ASAN_MAPPING();
  const uptr kAccessSize = 1;
  u8 *shadow_address = (u8*)MEM_TO_SHADOW(a);
  s8 shadow_value = *shadow_address;
  if (shadow_value) {
    u8 last_accessed_byte = (a & (SHADOW_GRANULARITY - 1))
                                 + kAccessSize - 1;
    return (last_accessed_byte >= shadow_value);
  }
  return false;
}

Thanks,
Greg

On Fri, May 16, 2014 at 2:31 PM, Greg Fitzgerald <garious at gmail.com> wrote:
> I see, thanks.  Seems I'm looking at a different issue on clang + qemu-arm.
>
> -Greg
>
>
> On Fri, May 16, 2014 at 2:28 PM, Alexey Samsonov <samsonov at google.com> wrote:
>> On Fri, May 16, 2014 at 2:23 PM, Greg Fitzgerald <garious at gmail.com> wrote:
>>>
>>> Cool, I was just looking at these.  Do you know what's wrong with GCC
>>> here?
>>
>>
>> Well, GCC-ASan doesn't support certain sanitizer compile flags. Also,
>> GCC driver doesn't do the right thing for lines like:
>>   gcc -x c++ a.cc b.so
>> (it treats b.so as a source file).
>>
>>>
>>>
>>> By the way, if you're planning on making this test suite usable with
>>> GCC, maybe call that feature "Clang-compiled-runtime" to avoid any
>>> confusion?
>>
>>
>> Nope, it doesn't matter which compiler was used to build the runtime, this
>> feature
>> is used to distinguish between the compiler/toolchain used to run the tests.
>>
>> With this change, I'm able to run test-suite for GCC-ASan:
>> https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerTestSuite
>>
>>>
>>>
>>> -Greg
>>>
>>>
>>> On Fri, May 16, 2014 at 1:12 PM, Alexey Samsonov <samsonov at google.com>
>>> wrote:
>>> > Author: samsonov
>>> > Date: Fri May 16 15:12:27 2014
>>> > New Revision: 209013
>>> >
>>> > URL: http://llvm.org/viewvc/llvm-project?rev=209013&view=rev
>>> > Log:
>>> > Exclude several ASan tests from test suite if we're using GCC
>>> >
>>> > Modified:
>>> >     compiler-rt/trunk/test/asan/TestCases/Linux/asan_prelink_test.cc
>>> >     compiler-rt/trunk/test/asan/TestCases/Linux/heavy_uar_test.cc
>>> >     compiler-rt/trunk/test/asan/TestCases/Linux/odr-violation.cc
>>> >     compiler-rt/trunk/test/asan/TestCases/Linux/preinit_test.cc
>>> >     compiler-rt/trunk/test/asan/TestCases/heap-overflow.cc
>>> >     compiler-rt/trunk/test/lit.common.cfg
>>> >
>>> > Modified:
>>> > compiler-rt/trunk/test/asan/TestCases/Linux/asan_prelink_test.cc
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/asan_prelink_test.cc?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/asan/TestCases/Linux/asan_prelink_test.cc
>>> > (original)
>>> > +++ compiler-rt/trunk/test/asan/TestCases/Linux/asan_prelink_test.cc Fri
>>> > May 16 15:12:27 2014
>>> > @@ -9,7 +9,8 @@
>>> >  // RUN: %clangxx_asan %t.o %t.so -Wl,-R. -o %t
>>> >  // RUN: ASAN_OPTIONS=verbosity=1 %run %t 2>&1 | FileCheck %s
>>> >
>>> > -// REQUIRES: x86_64-supported-target, asan-64-bits
>>> > +// GNU driver doesn't handle .so files properly.
>>> > +// REQUIRES: x86_64-supported-target, asan-64-bits, Clang
>>> >  #if BUILD_SO
>>> >  int G;
>>> >  int *getG() {
>>> >
>>> > Modified: compiler-rt/trunk/test/asan/TestCases/Linux/heavy_uar_test.cc
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/heavy_uar_test.cc?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/asan/TestCases/Linux/heavy_uar_test.cc
>>> > (original)
>>> > +++ compiler-rt/trunk/test/asan/TestCases/Linux/heavy_uar_test.cc Fri
>>> > May 16 15:12:27 2014
>>> > @@ -4,6 +4,9 @@
>>> >  // RUN: %clangxx_asan -O2 %s -o %t && \
>>> >  // RUN:   not %run %t 2>&1 | FileCheck %s
>>> >
>>> > +// FIXME: Fix this test under GCC.
>>> > +// REQUIRES: Clang
>>> > +
>>> >  #include <stdio.h>
>>> >  #include <string.h>
>>> >  #include <stdlib.h>
>>> >
>>> > Modified: compiler-rt/trunk/test/asan/TestCases/Linux/odr-violation.cc
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/odr-violation.cc?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/asan/TestCases/Linux/odr-violation.cc
>>> > (original)
>>> > +++ compiler-rt/trunk/test/asan/TestCases/Linux/odr-violation.cc Fri May
>>> > 16 15:12:27 2014
>>> > @@ -11,6 +11,9 @@
>>> >  // RUN: ASAN_OPTIONS=detect_odr_violation=1     %run %t 2>&1 |
>>> > FileCheck %s --check-prefix=DISABLED
>>> >  // RUN: ASAN_OPTIONS=detect_odr_violation=2 not %run %t 2>&1 |
>>> > FileCheck %s
>>> >
>>> > +// GNU driver doesn't handle .so files properly.
>>> > +// REQUIRES: Clang
>>> > +
>>> >  #ifndef SZ
>>> >  # define SZ 4
>>> >  #endif
>>> >
>>> > Modified: compiler-rt/trunk/test/asan/TestCases/Linux/preinit_test.cc
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/preinit_test.cc?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/asan/TestCases/Linux/preinit_test.cc
>>> > (original)
>>> > +++ compiler-rt/trunk/test/asan/TestCases/Linux/preinit_test.cc Fri May
>>> > 16 15:12:27 2014
>>> > @@ -2,6 +2,9 @@
>>> >  // RUN: %clangxx_asan -DFUNC=main %s         -o %t    -Wl,-R. %t.so
>>> >  // RUN: %run %t
>>> >
>>> > +// GNU driver doesn't handle .so files properly.
>>> > +// REQUIRES: Clang
>>> > +
>>> >  // This test ensures that we call __asan_init early enough.
>>> >  // We build a shared library w/o asan instrumentation
>>> >  // and the binary with asan instrumentation.
>>> >
>>> > Modified: compiler-rt/trunk/test/asan/TestCases/heap-overflow.cc
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/heap-overflow.cc?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/asan/TestCases/heap-overflow.cc (original)
>>> > +++ compiler-rt/trunk/test/asan/TestCases/heap-overflow.cc Fri May 16
>>> > 15:12:27 2014
>>> > @@ -3,6 +3,10 @@
>>> >  // RUN: %clangxx_asan -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s
>>> >  // RUN: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s
>>> >  // RUN: ASAN_OPTIONS=print_stats=1 not %run %t 2>&1 | FileCheck %s
>>> > +
>>> > +// FIXME: Fix this test under GCC.
>>> > +// REQUIRES: Clang
>>> > +
>>> >  #include <stdlib.h>
>>> >  #include <string.h>
>>> >  int main(int argc, char **argv) {
>>> >
>>> > Modified: compiler-rt/trunk/test/lit.common.cfg
>>> > URL:
>>> > http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.cfg?rev=209013&r1=209012&r2=209013&view=diff
>>> >
>>> > ==============================================================================
>>> > --- compiler-rt/trunk/test/lit.common.cfg (original)
>>> > +++ compiler-rt/trunk/test/lit.common.cfg Fri May 16 15:12:27 2014
>>> > @@ -28,6 +28,8 @@ elif compiler_id == 'GNU':
>>> >    config.cxx_mode_flags = ["-x c++"]
>>> >  else:
>>> >    lit_config.fatal("Unsupported compiler id: %r" % compiler_id)
>>> > +# Add compiler ID to the list of available features.
>>> > +config.available_features.add(compiler_id)
>>> >
>>> >  # Clear some environment variables that might affect Clang.
>>> >  possibly_dangerous_env_vars = ['COMPILER_PATH', 'RC_DEBUG_OPTIONS',
>>> >
>>> >
>>> > _______________________________________________
>>> > llvm-commits mailing list
>>> > llvm-commits at cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>
>>
>>
>> --
>> Alexey Samsonov, Mountain View, CA



More information about the llvm-commits mailing list