[compiler-rt] r242651 - asan: fix a test

Evgenii Stepanov eugenis at google.com
Tue Jul 21 14:56:04 PDT 2015


Sure. It looks like it fixes the test, and it definitely does not
break anything else.


On Tue, Jul 21, 2015 at 2:43 PM, Hans Wennborg <hans at chromium.org> wrote:
> Do you think we should merge this and r242647 to 3.7? This test fails
> for me sometimes on the branch.
>
> On Sun, Jul 19, 2015 at 2:44 PM, Dmitry Vyukov <dvyukov at google.com> wrote:
>> Author: dvyukov
>> Date: Sun Jul 19 16:44:49 2015
>> New Revision: 242651
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=242651&view=rev
>> Log:
>> asan: fix a test
>>
>> Page size is not necessary 4096.
>> Use sysconf to obtain page size.
>>
>>
>> Modified:
>>     compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc
>>
>> Modified: compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc?rev=242651&r1=242650&r2=242651&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc (original)
>> +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc Sun Jul 19 16:44:49 2015
>> @@ -18,24 +18,27 @@
>>  #include <signal.h>
>>  #include <sys/mman.h>
>>  #include <string.h>
>> +#include <unistd.h>
>>
>> +unsigned long page_size;
>>  void *guard;
>>
>>  void handler(int signo, siginfo_t *info, void *uctx) {
>> -  mprotect(guard, 4096, PROT_READ | PROT_WRITE);
>> +  mprotect(guard, page_size, PROT_READ | PROT_WRITE);
>>  }
>>
>>  int main() {
>> +  page_size = sysconf(_SC_PAGESIZE);
>>    struct sigaction a, old;
>>    memset(&a, 0, sizeof(a));
>>    memset(&old, 0, sizeof(old));
>>    a.sa_sigaction = handler;
>>    a.sa_flags = SA_SIGINFO;
>>    sigaction(SIGSEGV, &a, &old);
>> -  guard = (char *)mmap(0, 3 * 4096, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0) +
>> -          4096;
>> +  guard = mmap(0, 3 * page_size, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
>> +  guard = (char*)guard + page_size;  // work around a kernel bug
>>    for (int i = 0; i < 1000000; i++) {
>> -    mprotect(guard, 4096, PROT_NONE);
>> +    mprotect(guard, page_size, PROT_NONE);
>>      *(int*)guard = 1;
>>    }
>>    sigaction(SIGSEGV, &old, 0);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list