Hi everybody, I'm trying to adapt an existing, open source GCC plugin so that it will work with more recent versions of GCC (it is currently working with 4.7 only). During my research I came across your suggestion on the Wiki[1] to get in touch if one has any questions concerning developing plugins, so I'll try this and see if anybody would be so kind to give me a little guidance!
The plugin is GCC-Bridge of the Renjin project which has been discussed on this mailing list before[2]. It is part of an effort to create a JVM runtime for the R language. The GCC-Brigde plugin compiles Gimple to JVM bytecode to make that runtime possible. The original project lives here[3], however, I have created a fork[4] that concentrates on just the part that compiles C code to JVM bytecode. The plugin is currently written using the plugin API of GCC 4.7. Since 4.7 is not available on my current Ubuntu-based system any longer, I would like to migrate to a newer version. 4.8 is available on my system, so migrating to that version would suffice as a first step. I tried that, however compilation fails using gcc-4.8 and after some reading the docs and going through the GCC source code history it seems that 4.7 to 4.8 was a rather big evolution. If anyone wants to take a look at the error messages, I created a branch[5] that has everything set up so that you can just run the compiler and see what happens; the README[6] file contains the necessary compilation instructions. It also shows the current output of gcc-4.8 and the error messages it produces. The plugin consists of a single file[7]. It seems that a global variable called "varpool_nodes" is not available anymore and also the members of the struct varpool_node changed. I haven't been able to figure out a way to traverse the Gimple tree and data structures the way the plugin did with the older API. If anyone here is familiar with the changes to the plugin API from 4.7 to 4.8, maybe you have a few hints for me? Pointers to a different plugin that went through a migration from 4.7 to a newer version could also be very very helpful. Any ideas? Thank you! Sebastian [1] https://gcc.gnu.org/wiki/plugins [2] https://gcc.gnu.org/legacy-ml/gcc/2016-02/msg00004.html [3] https://github.com/bedatadriven/renjin/ [4] https://github.com/mobanisto/gcc-bridge [5] https://github.com/mobanisto/gcc-bridge/tree/gcc-4.8 [6] https://github.com/mobanisto/gcc-bridge/blob/gcc-4.8/README.md [7] https://github.com/mobanisto/gcc-bridge/blob/gcc-4.8/compiler/src/main/resources/org/renjin/gcc/plugin.c