[PATCH] H8: Set H8/300H as the default architecture for H8 family
Jan Dubiec
jdx@o2.pl
Thu Jul 9 21:04:12 GMT 2026
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:
[...]
Running /mnt/Works/binutils/ld/testsuite/ld-gc/gc.exp ...
h8300-elf-cc -B/mnt/Works/xcomp/build-binutils-h8300-linux/ld/tmpdir/ld/ -I/mnt/Works/binutils/ld/testsuite/ld-gc -g -O2 -fno-sanitize=all -c -ffunction-sections -fdata-sections -fno-sanitize=all -fno-lto -c /mnt/Works/binutils/ld/testsuite/ld-gc/gc.c -o tmpdir/gc.o
Executing on host: sh -c {h8300-elf-cc -B/mnt/Works/xcomp/build-binutils-h8300-linux/ld/tmpdir/ld/ -I/mnt/Works/binutils/ld/testsuite/ld-gc -g -O2 -fno-sanitize=all -c -ffunction-sections -fdata-sections -fno-sanitize=all -fno-lto -c /mnt/Works/binutils/ld/testsuite/ld-gc/gc.c -o tmpdir/gc.o 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
./ld-new -o tmpdir/gcexe -L/mnt/Works/binutils/ld/testsuite/ld-gc --gc-sections -e main --defsym __stack_chk_fail=0 tmpdir/gc.o
Executing on host: sh -c {./ld-new -o tmpdir/gcexe -L/mnt/Works/binutils/ld/testsuite/ld-gc --gc-sections -e main --defsym __stack_chk_fail=0 tmpdir/gc.o 2>&1} /dev/null ld.tmp (timeout = 300)
spawn [open ...]
/mnt/Works/xcomp/build-binutils-h8300-linux/ld/ld-new: h8300h architecture of input file `tmpdir/gc.o' is incompatible with h8300 output
/mnt/Works/xcomp/build-binutils-h8300-linux/ld/ld-new: h8300h architecture of input file `tmpdir/gc.o' is incompatible with h8300 output
FAIL: Check --gc-section
[...]
This patch sets H8/300H as the default architecture for H8 family.
bfd/ChangeLog:
* cpu-h8300.c: Set H8/300H as the default architecture
for H8 family.
gas/ChangeLog:
* config/tc-h8300.c: Set H8/300H as the default architecture
for H8 family.
ld/ChangeLog:
* configure.tgt: Set H8/300H as the default architecture
for H8 family.
Signed-off-by: Jan Dubiec <jdx@o2.pl>
---
bfd/cpu-h8300.c | 4 ++--
gas/config/tc-h8300.c | 2 +-
ld/configure.tgt | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/bfd/cpu-h8300.c b/bfd/cpu-h8300.c
index f2294ad217e..4447417610f 100644
--- a/bfd/cpu-h8300.c
+++ b/bfd/cpu-h8300.c
@@ -134,10 +134,10 @@ static const bfd_arch_info_type h8300s_info_struct =
N (32, 32, bfd_mach_h8300s, "h8300s", "h8300s", false, & h8300hn_info_struct);
static const bfd_arch_info_type h8300h_info_struct =
- N (32, 32, bfd_mach_h8300h, "h8300h", "h8300h", false, &h8300s_info_struct);
+ N (32, 32, bfd_mach_h8300h, "h8300h", "h8300h", true, &h8300s_info_struct);
const bfd_arch_info_type bfd_h8300_arch =
- N (16, 16, bfd_mach_h8300, "h8300", "h8300", true, &h8300h_info_struct);
+ N (16, 16, bfd_mach_h8300, "h8300", "h8300", false, &h8300h_info_struct);
/* Pad the given address to 32 bits, converting 16-bit and 24-bit
addresses into the values they would have had on a h8s target. */
diff --git a/gas/config/tc-h8300.c b/gas/config/tc-h8300.c
index ec5cc4f6e39..8025204bfa1 100644
--- a/gas/config/tc-h8300.c
+++ b/gas/config/tc-h8300.c
@@ -52,7 +52,7 @@ int Smode;
int Nmode;
int SXmode;
-static int default_mach = bfd_mach_h8300;
+static int default_mach = bfd_mach_h8300h;
#define PSIZE (Hmode && !Nmode ? L_32 : L_16)
diff --git a/ld/configure.tgt b/ld/configure.tgt
index a696e557533..6371177db28 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -313,8 +313,8 @@ ft32-*-*) targ_emul=elf32ft32
targ_extra_ofiles=ldelfgen.o
;;
h8300-*-elf* | h8300-*-rtems*)
- targ_emul=h8300elf;
- targ_extra_emuls="h8300helf h8300self h8300hnelf h8300snelf h8300sxelf h8300sxnelf"
+ targ_emul=h8300helf;
+ targ_extra_emuls="h8300self h8300hnelf h8300snelf h8300sxelf h8300sxnelf h8300elf"
;;
h8300-*-linux*)
targ_emul=h8300elf_linux;
--
2.54.0
More information about the Binutils
mailing list