Getting started with GCC plugins

gcc, gcc-plugins, symbols, undefined

Solution

There are two problems here :

The error : "cannot load plugin plugin.so" means that you should add to your LD_LIBRARY_PATH the directory where you store your new shared library plugin.

The hundreds of errors you got with all the files in the include are resolved in my computer if you compile with g++ instead of gcc (not sure to understand why thought)

Problem

So after searching the web for a while, Ive decided to try here as it seems to be a good forum for discussion. Im trying to create a simple gcc plugin. The program code is attached in the end of this mail, but in plain english it registers the plugin and makes sure that the pragma_init function is called when pragmas are registered. It is here that I use c_register_pragma to intercept some of the pragmas. I compile it using the example in http://gcc.gnu.org/onlinedocs/gccint/Plugins-building.html#Plugins-building. The compilation and linking works fine. However, when I load the plug-in I get: ``` gcc -c -fplugin=plugin.so test.c -o test.o cc1: error: cannot load plugin plugin.so plugin.so: undefined symbol: warning ``` What am I doing wrong? In addition, when including some header files (that will be required later), I get a lot of errors. For example, including "tree.h" yields (amongst 50 other errors): ``` /machmode.h:262:1: error: unknown type name 'class' class bit_field_mode_iterator ^ /machmode.h:263:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token { ^ /plugin/include/tree.h:27:0, from conftest.c:63: /vec.h:220:8: error: field 'register_overhead' declared as a function ``` Anyone have a clue on what I am doing wrong? Thank you

Original source