| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A legacy combined GNU toolchain that includes BinUtils, GCC, GPC, GDB, and NewLib.
Multiple use cases exist for continuing to maintain a legacy toolchain:
While primary goal of this respository is to build a cross-toolchain targeting Hitachi/Renesas H8/300 processors with the COFF format, this should work for other targets as well. Though this H8/300 target has colloquially been referred to as h8300-hitachi-hms, it is more properly identified as h8300-hitachi-coff (ref 1, ref 2, object file format info).
Build instructions are largely the same as those for GCC, with a few additional steps and options. A working example can be seen in the Continuous Integration workflow, but the basic sequence is as follows:
In an explicit, intentional deviation from GNU standards, install targets have been modified to remove install-info targets as prerequisites. The files installed by these install-info targets conflict with other, newer files and generally only cause problems if included as part of a regular install. Thus, these files are excluded (which also simplifies packaging work).
If wishing to install these files, make install-info can still be executed separately.
Toolchain sets selection: --toolchain-sets=<comma-separated list of set(s)>
To allow different toolchain sets to be installed side-by-side, each toolchain set is configured to be build with a different program suffix.
| Set(s) | Program Suffix | Description |
|---|---|---|
| binutils216 | -2.16.1 | Builds an independent BinUtils only, based on BinUtils 2.16.1 but—like GCC 3—using some common elements from GCC 3.4.6 and GCC 4.4.7 NOTE: This is for an independent build of BinUtils ONLY and is NOT to be combined with the other toolchain sets. |
| gdb5 | -5 | Builds an independent GDB only, based on GDB 5.3 |
| gcc3 | -3 | Builds a combined toolchain set based on GCC 3.4.6 but using some common elements from GCC 4.4.7 |
| gcc44 | -4.4 | Builds a combined toolchain set based on GCC 4.4.7 |
| gdb5,gcc3 | (respective) | Builds a combined toolchain set based on GCC 3.4.6 but uses an independent GDB based on GDB 5.3 |
| gdb5,gcc44 | (respective) | Builds a combined toolchain set based on GCC 4.4.7 but uses an independent GDB based on GDB 5.3 |
| gdb5,gcc3,gcc44 | (respective) | Builds all three. If combining into a single install, files conflicts not already resolved by the differing toolchain program suffixes are resolved as follows: GCC 4.4 takes precedence over GCC 3, which takes precedence over GDB 5 |
The primary selection criteria was the last known versions to include support for h8300-*-coff, but this also overlapped well with support for GPC, Fortran77/g77, and the CLI CIL front end.
| Project | Version | Release Date | High-Level Notes |
|---|---|---|---|
| Config | 2024-07-27 | 2024-07-27 | Copies of the latest config.guess and config.sub files. All config.guess and config.sub files in all included source projects are sym-linked to the latest files here. |
| BinUtils | 2.16.1 | 2005-06-12 ¹ | Note lack of support for h8300-*-coff in gas/configure.tgt in later versions |
| GCC | 3.4.6 | 2006-03-06 ² | Last full version series to support h8300-*-coff |
| GCC | 4.4.7 | 2012-03-13 ² | Support for “Generic COFF” in general was dropped following the GCC 4.4 release series. As the last GCC release to support h8300-*-coff (c.f. the lack of support for h8300-*-coff [covered by the "h8300-*-*" case] in libgcc/config.host in later versions), the flag --enable-obsolete must be used when configuring. |
| GCC CIL Front End | 4.3.0-2007-12-13 | 2011-06-20 (final commit) | Work was done on separate branches, and front end work was later forked off from back end work. Earlier coding was against GCC 4.3 before later skipping to GCC 4.5 (in which h8300-*-coff was no longer supported). |
| GPC | 2.1-20070904 | 2007-09-04 | See the links and included README files for further details. ³ |
| NewLib | 1.19.0 | 2010-12-16 ⁴ | Version 1.20.0 introduces incompatibilities with libiberty. Versions 2.0 and later fail to build if targeting h8300-*-coff. NewLib is required to build libstdc++-v3 for targets such as h8300-hitachi-coff; otherwise, configure checks will fail with a “No support for this host/target combination” message. |
| GDB | 5.3 | released 2002-12-12 | While a few later versions still supported h8300-*-coff targets, the debugging capabilities built into BrickEmu (an emulator for the LEGO MindStorms RCX) are based on a built-in GDB server that implements the GDB 5 protocol. |
| GDB | 6.8 | released 2008-02-29 | This version of GDB best aligns with the other packages in the GCC toolchain, in that it is able to be included in a combined toolchain build. (Neither GDB 5.3 nor GDB 7.12.1 are able to be built that way.) |
| GDB | 7.12.1 | released 2017-01-21 | While GDB 7.12.1 seems to indicate that h8300-*-*-coff targets are supported (note lack of support for h8300-*-*-coff [covered by the "h8300-*-*-*" case] in bfd/config.bfd in later versions), compatibility has not been fully validated, as it was released well after h8300-*-coff support had been dropped from other packages (for example, BinUtils and GDB are both developed in a single, common source repository). |
¹ BinUtils: Release date based on the ChangeLog files for bfd, gas, and ld.
² GCC: Link includes the full GCC release timeline, with additional resources as follows:
³ GPC: Additional links and information—
⁴ NewLib: Release history link opens in a subframe; at the site, navigate to Download > Snapshots to view the release timeline history subframe.
Use of GCC 3.4.6 generally seems preferable to GCC 4.4.7:
| GCC Version | Supported Programming Languages | Kernel Binary File Size | App Start (BASE1) Address |
|---|---|---|---|
| 3.4.6 | C, C++, Java, ObjectiveC, Fortran77, Pascal, TreeLang | 13,108 bytes | 0xace4 |
| 4.4.7 | C, C++, Java, CLI CLI front end, possibly Pascal (?) | 14,322 bytes | 0xb0c4 |
Potential advantages of GCC 4.4.7 over GCC 3.4.6:
For patches and updates applied from other sources, a more in-depth description is available in the patches folder.
Changes to each of the source projects as compared to their last official releases can be reviewed as follows:
Several folders are duplicated across the various project comprising the toolchain. By appropriately mixing and matching folder versions, it is possible to establish a combined source folder through which a single, combined build can be executed.
More information on how projects were “mixed and matched” to create combined source folders can be found in the sym-combined folder.
Certain files, if updated, will cause other files to be regenerated. Due to various and sundry changes that have occurred over time, those files might no longer regenrate correctly with the latest tool versions.
In GPC:
| Back | FazBrowse Home | New Git URL |