diff options
-rw-r--r-- | scripts/gcc-plugins/latent_entropy_plugin.c | 17 | ||||
-rw-r--r-- | scripts/gcc-plugins/randomize_layout_plugin.c | 75 | ||||
-rw-r--r-- | scripts/gcc-plugins/structleak_plugin.c | 19 |
3 files changed, 33 insertions, 78 deletions
diff --git a/scripts/gcc-plugins/latent_entropy_plugin.c b/scripts/gcc-plugins/latent_entropy_plugin.c index 65264960910d..cbe1d6c4b1a5 100644 --- a/scripts/gcc-plugins/latent_entropy_plugin.c +++ b/scripts/gcc-plugins/latent_entropy_plugin.c | |||
@@ -255,21 +255,14 @@ static tree handle_latent_entropy_attribute(tree *node, tree name, | |||
255 | return NULL_TREE; | 255 | return NULL_TREE; |
256 | } | 256 | } |
257 | 257 | ||
258 | static struct attribute_spec latent_entropy_attr = { | 258 | static struct attribute_spec latent_entropy_attr = { }; |
259 | .name = "latent_entropy", | ||
260 | .min_length = 0, | ||
261 | .max_length = 0, | ||
262 | .decl_required = true, | ||
263 | .type_required = false, | ||
264 | .function_type_required = false, | ||
265 | .handler = handle_latent_entropy_attribute, | ||
266 | #if BUILDING_GCC_VERSION >= 4007 | ||
267 | .affects_type_identity = false | ||
268 | #endif | ||
269 | }; | ||
270 | 259 | ||
271 | static void register_attributes(void *event_data __unused, void *data __unused) | 260 | static void register_attributes(void *event_data __unused, void *data __unused) |
272 | { | 261 | { |
262 | latent_entropy_attr.name = "latent_entropy"; | ||
263 | latent_entropy_attr.decl_required = true; | ||
264 | latent_entropy_attr.handler = handle_latent_entropy_attribute; | ||
265 | |||
273 | register_attribute(&latent_entropy_attr); | 266 | register_attribute(&latent_entropy_attr); |
274 | } | 267 | } |
275 | 268 | ||
diff --git a/scripts/gcc-plugins/randomize_layout_plugin.c b/scripts/gcc-plugins/randomize_layout_plugin.c index 0073af326449..c4a345c3715b 100644 --- a/scripts/gcc-plugins/randomize_layout_plugin.c +++ b/scripts/gcc-plugins/randomize_layout_plugin.c | |||
@@ -580,68 +580,35 @@ static void finish_type(void *event_data, void *data) | |||
580 | return; | 580 | return; |
581 | } | 581 | } |
582 | 582 | ||
583 | static struct attribute_spec randomize_layout_attr = { | 583 | static struct attribute_spec randomize_layout_attr = { }; |
584 | .name = "randomize_layout", | 584 | static struct attribute_spec no_randomize_layout_attr = { }; |
585 | // related to args | 585 | static struct attribute_spec randomize_considered_attr = { }; |
586 | .min_length = 0, | 586 | static struct attribute_spec randomize_performed_attr = { }; |
587 | .max_length = 0, | ||
588 | .decl_required = false, | ||
589 | // need type declaration | ||
590 | .type_required = true, | ||
591 | .function_type_required = false, | ||
592 | .handler = handle_randomize_layout_attr, | ||
593 | #if BUILDING_GCC_VERSION >= 4007 | ||
594 | .affects_type_identity = true | ||
595 | #endif | ||
596 | }; | ||
597 | 587 | ||
598 | static struct attribute_spec no_randomize_layout_attr = { | 588 | static void register_attributes(void *event_data, void *data) |
599 | .name = "no_randomize_layout", | 589 | { |
600 | // related to args | 590 | randomize_layout_attr.name = "randomize_layout"; |
601 | .min_length = 0, | 591 | randomize_layout_attr.type_required = true; |
602 | .max_length = 0, | 592 | randomize_layout_attr.handler = handle_randomize_layout_attr; |
603 | .decl_required = false, | ||
604 | // need type declaration | ||
605 | .type_required = true, | ||
606 | .function_type_required = false, | ||
607 | .handler = handle_randomize_layout_attr, | ||
608 | #if BUILDING_GCC_VERSION >= 4007 | 593 | #if BUILDING_GCC_VERSION >= 4007 |
609 | .affects_type_identity = true | 594 | randomize_layout_attr.affects_type_identity = true; |
610 | #endif | 595 | #endif |
611 | }; | ||
612 | 596 | ||
613 | static struct attribute_spec randomize_considered_attr = { | 597 | no_randomize_layout_attr.name = "no_randomize_layout"; |
614 | .name = "randomize_considered", | 598 | no_randomize_layout_attr.type_required = true; |
615 | // related to args | 599 | no_randomize_layout_attr.handler = handle_randomize_layout_attr; |
616 | .min_length = 0, | ||
617 | .max_length = 0, | ||
618 | .decl_required = false, | ||
619 | // need type declaration | ||
620 | .type_required = true, | ||
621 | .function_type_required = false, | ||
622 | .handler = handle_randomize_considered_attr, | ||
623 | #if BUILDING_GCC_VERSION >= 4007 | 600 | #if BUILDING_GCC_VERSION >= 4007 |
624 | .affects_type_identity = false | 601 | no_randomize_layout_attr.affects_type_identity = true; |
625 | #endif | 602 | #endif |
626 | }; | ||
627 | 603 | ||
628 | static struct attribute_spec randomize_performed_attr = { | 604 | randomize_considered_attr.name = "randomize_considered"; |
629 | .name = "randomize_performed", | 605 | randomize_considered_attr.type_required = true; |
630 | // related to args | 606 | randomize_considered_attr.handler = handle_randomize_considered_attr; |
631 | .min_length = 0, | 607 | |
632 | .max_length = 0, | 608 | randomize_performed_attr.name = "randomize_performed"; |
633 | .decl_required = false, | 609 | randomize_performed_attr.type_required = true; |
634 | // need type declaration | 610 | randomize_performed_attr.handler = handle_randomize_performed_attr; |
635 | .type_required = true, | ||
636 | .function_type_required = false, | ||
637 | .handler = handle_randomize_performed_attr, | ||
638 | #if BUILDING_GCC_VERSION >= 4007 | ||
639 | .affects_type_identity = false | ||
640 | #endif | ||
641 | }; | ||
642 | 611 | ||
643 | static void register_attributes(void *event_data, void *data) | ||
644 | { | ||
645 | register_attribute(&randomize_layout_attr); | 612 | register_attribute(&randomize_layout_attr); |
646 | register_attribute(&no_randomize_layout_attr); | 613 | register_attribute(&no_randomize_layout_attr); |
647 | register_attribute(&randomize_considered_attr); | 614 | register_attribute(&randomize_considered_attr); |
diff --git a/scripts/gcc-plugins/structleak_plugin.c b/scripts/gcc-plugins/structleak_plugin.c index 3f8dd4868178..10292f791e99 100644 --- a/scripts/gcc-plugins/structleak_plugin.c +++ b/scripts/gcc-plugins/structleak_plugin.c | |||
@@ -57,21 +57,16 @@ static tree handle_user_attribute(tree *node, tree name, tree args, int flags, b | |||
57 | return NULL_TREE; | 57 | return NULL_TREE; |
58 | } | 58 | } |
59 | 59 | ||
60 | static struct attribute_spec user_attr = { | 60 | static struct attribute_spec user_attr = { }; |
61 | .name = "user", | ||
62 | .min_length = 0, | ||
63 | .max_length = 0, | ||
64 | .decl_required = false, | ||
65 | .type_required = false, | ||
66 | .function_type_required = false, | ||
67 | .handler = handle_user_attribute, | ||
68 | #if BUILDING_GCC_VERSION >= 4007 | ||
69 | .affects_type_identity = true | ||
70 | #endif | ||
71 | }; | ||
72 | 61 | ||
73 | static void register_attributes(void *event_data, void *data) | 62 | static void register_attributes(void *event_data, void *data) |
74 | { | 63 | { |
64 | user_attr.name = "user"; | ||
65 | user_attr.handler = handle_user_attribute; | ||
66 | #if BUILDING_GCC_VERSION >= 4007 | ||
67 | user_attr.affects_type_identity = true; | ||
68 | #endif | ||
69 | |||
75 | register_attribute(&user_attr); | 70 | register_attribute(&user_attr); |
76 | } | 71 | } |
77 | 72 | ||