OS Specific Toolchain: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
Barry (talk | contribs)
Max (talk | contribs)
Updated, everything still works fine for binutils 2.39 and gcc 12.2.0. Added a section about how to keep track of your changes. Removed the notes about crossconfig.m4 because this way is still fine.
Line 15: Line 15:
* automake (exactly version 1.15.1)
* automake (exactly version 1.15.1)
* libtool
* libtool
* The latest Binutils source code (2.38 at time of writing).
* The latest Binutils source code (2.39 at time of writing).
* The latest GCC source code (11.3.0 at time of writing).
* The latest GCC source code (12.2.0 at time of writing).
* Knowledge of the internals of Binutils and GCC.
* Knowledge of the internals of Binutils and GCC.
* Knowledge of autoconf and automake.
* Knowledge of autoconf and automake.
Line 28: Line 28:


This tutorial currently only have instructions for adding a new x86 and x86_64 target for myos, but it serves as a good enough example that it should be trivial to add more processors by basing it on these instructions and what other operating systems have done.
This tutorial currently only have instructions for adding a new x86 and x86_64 target for myos, but it serves as a good enough example that it should be trivial to add more processors by basing it on these instructions and what other operating systems have done.


== Making your changes reproducible ==
Since at some point you might have a contributor that wants participate in your project, you likely want to make your toolchain setup reproducible. Instead of downloading the tar-balls, it is therefore a good idea to clone the repositories of binutils (https://sourceware.org/git/binutils-gdb.git) and gcc (https://gcc.gnu.org/git/gcc.git) locally.

All release versions are tagged within these repositories, so you can use <tt>"git checkout binutils-2_39"</tt> and <tt>"git checkout releases/gcc-12.2.0"</tt> to switch to the correct versions respectively. After making the described changes, you can easily create a patch using <tt>"git diff"</tt> which you can reuse later.
Another option would be to fork one of the mirror repositories on GitHub.



== Modifying Binutils ==
== Modifying Binutils ==
Line 229: Line 237:
;;
;;
</source>
</source>

'''TODO''': Examine this design and find out what actually needs to be done here.

'''TODO''': This hasn't been updated since the article was about GCC 7.2.0. It's probably very wrong now. It needs to be updated.


'''Note''': You need to run <tt>autoconf</tt> in the <tt>libstdc++-v3</tt> directory.
'''Note''': You need to run <tt>autoconf</tt> in the <tt>libstdc++-v3</tt> directory.