This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed, 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 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
-- 
1.9.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]