[PATCH] H8: Set H8/300H as the default architecture for H8 family

Jan Dubiec <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
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 <[email protected]>
---
 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.