[compiler-rt] r230172 - Fix gc-test.cc to work under higher -O levels

Kuba Brecka kuba.brecka at gmail.com
Sun Feb 22 12:54:13 PST 2015


I believe I fixed that in r230173. 

Kuba

Sent from my iPhone

> On Feb 22, 2015, at 9:51 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> 
> 
>> On Sun, Feb 22, 2015 at 3:12 AM, Kuba Brecka <kuba.brecka at gmail.com> wrote:
>> Author: kuba.brecka
>> Date: Sun Feb 22 05:12:17 2015
>> New Revision: 230172
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=230172&view=rev
>> Log:
>> Fix gc-test.cc to work under higher -O levels
>> 
>> The gc-test.cc tries underflows of a variable up to -32 bytes, but on i386, the left redzone is not 32 bytes, it’s only 16 bytes and therefore the access to var[-32] is completely off. The reason why this test didn’t fail before is that we’ve been lucky and there was another variable before the var array, which was also instrumented. This fix uses “-32” for 64-bit systems and “-16” for 32-bit.
>> 
>> Reviewed at http://reviews.llvm.org/D7809
>> 
>> 
>> Modified:
>>     compiler-rt/trunk/test/asan/TestCases/gc-test.cc
>> 
>> Modified: compiler-rt/trunk/test/asan/TestCases/gc-test.cc
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/gc-test.cc?rev=230172&r1=230171&r2=230172&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/test/asan/TestCases/gc-test.cc (original)
>> +++ compiler-rt/trunk/test/asan/TestCases/gc-test.cc Sun Feb 22 05:12:17 2015
>> @@ -1,6 +1,9 @@
>>  // RUN: %clangxx_asan %s -pthread -o %t
>>  // RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1
>>  // RUN: env ASAN_OPTIONS=detect_stack_use_after_return=0 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK0
>> +// RUN: %clangxx_asan -O3 %s -pthread -o %t
>> +// RUN: env ASAN_OPTIONS=detect_stack_use_after_return=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK1
>> +// RUN: env ASAN_OPTIONS=detect_stack_use_after_return=0 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK0
>>  // REQUIRES: stable-runtime
>> 
>>  #include <assert.h>
>> @@ -9,6 +12,7 @@
>>  #include <sanitizer/asan_interface.h>
>> 
>>  static const int kNumThreads = 2;
>> +static const int kLeftRedzoneSize = sizeof(void *) *Â 4;
> 
> non-ascii character here (after the '*' before the space)?
>  
>> 
>>  void *Thread(void *unused)  {
>>    void *fake_stack = __asan_get_current_fake_stack();
>> @@ -23,7 +27,7 @@ void *Thread(void *unused)  {
>>      assert(real_stack);
>>      assert((char*)beg <= (char*)&var[0]);
>>      assert((char*)end > (char*)&var[0]);
>> -    for (int i = -32; i < 15; i++) {
>> +    for (int i = -kLeftRedzoneSize; i < 15; i++) {
>>        void *beg1, *end1;
>>        char *ptr = &var[0] + i;
>>        void *real_stack1 =
>> 
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150222/f232c05f/attachment.html>


More information about the llvm-commits mailing list