On Fri, Sep 7, 2012 at 6:31 PM, David Malcolm <dmalc...@redhat.com> wrote:
> After a hiatus, I've restarted work on an API for GCC plugins -
> specifically, a C API (given that my plugin is written in C, I have more
> interest in that than a C++ API).
>
> BTW, how many other GCC plugins are written in C?
>
> It's still a work-in-progress, but can be seen here:
>
> http://git.fedorahosted.org/cgit/gcc-python-plugin.git/tree/gcc-c-api?h=proposed-plugin-api
>
> i.e. within the "proposed-plugin-api" branch of the gcc-python-plugin,
> within the "gcc-c-api" subdirectory.  I've been gradually porting the
> python plugin to use the proposed API, rather than poking at GCC's
> insides itself.  I've also tried to follow the GNU coding conventions
> within that directory (the plugin itself follows the Python coding
> conventions).  I haven't done the copyright assignment paperwork yet.
>
> There are no explicit test cases yet, though the python plugin's test
> suite passes, exercising the code indirectly.
>
> The API has a build-time dependency on Python (parts of it are
> autogenerated, and Python is my natural choice for this work).  There
> isn't a runtime dep though.
>
> I started thinking about trying to create a patch to merge the API into
> the GCC source tree, but I'm running into some high-level issues: how is
> a plugin meant to actually use this API without requiring the use of an
> in-development version of GCC?  Similarly, as a plugin author, I want my
> plugin to be usable against GCC 4.6 onwards, but GCC's internal APIs are
> gradually changing.  I see a lot of #ifs in my future, and it makes
> sense to try to isolate the compatibility shims in one place, rather
> than having every plugin author maintain them.
>
> Given that, it's most useful, I think, if the API code can somehow be
> used independently of GCC: perhaps it's more of a compatibility shim
> that hides the differences between GCC versions (e.g. C vs C++ name
> mangling, C++ internals in 4.8 onwards etc) and provides a stable ABI
> (that way you only have to recompile the API implementation when
> recompilng GCC: all plugins built against the API should remain
> compatible - that's the goal, after all).
>
> I'm not sure exactly how this is to be structured: external project vs
> internal to gcc's source tree, but given that this is a non-trivial
> amount of code and that I want it to support gcc 4.6, perhaps external
> to the gcc source tree is the way to go.
>
> Thoughts?

Micha was also working on the proposed introspection API, I blame him
for not posting anything about this despite it's being "ready" since a few
months...

Richard.

> Hope this is helpful
> Dave
>

Reply via email to