On Sun, Apr 25, 2021 at 08:50:18PM -0500, Bill Schmidt wrote: > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/rop-1.c > @@ -0,0 +1,16 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -mdejagnu-cpu=power10 -mrop-protect" } */
This should only run on ELFv2 currently, no? > +/* { dg-final { scan-assembler {\mhashst\M} } } */ > +/* { dg-final { scan-assembler {\mhashchk\M} } } */ Maybe check these are emitted only once each? > +/* { dg-final { scan-assembler {\mhashchkp\M} } } */ > diff --git a/gcc/testsuite/gcc.target/powerpc/rop-3.c > b/gcc/testsuite/gcc.target/powerpc/rop-3.c > new file mode 100644 > index 00000000000..054f94fda99 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/rop-3.c > @@ -0,0 +1,19 @@ > +/* { dg-do run { target { power10_hw } } } */ > +/* { dg-require-effective-target power10_ok } */ > +/* { dg-require-effective-target powerpc_elfv2 } */ > +/* { dg-options "-O2 -mdejagnu-cpu=power10 -mrop-protect" } */ Why does this need power10_ok? We always are 64-bit if ELFv2 (and even if you don't want to depend on that, check for lp64 instead?) > +/* Verify that ROP-protect instructions execute correctly when a > + call is present. */ > + > +void __attribute__((noinline)) foo () > +{ > + asm (""); > +} Use noipa instead? noinline should be fine in this super trivial case, but it is less typing at least ;-) > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/rop-5.c > @@ -0,0 +1,17 @@ > +/* { dg-do run { target { power10_hw } } } */ > +/* { dg-require-effective-target power10_ok } */ > +/* { dg-require-effective-target powerpc_elfv2 } */ > +/* { dg-options "-O2 -mdejagnu-cpu=power10 -mrop-protect" } */ > + > +/* Verify that __ROP_PROTECT__ is predefined for -mrop-protect. */ > + > +extern void abort (void); > + > +int main () > +{ > +#ifndef __ROP_PROTECT__ > + abort (); > +#endif > + return 0; > +} Please do this in a compile test instead? #ifndef __ROP_PROTECT__ har har har #endif Okay for trunk and 11 with such changes. Thank you! Segher