Improve fstack_protector effective target
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Thu, 7 Dec 2017 21:48:35 +0000 (21:48 +0000)
committerThomas Preud'homme <thopre01@gcc.gnu.org>
Thu, 7 Dec 2017 21:48:35 +0000 (21:48 +0000)
Effective target fstack_protector fails to return an error for
newlib-based target (such as arm-none-eabi targets) which does not
support stack protector. This is due to the test being too simplist for
stack protection code to be generated by GCC: it does not contain a
local buffer and does not read unknown input.

This commit adds a small local buffer with a copy of the filename to
trigger stack protector code to be generated. The filename is used
instead of the full path so as to ensure the size will fit in the local
buffer.

2017-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * lib/target-supports.exp (check_effective_target_fstack_protector):
    Copy filename in local buffer to trigger stack protection.

From-SVN: r255484

gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp

index dab24f424388e8e06e5c3aea7b0351c6ed438afb..9f8e8373aafcbc1981237ff6f55eb3db02e64760 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * lib/target-supports.exp (check_effective_target_fstack_protector):
+       Copy filename in local buffer to trigger stack protection.
+
 2017-12-07  Joseph Myers  <joseph@codesourcery.com>
 
        * gcc.dg/c11-align-7.c, gcc.dg/c11-align-8.c,
index 6242ce9546910d177906b24b47d607f982f013a1..ed7d624873c999b2db3ed1f5b943dfbe53ca14ab 100644 (file)
@@ -1064,7 +1064,11 @@ proc check_effective_target_static {} {
 # Return 1 if the target supports -fstack-protector
 proc check_effective_target_fstack_protector {} {
     return [check_runtime fstack_protector {
-       int main (void) { return 0; }
+       #include <string.h>
+       int main (int argc, char *argv[]) {
+         char buf[64];
+         return !strcpy (buf, strrchr (argv[0], '/'));
+       }
     } "-fstack-protector"]
 }