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; |
