[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