aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-i386.c24
-rw-r--r--gas/configure.tgt1
-rw-r--r--ld/ChangeLog4
-rw-r--r--ld/configure.tgt2
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-i386/i386.exp1
-rw-r--r--ld/testsuite/ld-i386/iamcu-4.d16
8 files changed, 58 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index ce9c733..7010e64 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,11 @@
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
+ * 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 <hongjiu.lu@intel.com>
+
* config/tc-i386.c (cpu_arch): Add iamcu.
(i386_align_code): Handle PROCESSOR_IAMCU.
(i386_arch): Likewise.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 8a6da64..db263ee 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 09ee275..d14bcdf 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 bbb819b..4cd77f7 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,9 @@
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
+ * configure.tgt: Support i[3-7]86-*-elfiamcu target.
+
+2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
+
* Makefile.am (ALL_EMULATION_SOURCES): Add eelf_iamcu.c.
(eelf_iamcu.c): New.
* configure.tgt (targ_extra_emuls): Add elf_iamcu if elf_i386 is
diff --git a/ld/configure.tgt b/ld/configure.tgt
index e1f5be7..e4eacd4 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 52f09fb..89f695c 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
+ * ld-i386/i386.exp (iamcu_tests): Run iamcu-4.
+ * ld-i386/iamcu-4.d: New file.
+
+2015-05-11 H.J. Lu <hongjiu.lu@intel.com>
+
* ld-i386/abs-iamcu.d: New file.
* ld-i386/dummy.s: Likewise.
* ld-i386/foo.s: Likewise.
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 7309910..2e59522 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 0000000..b43d048
--- /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