Differences between revisions 1 and 65 (spanning 64 versions)
Revision 1 as of 2007-07-27 16:13:07
Size: 1868
Editor: DiegoNovillo
Comment:
Revision 65 as of 2017-09-13 11:25:27
Size: 6502
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## Please edit system and help pages ONLY in the moinmaster wiki! For more
## information, please see MoinMaster:MoinPagesEditorGroup.
##master-page:CategoryTemplate
##master-date:Unknown-Date
#format wiki
#language en
== Welcome to the Getting Started section of the GCC Wiki ==
Line 8: Line 3:
Welcome to the Getting Started section of the GCC Wiki.  This section contains collected information geared towards folks who are new to GCC and may be feeling a bit lost in the barbaric jungles of GCC's source code. Although we are continuously trying to improve GCC's internal modularity and interfaces, the fact remains that GCC is about 20 years old, fairly large and we need to keep it working on the multitude of supported architectures and languages. So, getting to work with GCC can be a challenge. <<TableOfContents(1)>>


We are constantly looking for new developers who are willing to donate their time to advance GCC.

This section contains collected information geared towards folks who are new to GCC and may be feeling a bit lost in the barbaric jungles of GCC's source code. Although we are continuously trying to improve GCC's internal modularity and interfaces, the fact remains that GCC is about 20 years old, fairly large and we need to keep it working on the multitude of supported architectures and languages. So, getting to work with GCC can be a challenge.
Line 12: Line 12:
This page also has a collection of outstanding improvement projects that for one reason or another nobody has gotten around to finishing. You are welcome to add more, or to "claim" a project that you find interesting to work in. Look at [[EasyHacks]] for some on-ramp suggestions (but carry on reading this page for how-to information). [[ImprovementProjects]] lists more involved projects, that may suit your tates.
Line 14: Line 14:
= Basics =
Line 16: Line 15:
So, you are ready to contribute to GCC. We are constantly looking for new developers who are willing to donate their time to advance GCC. Before you do, however, there is an important formality that you need to go through: Copyright assignment. GCC is owned by the [http://www.fsf.org Free Software Foundation (FSF)], as such, all contributors must assign their copyright to the FSF before any of their changes are accepted. The copyright assignment process is described in [http://gcc.gnu.org/contribute.html Contributing to GCC]. = Basics: Contributing to GCC in 10 easy steps =

 1. '''[[https://gcc.gnu.org/contribute.html#legal|Small patches don't need any copyright assignment]]'''. Otherwise, you need to file a '''copyright assignment'''.

    GCC is owned by the [[https://www.fsf.org|Free Software Foundation (FSF)]], as such, all contributors must assign their copyright to the FSF before their changes are accepted. The copyright assignment process is described in [[https://gcc.gnu.org/contribute.html#legal|Contributing to GCC]]. In a nutshell, send an email to <assign@gnu.org> and explain that you want to contribute code to GCC and what is your employment status (student, employed by a company, self-employed, ...) and they will send you a form to sign. If they don't reply in 3-5 days, insist. If there is still no reply, write to <gcc@gcc.gnu.org> and explain your case. This process requires some patience but while you wait, '''you can continue with the next steps'''.

 1. Accessing the sources, you can choose between:
    * [[https://gcc.gnu.org/svn.html|Subversion]] (see also the tips about [[https://gcc.gnu.org/wiki/SvnHelp|using subversion for GCC development]])
    * [[https://gcc.gnu.org/wiki/GitMirror|Git]]

 1. [[InstallingGCC|Building GCC]]
    * You do not actually need to install GCC to test it, it is enough to build it
    * Unless you have a good reason, you should maximise the number of languages tested by passing {{{--enable-languages=all}}} to {{{configure}}}.

 1. [[Testing_GCC|Testing GCC]]

 1. [[DebuggingGCC|Debugging GCC]]

 1. [[FormattingCodeForGCC|Formatting code for GCC]]

 1. [[Community|Join the community]]: Join at least the [[https://gcc.gnu.org/lists.html|gcc@ and gcc-patches@ mailing lists]].

 1. [[https://gcc.gnu.org/contribute.html#patches|Submitting patches]]: Produce a patch with [[SvnSetup#Configure_svn_diff_to_use_-p|svn diff -p]], produce a Changelog with {{{contrib/mklog}}}, submit patches to the [[https://gcc.gnu.org/lists.html|gcc-patches@ mailing list]] (possibly CC other relevant [[https://gcc.gnu.org/lists.html|mailing lists]] or [[https://gcc.gnu.org/svn/gcc/trunk/MAINTAINERS|MAINTAINERS]])

 1. [[https://gcc.gnu.org/svnwrite.html|Committing patches]]. For the few first patches you should ask in the submission email that someone commits the patch for you. Once you have a few patches approved, you should ask for [[https://gcc.gnu.org/svnwrite.html|write access to the SVN]].

 1. [[https://gcc.gnu.org/onlinedocs/gcc/Contributors.html|Profit!]]


= Tutorials, HOWTOs =

 * [[SettingUpX32GCC|Building an x86_64-linux-gnux32 (x32) gcc]]
 * [[http://www.cse.iitb.ac.in/grc/index.php?page=gcc-tut | Essential Abstractions in GCC (CGO 2011, Dr. Uday Khedker, Department of Computer Science & Eng IIT Bombay)]]
 * [[http://guerby.org/ftp/cfarm-ghm2010-20100725.pdf | GCC Compile Farm Lightning talk at GHM July 2010]]
 * [[http://blog.lxgcc.net/?page_id=116 | A blog about GCC development]]
 * [[http://blog.lxgcc.net/wp-content/uploads/2011/03/GCC_frontend.pdf | Whitepaper about developing a GCC front-end (2011)]]
 * [[http://guerby.org/ftp/gcc-toulibre-20091216.pdf | Overview of GCC for users, Toulibre Dec 2010]]
 * [[http://www.se-radio.net/podcast/2007-07/episode-61-internals-gcc |gcc internals podcast]] (Introduction)
 * [[http://www.airs.com/dnovillo/200711-GCC-Internals|Updated GCC Internals Tutorial (November 2007)]]
 * [[OptimizationCourse|GCC Optimization Course and Tutorial]]
 * [[http://www.airs.com/dnovillo/Papers/#cgo2007|GCC Internals Tutorial at CGO 2007]]
 * [[http://www.cse.iitb.ac.in/~uday/gcc-workshop/?file=downloads|Workshop on GCC Internals (Advanced GCC Workshop 2007)]]
 * [[attachment:loopcheat.ps|Cheatsheet for loop optimizer (GCC summit 2007)]]
 * [[HomePage#summitprocs| GCC Summit Proceedings]]
 * [[http://www.cse.iitb.ac.in/grc|GCC Resource Center (GRC)]].
 * [[Dwarf2EHNewbiesHowto|Dwarf2 Exception Handler HOWTO]] Also known as the "EH newbies HOWTO".
 * [[ConvertBasicAsmToExtended|How to Convert Basic asm to Extended asm]].
Line 20: Line 65:
= Tut = Internal documentation =
Line 22: Line 67:
To add a page to this category, add a link to this page on the last line of the page. You can add multiple categories to a page.  * [[https://gcc.gnu.org/onlinedocs/gccint/|GCC internals]]
 * [[https://gcc.gnu.org/onlinedocs/cppinternals/|CPP internals]]
 * /!\ [BROKEN] [[http://www.airs.com/dnovillo/gcc/doc/html|GCC Middle End and Back End API reference (automatically generated with doxygen every week)]]
 * [[GenericAPI|Overview with Examples on the GENERIC Tree API]]
 * [[BuildInfrastructure]]: GNU Autoconf
Line 24: Line 73:
'''List of pages in this category:'''
Line 26: Line 74:
[[FullSearch()]] = Dealing with the source code =
Line 28: Line 76:
----
CategoryCategory
 * [[FormattingCodeForGCC|Formatting code for GCC]]
 * [[DebuggingGCC|Debugging GCC]]
 * [[Testing_GCC|Testing GCC]]
 * [[PerformanceTesting|Compile time and memory utilization testing]]
 * [[WritingANewPass|Writing a new pass]]
 * [[WritingANewFrontEnd|Writing a new front-end]]
 * [[WritingANewBackEnd|Writing a new back end]]
= Structure Of GCC =
 * [[StructureOfGCC|Structure of GCC]]
 * [[FrontEnd|Language front ends]]
 * [[MiddleEnd|Target independent code transformation frameworks]]
 * [[TreeOptimizers|Tree Optimizers]]
 * [[RTLOptimizers|RTL Optimizers]]
 * [[BackEnd|Target dependent passes and code generation]]
 * [[reload]]

== Reporting and correcting bugs ==

When using [[https://gcc.gnu.org/bugzilla|Bugzilla]], GCC maintainers (those having at least write after approval status to GCC trunk) [[https://gcc.gnu.org/ml/gcc/2009-10/msg00519.html|should preferably]] use their ''username''`@gcc.gnu.org` account to log in [[https://gcc.gnu.org/bugzilla|Bugzilla]].

Welcome to the Getting Started section of the GCC Wiki

We are constantly looking for new developers who are willing to donate their time to advance GCC.

This section contains collected information geared towards folks who are new to GCC and may be feeling a bit lost in the barbaric jungles of GCC's source code. Although we are continuously trying to improve GCC's internal modularity and interfaces, the fact remains that GCC is about 20 years old, fairly large and we need to keep it working on the multitude of supported architectures and languages. So, getting to work with GCC can be a challenge.

Everyone is welcome to add links to tutorials, HOWTOs, cheat sheets, etc that may be floating around the net.

Look at EasyHacks for some on-ramp suggestions (but carry on reading this page for how-to information). ImprovementProjects lists more involved projects, that may suit your tates.

Basics: Contributing to GCC in 10 easy steps

  1. Small patches don't need any copyright assignment. Otherwise, you need to file a copyright assignment.

    • GCC is owned by the Free Software Foundation (FSF), as such, all contributors must assign their copyright to the FSF before their changes are accepted. The copyright assignment process is described in Contributing to GCC. In a nutshell, send an email to <assign@gnu.org> and explain that you want to contribute code to GCC and what is your employment status (student, employed by a company, self-employed, ...) and they will send you a form to sign. If they don't reply in 3-5 days, insist. If there is still no reply, write to <gcc@gcc.gnu.org> and explain your case. This process requires some patience but while you wait, you can continue with the next steps.

  2. Accessing the sources, you can choose between:
  3. Building GCC

    • You do not actually need to install GCC to test it, it is enough to build it
    • Unless you have a good reason, you should maximise the number of languages tested by passing --enable-languages=all to configure.

  4. Testing GCC

  5. Debugging GCC

  6. Formatting code for GCC

  7. Join the community: Join at least the gcc@ and gcc-patches@ mailing lists.

  8. Submitting patches: Produce a patch with svn diff -p, produce a Changelog with contrib/mklog, submit patches to the gcc-patches@ mailing list (possibly CC other relevant mailing lists or MAINTAINERS)

  9. Committing patches. For the few first patches you should ask in the submission email that someone commits the patch for you. Once you have a few patches approved, you should ask for write access to the SVN.

  10. Profit!

Tutorials, HOWTOs

Internal documentation

Dealing with the source code

Structure Of GCC

Reporting and correcting bugs

When using Bugzilla, GCC maintainers (those having at least write after approval status to GCC trunk) should preferably use their username@gcc.gnu.org account to log in Bugzilla.

None: GettingStarted (last edited 2017-09-13 11:25:27 by NathanSidwell)