From 5197d474361b4748e0339ae60e6dc9975f2313df Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 11 May 2015 12:01:57 -0700 Subject: [PATCH] Default e_machine to EM_IAMCU for i?86-*-elfiamcu This patch sets the default ELF output format of assembler and linker to EM_IAMCU when binutils is configured to i?86-*-elfiamcu target. gas/ * configure.tgt (arch): Set to iamcu for i386-*-elfiamcu target. * config/tc-i386.c (i386_mach): Support iamcu. (i386_target_format): Likewise. ld/ * configure.tgt: Support i[3-7]86-*-elfiamcu target. ld/testsuite/ * ld-i386/i386.exp (iamcu_tests): Run iamcu-4. * ld-i386/iamcu-4.d: New file. --- gas/ChangeLog | 6 ++++++ gas/config/tc-i386.c | 24 +++++++++++++++++++++++- gas/configure.tgt | 1 + ld/ChangeLog | 4 ++++ ld/configure.tgt | 2 ++ ld/testsuite/ChangeLog | 5 +++++ ld/testsuite/ld-i386/i386.exp | 1 + ld/testsuite/ld-i386/iamcu-4.d | 16 ++++++++++++++++ 8 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ld/testsuite/ld-i386/iamcu-4.d diff --git a/gas/ChangeLog b/gas/ChangeLog index ce9c7338c2..7010e644ce 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-05-11 H.J. Lu + + * configure.tgt (arch): Set to iamcu for i386-*-elfiamcu target. + * config/tc-i386.c (i386_mach): Support iamcu. + (i386_target_format): Likewise. + 2015-05-11 H.J. Lu * config/tc-i386.c (cpu_arch): Add iamcu. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 8a6da64b03..db263eeb26 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2468,7 +2468,8 @@ i386_mach (void) else return bfd_mach_x64_32; } - else if (!strcmp (default_arch, "i386")) + else if (!strcmp (default_arch, "i386") + || !strcmp (default_arch, "iamcu")) { if (cpu_arch_isa == PROCESSOR_IAMCU) { @@ -10071,6 +10072,27 @@ i386_target_format (void) } else if (!strcmp (default_arch, "i386")) update_code_flag (CODE_32BIT, 1); + else if (!strcmp (default_arch, "iamcu")) + { + update_code_flag (CODE_32BIT, 1); + if (cpu_arch_isa == PROCESSOR_UNKNOWN) + { + static const i386_cpu_flags iamcu_flags = CPU_IAMCU_FLAGS; + cpu_arch_name = "iamcu"; + cpu_sub_arch_name = NULL; + cpu_arch_flags = iamcu_flags; + cpu_arch_isa = PROCESSOR_IAMCU; + cpu_arch_isa_flags = iamcu_flags; + if (!cpu_arch_tune_set) + { + cpu_arch_tune = cpu_arch_isa; + cpu_arch_tune_flags = cpu_arch_isa_flags; + } + } + else + as_fatal (_("Intel MCU doesn't support `%s' architecture"), + cpu_arch_name); + } else as_fatal (_("unknown architecture")); diff --git a/gas/configure.tgt b/gas/configure.tgt index 09ee275832..d14bcdf5fa 100644 --- a/gas/configure.tgt +++ b/gas/configure.tgt @@ -215,6 +215,7 @@ case ${generic_target} in i386-*-beospe*) fmt=coff em=pe ;; i386-*-beos*) fmt=elf ;; i386-*-coff) fmt=coff ;; + i386-*-elfiamcu) fmt=elf arch=iamcu ;; i386-*-elf*) fmt=elf ;; i386-*-kaos*) fmt=elf ;; i386-*-bsd*) fmt=aout em=386bsd ;; diff --git a/ld/ChangeLog b/ld/ChangeLog index bbb819b187..4cd77f7590 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2015-05-11 H.J. Lu + + * configure.tgt: Support i[3-7]86-*-elfiamcu target. + 2015-05-11 H.J. Lu * Makefile.am (ALL_EMULATION_SOURCES): Add eelf_iamcu.c. diff --git a/ld/configure.tgt b/ld/configure.tgt index e1f5be79a5..e4eacd4d56 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -304,6 +304,8 @@ x86_64-*-netbsd*) targ_emul=elf_x86_64 sed -e 's/netbsd/netbsdelf/'`;; esac ;; i[3-7]86-*-netware) targ_emul=i386nw ;; +i[3-7]86-*-elfiamcu) targ_emul=elf_iamcu + targ_extra_emuls=elf_i386 ;; i[3-7]86-*-elf*) targ_emul=elf_i386 targ_extra_emuls=elf_iamcu ;; x86_64-*-elf*) targ_emul=elf_x86_64 diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 52f09fbb7d..89f695cb2a 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-05-11 H.J. Lu + + * ld-i386/i386.exp (iamcu_tests): Run iamcu-4. + * ld-i386/iamcu-4.d: New file. + 2015-05-11 H.J. Lu * ld-i386/abs-iamcu.d: New file. diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 7309910a49..2e59522f95 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -248,6 +248,7 @@ proc iamcu_tests {} { run_dump_test "iamcu-1" run_dump_test "iamcu-2" run_dump_test "iamcu-3" + run_dump_test "iamcu-4" } iamcu_tests diff --git a/ld/testsuite/ld-i386/iamcu-4.d b/ld/testsuite/ld-i386/iamcu-4.d new file mode 100644 index 0000000000..b43d04899b --- /dev/null +++ b/ld/testsuite/ld-i386/iamcu-4.d @@ -0,0 +1,16 @@ +#source: dummy.s +#ld: tmpdir/startiamcu.o tmpdir/fooiamcu.o +#readelf: -h +#target: i?86-*-elfiamcu + +ELF Header: + Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 + Class: ELF32 + Data: 2's complement, little endian + Version: 1 \(current\) + OS/ABI: UNIX - System V + ABI Version: 0 + Type: EXEC \(Executable file\) + Machine: Intel MCU + Version: 0x1 +#pass -- 2.34.1