Commit da7389ac authored by Kees Cook's avatar Kees Cook
Browse files

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: default avatarKees Cook <keescook@chromium.org>
parent 07d9a380
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@

#include "gcc-common.h"

int plugin_is_GPL_compatible;
__visible int plugin_is_GPL_compatible;

static struct plugin_info cyc_complexity_plugin_info = {
	.version	= "20160225",
@@ -49,7 +49,7 @@ static unsigned int cyc_complexity_execute(void)

#include "gcc-generate-gimple-pass.h"

int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
__visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
{
	const char * const plugin_name = plugin_info->base_name;
	struct register_pass_info cyc_complexity_pass_info;
+1 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ extern void dump_gimple_stmt(pretty_printer *, gimple, int, int);
#endif

#define __unused __attribute__((__unused__))
#define __visible __attribute__((visibility("default")))

#define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node))
#define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node))
+3 −3
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@

#include "gcc-common.h"

int plugin_is_GPL_compatible;
__visible int plugin_is_GPL_compatible;

static GTY(()) tree latent_entropy_decl;

@@ -584,7 +584,7 @@ static void latent_entropy_start_unit(void *gcc_data __unused,
	| TODO_update_ssa
#include "gcc-generate-gimple-pass.h"

int plugin_init(struct plugin_name_args *plugin_info,
__visible int plugin_init(struct plugin_name_args *plugin_info,
			  struct plugin_gcc_version *version)
{
	bool enabled = true;
+2 −2
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@

#include "gcc-common.h"

int plugin_is_GPL_compatible;
__visible int plugin_is_GPL_compatible;

tree sancov_fndecl;

@@ -86,7 +86,7 @@ static void sancov_start_unit(void __unused *gcc_data, void __unused *user_data)
#endif
}

int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
__visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
{
	int i;
	struct register_pass_info sancov_plugin_pass_info;