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

Reply via email to