Hi, I was trying to insert a global variable declaration using gcc plugins.
I tried to make simple plugin example that inserts a global int variable called
_fake_var_.
The plugin code is this:
---------------- plugin.cpp ----------------------
int plugin_is_GPL_compatible;
static tree fake_var = NULL;
static void start_unit_callback (void *gcc_data, void *user_data)
{
printf("\n------------------Start Unit------------------\n");
fake_var = build_decl (UNKNOWN_LOCATION, VAR_DECL,
get_identifier ("_fake_var_"),
integer_type_node);
TREE_PUBLIC (fake_var) = 1;
DECL_ARTIFICIAL (fake_var) = 1;
TREE_USED(fake_var) = 1;
}
int plugin_init (struct plugin_name_args *plugin_info,
struct plugin_gcc_version *version)
{
register_callback ("start_unit", PLUGIN_START_UNIT,
&start_unit_callback, NULL);
return 0;
}
------------------------------------------------------
Then i compiled the next code(test.c) using that plugin:
---------------- test.c ------------------------------
int main(void) {
_fake_var_=2;
return 0;
}
-------------------------------------------------------
But i get this message:
error: ‘_fake_var_’ was not declared in this scope _fake_var_=2;
The question is that if I'm missing something here and if there is
something wrong, because i didn't find further documentation about how
to do this.
Andrés.