testsuite: Fix gcc.target/arm/stack-protector-1.c for Cortex-M
authorChristophe Lyon <christophe.lyon@linaro.org>
Wed, 12 Aug 2020 09:22:38 +0000 (09:22 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Wed, 12 Aug 2020 09:22:38 +0000 (09:22 +0000)
The stack-protector-1.c test fails when compiled for Cortex-M:
- for Cortex-M0/M1, str r0, [sp #-8]! is not supported
- for Cortex-M3/M4..., the assembler complains that "use of r13 is
  deprecated"

This patch replaces the str instruction with
     sub   sp, sp, #8
     str r0, [sp]
and removes the check for r13, which is unlikely to leak the canary
value.

2020-08-11  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/testsuite/
* gcc.target/arm/stack-protector-1.c: Adapt code to Cortex-M
restrictions.

gcc/testsuite/gcc.target/arm/stack-protector-1.c

index b03ea14c4e2d929afd553dc80032d05493895f41..8d28b0a847c20ed2edb0317f23963abcfe23668b 100644 (file)
@@ -34,7 +34,8 @@ asm (
 "      .type   main, %function\n"
 "main:\n"
 "      bl      get_ptr\n"
-"      str     r0, [sp, #-8]!\n"
+"      sub     sp, sp, #8\n"
+"      str     r0, [sp]\n"
 "      bl      f\n"
 "      str     r0, [sp, #4]\n"
 "      ldr     r0, [sp]\n"
@@ -51,7 +52,6 @@ asm (
        CHECK (r10)
        CHECK (r11)
        CHECK (r12)
-       CHECK (r13)
        CHECK (r14)
 "      ldr     r1, [sp, #4]\n"
        CHECK (r1)