Hi all****
** **
I am simply awed by the gcc-python-plugin ;) ****
It looks like a fantastic effort****
** **
However, I cant find any sample which actually modifies the original C program****
** **
For example, how to add a runtime reference count to each CHAR *
Obviously, this is a large, long term project****
For C++, this replaces CHAR* with an object****
For C, I might do a simpler effort and just add an additional counter variable for each char* ****
** **
But is the python-plugin even suitable for this or should I go for a native gcc plugin ?****
It will be great to get any links to something similar ** **
** **
Yaniv****
** **
On Sun, Feb 10, 2013 at 4:37 AM, y a yaniv.azriel.samsung@gmail.com wrote:
Hi all
I am simply awed by the gcc-python-plugin ;)
It looks like a fantastic effort
However, I cant find any sample which actually modifies the original C program
For example, how to add a runtime reference count to each CHAR *
Obviously, this is a large, long term project
For C++, this replaces CHAR* with an object
For C, I might do a simpler effort and just add an additional counter variable for each char*
But is the python-plugin even suitable for this or should I go for a native gcc plugin ?
It will be great to get any links to something similar
The goal of static analysis (heck, of the compiler itself) is never to modify the code. To achieve the kind of changes you are trying to make you need a refactoring framework (check out rope for python). These tools indeed use some kind of static analysis tool internally to decide where to make what changes.
Coincidentially, my interest in gcc-python-plugin is to eventually use it as the internal engine of a C++ refactoring engine. I haven't really started building that, but it is certainly one interesting application.
David E. Narváez
On Sun, 2013-02-10 at 11:37 +0200, y a wrote:
Hi all
I am simply awed by the gcc-python-plugin ;)
It looks like a fantastic effort
Thanks!
However, I cant find any sample which actually modifies the original C program
The plugin doesn't yet support modifying the internal representation, only reading it: so far I've only been using the plugin for code analysis.
However, I don't have any philosophical objections to having the plugin support such modifications: for example, it would be very useful to be able to use the plugin for prototyping new optimization passes for GCC proper.
(I have vague ideas of having a "safety switch" so that you have to call gcc.enable_modification() or somesuch before the plugin will allow you to modify the internal representation, and there might be a gcc.was_modified() boolean, so that the plugin "knows" if modifications happened (perhaps akin to the Linux kernel's "tainted" boolean?). Does that sound sane?)
For example, how to add a runtime reference count to each CHAR *
Obviously, this is a large, long term project
For C++, this replaces CHAR* with an object
For C, I might do a simpler effort and just add an additional counter variable for each char*
This sounds do-able, but I'd be wary of this kind of thing: you'd be effectively building a custom compiler that's probably deviating from the language standard. What you propose may be useful to you, but in some senses you'd be building your own programming language, and it's dangerous to only have one toolchain for your programs. I'd worry that you'd be "painting yourself into a corner" language-wise.
But is the python-plugin even suitable for this or should I go for a native gcc plugin ?
Currently it's not suitable, because of the current lack of support for modifications to the internal representation, but I *am* in favor of adding such support. So it would be a major undertaking to do it with the python plugin (as you'd have to add the support yourself, in addition to then using it).
Dave
gcc-python-plugin@lists.fedorahosted.org