Hello Prashant,

On Thu, Mar 08 2018, prashant kumar wrote:
> Hello sir my self *Prashant kumar *second year B.TECH student and i am
> interesting in *"GCC plugin Api" *project .i have a good hand in c,c++
> languages .Can u tell me what the further process i have to do and what
> kind of thing i have to do

first and foremost, please discuss any GSoC idea or topic, use the
gcc@gcc.gnu.org mailing list (CCed), this way other people may also
participate in the discussion which will eventually help you as well.
Moreover, in your particular case, you sent me your message while I was
on vacation and so it took quite some time before I got to replying.
Other members of the GCC community might have done that meanwhile.

The aim of the gcc API project would be to start building a real GCC API
for plugins, so that simple but already useful plugins (operating on
GIMPLE level) could be written that use only this API (as opposed to the
current state where they can - actually they have to - use any normal
public symbol there is in GCC.  I do not think it is reasonable to
attempt make the API really entirely compiler agnostic but whenever
practical, the interface should be built on top of generic compiler
constructs (e.g. statements and operands as opposed to gimple and
trees), for many reasons.

In the first half of the project one would aim to build various dumping
plugins... that would simply dump CFG, statements and perhaps also some
information about types queried through the new interface.  In the
second half, you should try to rewrite some existing simple plugins
using this API (such as https://pagure.io/funcp-encrypt that is
described at
https://developers.redhat.com/blog/2017/03/17/diagnosing-function-pointer-security-flaws-with-a-gcc-plugin/
or perhaps the structleak_plugin.c kernel GCC plugin or
https://rwmj.wordpress.com/2016/02/24/playing-with-gcc-plugins/ though I
have not had a very close look any of those).

If you are interested, make sure you can check out the GCC trunk source
code, can build GCC from it.  The following links should help you:

 - How to check out our sources using svn and git is described at
   https://gcc.gnu.org/svn.html and https://gcc.gnu.org/wiki/GitMirror
   respectively.

 - Steps linked from https://gcc.gnu.org/install/ show you how to
   configure, build and test GCC is described in (look for
   --disable-bootstrap, among other things).

 - Also make sure you also look at https://gcc.gnu.org/wiki/InstallingGCC and
   https://gcc.gnu.org/wiki/GettingStarted wiki pages.

And while you are at it, try also to look at the source.  But you have
gone through all of the above and still find a little bit intimidating
or difficult to see where to start looking, do not despair.  That is
something the mentors and the community at large are willing to help
you with.

Regarding plugins, I'd suggest reading one ore more tutorials on their
current implementation
(e.g. http://thinkingeek.com/2015/08/16/a-simple-plugin-for-gcc-part-1/)
and then look at some real plugins to get the sense of what would need
to be APIzied.

Good luck,

Martin

Reply via email to