H8: Set H8/300H as the default architecture for H8 family
Changes the default H8 architecture in binutils from H8/300 to H8/300H to match GCC's default.
This patch updates binutils’ default architecture for the H8 family from H8/300 to H8/300H. This change aligns binutils with GCC, which removed support for H8/300 and now defaults to H8/300H. The discrepancy caused approximately 30 test cases to fail due to incompatible architectures between the compiler output and the linker/assembler defaults. The change affects bfd/cpu-h8300.c, gas/config/tc-h8300.c, and ld/configure.tgt.
- proposer
Proposes to set H8/300H as the default architecture for the H8 family in binutils to match GCC's default, resolving test case failures.
“Binutils, in particular ld and gas, use H8/300 as the default architecture. On the other hand, support for H8/300 has been removed from gcc since July 2020 (AFAIR) and H8/300H is the default there. This situation causes that about 30 test cases fail in the following way:”
- reviewer
Agrees with the change, stating that it makes sense given GCC's removal of H8/300 support.
“I'm a lot less involved in binutils than I have been in the past, but this makes sense to me. As Jan mentions, we dropped old H8/300 support in GCC a while back and default to”
Technical Tradeoffs
- Aligns binutils with GCC's default architecture, improving toolchain consistency.
- Resolves test case failures caused by architecture mismatches.
In Details
This change standardizes the default toolchain architecture for the H8 family. Binutils' ld and gas previously defaulted to H8/300, while GCC has since switched to H8/300H as its default. This patch synchronizes binutils to match GCC, resolving linker/assembler incompatibilities with modern H8/300H compilation targets and unblocking a number of test suite failures.
- H8/300
- An older variant of the H8 microcontroller architecture.
- H8/300H
- An enhanced variant of the H8 microcontroller architecture, often used as a default in modern toolchains.
- gcc
- The GNU Compiler Collection, a widely used suite of compilers.
- binutils
- A collection of programming tools, including the assembler (gas) and the linker (ld), for manipulating object code.
- linker (ld)
- A program that takes one or more object files and combines them into a single executable file or library.
- assembler (gas)
- A program that translates assembly language code into machine code.