summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2016-10-31 13:40:13 -0400
committerKees Cook <keescook@chromium.org>2016-10-31 13:40:13 -0400
commitda7389ac6c83e7aa8b04ebe5ba546df2a7873c5c (patch)
tree564b1c302c5bca487aafcaacc70baa049f12b8b2 /scripts
parent07d9a380680d1c0eb51ef87ff2eab5c994949e69 (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.c4
-rw-r--r--scripts/gcc-plugins/gcc-common.h1
-rw-r--r--scripts/gcc-plugins/latent_entropy_plugin.c6
-rw-r--r--scripts/gcc-plugins/sancov_plugin.c4
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
23int plugin_is_GPL_compatible; 23__visible int plugin_is_GPL_compatible;
24 24
25static struct plugin_info cyc_complexity_plugin_info = { 25static 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
52int 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
80int plugin_is_GPL_compatible; 80__visible int plugin_is_GPL_compatible;
81 81
82static GTY(()) tree latent_entropy_decl; 82static 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
587int 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
24int plugin_is_GPL_compatible; 24__visible int plugin_is_GPL_compatible;
25 25
26tree sancov_fndecl; 26tree 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
89int 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;