[compiler-rt] r266006 - [safestack] A test for stackprotector canaries.
Evgenii Stepanov via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 12 11:55:41 PDT 2016
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