Commit b8672910 authored by Kees Cook's avatar Kees Cook

gcc-plugins: Use dynamic initializers

GCC 8 changed the order of some fields and is very picky about ordering
in static initializers, so instead just move to dynamic initializers,
and drop the redundant already-zero field assignments.
Suggested-by: default avatarValdis Kletnieks <valdis.kletnieks@vt.edu>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent 80d17243
...@@ -255,21 +255,14 @@ static tree handle_latent_entropy_attribute(tree *node, tree name, ...@@ -255,21 +255,14 @@ static tree handle_latent_entropy_attribute(tree *node, tree name,
return NULL_TREE; return NULL_TREE;
} }
static struct attribute_spec latent_entropy_attr = { static struct attribute_spec latent_entropy_attr = { };
.name = "latent_entropy",
.min_length = 0,
.max_length = 0,
.decl_required = true,
.type_required = false,
.function_type_required = false,
.handler = handle_latent_entropy_attribute,
#if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = false
#endif
};
static void register_attributes(void *event_data __unused, void *data __unused) static void register_attributes(void *event_data __unused, void *data __unused)
{ {
latent_entropy_attr.name = "latent_entropy";
latent_entropy_attr.decl_required = true;
latent_entropy_attr.handler = handle_latent_entropy_attribute;
register_attribute(&latent_entropy_attr); register_attribute(&latent_entropy_attr);
} }
......
...@@ -580,68 +580,35 @@ static void finish_type(void *event_data, void *data) ...@@ -580,68 +580,35 @@ static void finish_type(void *event_data, void *data)
return; return;
} }
static struct attribute_spec randomize_layout_attr = { static struct attribute_spec randomize_layout_attr = { };
.name = "randomize_layout", static struct attribute_spec no_randomize_layout_attr = { };
// related to args static struct attribute_spec randomize_considered_attr = { };
.min_length = 0, static struct attribute_spec randomize_performed_attr = { };
.max_length = 0,
.decl_required = false,
// need type declaration
.type_required = true,
.function_type_required = false,
.handler = handle_randomize_layout_attr,
#if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = true
#endif
};
static struct attribute_spec no_randomize_layout_attr = { static void register_attributes(void *event_data, void *data)
.name = "no_randomize_layout", {
// related to args randomize_layout_attr.name = "randomize_layout";
.min_length = 0, randomize_layout_attr.type_required = true;
.max_length = 0, randomize_layout_attr.handler = handle_randomize_layout_attr;
.decl_required = false,
// need type declaration
.type_required = true,
.function_type_required = false,
.handler = handle_randomize_layout_attr,
#if BUILDING_GCC_VERSION >= 4007 #if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = true randomize_layout_attr.affects_type_identity = true;
#endif #endif
};
static struct attribute_spec randomize_considered_attr = { no_randomize_layout_attr.name = "no_randomize_layout";
.name = "randomize_considered", no_randomize_layout_attr.type_required = true;
// related to args no_randomize_layout_attr.handler = handle_randomize_layout_attr;
.min_length = 0,
.max_length = 0,
.decl_required = false,
// need type declaration
.type_required = true,
.function_type_required = false,
.handler = handle_randomize_considered_attr,
#if BUILDING_GCC_VERSION >= 4007 #if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = false no_randomize_layout_attr.affects_type_identity = true;
#endif #endif
};
static struct attribute_spec randomize_performed_attr = { randomize_considered_attr.name = "randomize_considered";
.name = "randomize_performed", randomize_considered_attr.type_required = true;
// related to args randomize_considered_attr.handler = handle_randomize_considered_attr;
.min_length = 0,
.max_length = 0, randomize_performed_attr.name = "randomize_performed";
.decl_required = false, randomize_performed_attr.type_required = true;
// need type declaration randomize_performed_attr.handler = handle_randomize_performed_attr;
.type_required = true,
.function_type_required = false,
.handler = handle_randomize_performed_attr,
#if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = false
#endif
};
static void register_attributes(void *event_data, void *data)
{
register_attribute(&randomize_layout_attr); register_attribute(&randomize_layout_attr);
register_attribute(&no_randomize_layout_attr); register_attribute(&no_randomize_layout_attr);
register_attribute(&randomize_considered_attr); register_attribute(&randomize_considered_attr);
......
...@@ -57,21 +57,16 @@ static tree handle_user_attribute(tree *node, tree name, tree args, int flags, b ...@@ -57,21 +57,16 @@ static tree handle_user_attribute(tree *node, tree name, tree args, int flags, b
return NULL_TREE; return NULL_TREE;
} }
static struct attribute_spec user_attr = { static struct attribute_spec user_attr = { };
.name = "user",
.min_length = 0,
.max_length = 0,
.decl_required = false,
.type_required = false,
.function_type_required = false,
.handler = handle_user_attribute,
#if BUILDING_GCC_VERSION >= 4007
.affects_type_identity = true
#endif
};
static void register_attributes(void *event_data, void *data) static void register_attributes(void *event_data, void *data)
{ {
user_attr.name = "user";
user_attr.handler = handle_user_attribute;
#if BUILDING_GCC_VERSION >= 4007
user_attr.affects_type_identity = true;
#endif
register_attribute(&user_attr); register_attribute(&user_attr);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment