utils.c (gnat_internal_attribute_table): Add support for stack_protect attribute.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 28 May 2019 07:23:54 +0000 (07:23 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 28 May 2019 07:23:54 +0000 (07:23 +0000)
* gcc-interface/utils.c (gnat_internal_attribute_table): Add support
for stack_protect attribute.
(handle_stack_protect_attribute): New static function.

From-SVN: r271680

gcc/ada/ChangeLog
gcc/ada/gcc-interface/utils.c

index 377b13e0ecccd82bbdf368013a3f7a41dc0cb9ce..6acef36fbf0805975df9cd9c01302498166a7c4a 100644 (file)
@@ -1,3 +1,9 @@
+2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils.c (gnat_internal_attribute_table): Add support
+       for stack_protect attribute.
+       (handle_stack_protect_attribute): New static function.
+
 2019-05-28  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
index 4d3facca55aa8b6c272c029f61e259799aabd69d..d090d0954ac1c3cbaf7f01bcdd549309ac105475 100644 (file)
@@ -90,6 +90,7 @@ static tree handle_novops_attribute (tree *, tree, tree, int, bool *);
 static tree handle_nonnull_attribute (tree *, tree, tree, int, bool *);
 static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *);
 static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
+static tree handle_stack_protect_attribute (tree *, tree, tree, int, bool *);
 static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
 static tree handle_noclone_attribute (tree *, tree, tree, int, bool *);
 static tree handle_leaf_attribute (tree *, tree, tree, int, bool *);
@@ -123,6 +124,8 @@ const struct attribute_spec gnat_internal_attribute_table[] =
     handle_sentinel_attribute, NULL },
   { "noreturn",     0, 0,  true,  false, false, false,
     handle_noreturn_attribute, NULL },
+  { "stack_protect",0, 0, true,  false, false, false,
+    handle_stack_protect_attribute, NULL },
   { "noinline",     0, 0,  true,  false, false, false,
     handle_noinline_attribute, NULL },
   { "noclone",      0, 0,  true,  false, false, false,
@@ -6357,6 +6360,22 @@ handle_noinline_attribute (tree *node, tree name,
   return NULL_TREE;
 }
 
+/* Handle a "stack_protect" attribute; arguments as in
+   struct attribute_spec.handler.  */
+
+static tree
+handle_stack_protect_attribute (tree *node, tree name, tree, int,
+                               bool *no_add_attrs)
+{
+  if (TREE_CODE (*node) != FUNCTION_DECL)
+    {
+      warning (OPT_Wattributes, "%qE attribute ignored", name);
+      *no_add_attrs = true;
+    }
+
+  return NULL_TREE;
+}
+
 /* Handle a "noclone" attribute; arguments as in
    struct attribute_spec.handler.  */