diff options
author | Kees Cook <keescook@chromium.org> | 2016-10-31 13:40:13 -0400 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2016-10-31 13:40:13 -0400 |
commit | da7389ac6c83e7aa8b04ebe5ba546df2a7873c5c (patch) | |
tree | 564b1c302c5bca487aafcaacc70baa049f12b8b2 /scripts | |
parent | 07d9a380680d1c0eb51ef87ff2eab5c994949e69 (diff) |
gcc-plugins: Export symbols needed by gcc
This explicitly exports symbols that gcc expects from plugins.
Based on code from Emese Revfy.
Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/gcc-plugins/cyc_complexity_plugin.c | 4 | ||||
-rw-r--r-- | scripts/gcc-plugins/gcc-common.h | 1 | ||||
-rw-r--r-- | scripts/gcc-plugins/latent_entropy_plugin.c | 6 | ||||
-rw-r--r-- | scripts/gcc-plugins/sancov_plugin.c | 4 |
4 files changed, 8 insertions, 7 deletions
diff --git a/scripts/gcc-plugins/cyc_complexity_plugin.c b/scripts/gcc-plugins/cyc_complexity_plugin.c index 34df974c6ba3..8af7db06122d 100644 --- a/scripts/gcc-plugins/cyc_complexity_plugin.c +++ b/scripts/gcc-plugins/cyc_complexity_plugin.c | |||
@@ -20,7 +20,7 @@ | |||
20 | 20 | ||
21 | #include "gcc-common.h" | 21 | #include "gcc-common.h" |
22 | 22 | ||
23 | int plugin_is_GPL_compatible; | 23 | __visible int plugin_is_GPL_compatible; |
24 | 24 | ||
25 | static struct plugin_info cyc_complexity_plugin_info = { | 25 | static struct plugin_info cyc_complexity_plugin_info = { |
26 | .version = "20160225", | 26 | .version = "20160225", |
@@ -49,7 +49,7 @@ static unsigned int cyc_complexity_execute(void) | |||
49 | 49 | ||
50 | #include "gcc-generate-gimple-pass.h" | 50 | #include "gcc-generate-gimple-pass.h" |
51 | 51 | ||
52 | int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) | 52 | __visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) |
53 | { | 53 | { |
54 | const char * const plugin_name = plugin_info->base_name; | 54 | const char * const plugin_name = plugin_info->base_name; |
55 | struct register_pass_info cyc_complexity_pass_info; | 55 | struct register_pass_info cyc_complexity_pass_info; |
diff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.h index 172850bcd0d9..950fd2e64bb7 100644 --- a/scripts/gcc-plugins/gcc-common.h +++ b/scripts/gcc-plugins/gcc-common.h | |||
@@ -130,6 +130,7 @@ extern void dump_gimple_stmt(pretty_printer *, gimple, int, int); | |||
130 | #endif | 130 | #endif |
131 | 131 | ||
132 | #define __unused __attribute__((__unused__)) | 132 | #define __unused __attribute__((__unused__)) |
133 | #define __visible __attribute__((visibility("default"))) | ||
133 | 134 | ||
134 | #define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node)) | 135 | #define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node)) |
135 | #define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node)) | 136 | #define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node)) |
diff --git a/scripts/gcc-plugins/latent_entropy_plugin.c b/scripts/gcc-plugins/latent_entropy_plugin.c index ff1939b804ae..9d3d4adf3be8 100644 --- a/scripts/gcc-plugins/latent_entropy_plugin.c +++ b/scripts/gcc-plugins/latent_entropy_plugin.c | |||
@@ -77,7 +77,7 @@ | |||
77 | 77 | ||
78 | #include "gcc-common.h" | 78 | #include "gcc-common.h" |
79 | 79 | ||
80 | int plugin_is_GPL_compatible; | 80 | __visible int plugin_is_GPL_compatible; |
81 | 81 | ||
82 | static GTY(()) tree latent_entropy_decl; | 82 | static GTY(()) tree latent_entropy_decl; |
83 | 83 | ||
@@ -584,8 +584,8 @@ static void latent_entropy_start_unit(void *gcc_data __unused, | |||
584 | | TODO_update_ssa | 584 | | TODO_update_ssa |
585 | #include "gcc-generate-gimple-pass.h" | 585 | #include "gcc-generate-gimple-pass.h" |
586 | 586 | ||
587 | int plugin_init(struct plugin_name_args *plugin_info, | 587 | __visible int plugin_init(struct plugin_name_args *plugin_info, |
588 | struct plugin_gcc_version *version) | 588 | struct plugin_gcc_version *version) |
589 | { | 589 | { |
590 | bool enabled = true; | 590 | bool enabled = true; |
591 | const char * const plugin_name = plugin_info->base_name; | 591 | const char * const plugin_name = plugin_info->base_name; |
diff --git a/scripts/gcc-plugins/sancov_plugin.c b/scripts/gcc-plugins/sancov_plugin.c index aedd6113cb73..7ea0b3f50739 100644 --- a/scripts/gcc-plugins/sancov_plugin.c +++ b/scripts/gcc-plugins/sancov_plugin.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #include "gcc-common.h" | 22 | #include "gcc-common.h" |
23 | 23 | ||
24 | int plugin_is_GPL_compatible; | 24 | __visible int plugin_is_GPL_compatible; |
25 | 25 | ||
26 | tree sancov_fndecl; | 26 | tree sancov_fndecl; |
27 | 27 | ||
@@ -86,7 +86,7 @@ static void sancov_start_unit(void __unused *gcc_data, void __unused *user_data) | |||
86 | #endif | 86 | #endif |
87 | } | 87 | } |
88 | 88 | ||
89 | int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) | 89 | __visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version) |
90 | { | 90 | { |
91 | int i; | 91 | int i; |
92 | struct register_pass_info sancov_plugin_pass_info; | 92 | struct register_pass_info sancov_plugin_pass_info; |