[compiler-rt] r266006 - [safestack] A test for stackprotector canaries.

Adam Nemet via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 12 11:57:02 PDT 2016


Yeah, I know that was a pretty bad streak.  Thanks for the fix!

> On Apr 12, 2016, at 11:55 AM, Evgenii Stepanov <eugeni.stepanov at gmail.com> wrote:
> 
> Thanks for pointing this out. There were simultaneous breakages on the
> build server which made me miss this one.
> 
> I hope it would be fixed after r266106.
> 
> 
> On Tue, Apr 12, 2016 at 8:40 AM, Adam Nemet <anemet at apple.com> wrote:
>> Hi Evgeniy,
>> 
>> Is this yours:
>> http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/11171/testReport/junit/SafeStack/SafeStack/canary_c/
>> 
>> Thanks,
>> Adam
>> 
>> On Apr 11, 2016, at 3:28 PM, Evgeniy Stepanov via llvm-commits
>> <llvm-commits at lists.llvm.org> wrote:
>> 
>> Author: eugenis
>> Date: Mon Apr 11 17:28:13 2016
>> New Revision: 266006
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=266006&view=rev
>> Log:
>> [safestack] A test for stackprotector canaries.
>> 
>> Added:
>>   compiler-rt/trunk/test/safestack/canary.c
>> 
>> Added: compiler-rt/trunk/test/safestack/canary.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/safestack/canary.c?rev=266006&view=auto
>> ==============================================================================
>> --- compiler-rt/trunk/test/safestack/canary.c (added)
>> +++ compiler-rt/trunk/test/safestack/canary.c Mon Apr 11 17:28:13 2016
>> @@ -0,0 +1,37 @@
>> +// RUN: %clang_safestack -g %s -o %t.nossp
>> +// RUN: %run %t.nossp 2>&1 | FileCheck --check-prefix=NOSSP %s
>> +
>> +// RUN: %clang_safestack -fstack-protector-all -g %s -o %t.ssp
>> +// RUN: not --crash %run %t.ssp 2>&1 | FileCheck -check-prefix=SSP %s
>> +
>> +// Test stack canaries on the unsafe stack.
>> +
>> +// REQUIRES: stable-runtime
>> +
>> +#include <assert.h>
>> +#include <stdio.h>
>> +#include <string.h>
>> +
>> +__attribute__((noinline)) void f(unsigned *y) {
>> +  char x;
>> +  char *volatile p = &x;
>> +  char *volatile q = (char *)y;
>> +  assert(p < q);
>> +  assert(q - p < 1024); // sanity
>> +  // This has technically undefined behavior, but we know the actual layout
>> of
>> +  // the unsafe stack and this should not touch anything important.
>> +  memset(&x, 0xab, q - p + sizeof(*y));
>> +}
>> +
>> +int main(int argc, char **argv)
>> +{
>> +  unsigned y;
>> +  // NOSSP: main 1
>> +  // SSP: main 1
>> +  fprintf(stderr, "main 1\n");
>> +  f(&y);
>> +  // NOSSP: main 2
>> +  // SSP-NOT: main 2
>> +  fprintf(stderr, "main 2\n");
>> +  return 0;
>> +}
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>> 
>> 



More information about the llvm-commits mailing list