From 7e0a81123db953de03f6482f7c10f306407d348e Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 11 May 2015 11:27:34 -0700 Subject: Add Intel MCU support to ld -m elf_iamcu must be passed to i386 linker to generate Intel MCU binary. ld/ * 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 enabled in BFD. * Makefile.in: Regenerated. * emulparams/elf_iamcu.sh: New file. ld/testsuite/ * ld-i386/abs-iamcu.d: New file. * ld-i386/dummy.s: Likewise. * ld-i386/foo.s: Likewise. * ld-i386/iamcu-1.d: Likewise. * ld-i386/iamcu-2.d: Likewise. * ld-i386/iamcu-3.d: Likewise. * ld-i386/start.s: Likewise. * ld-i386/i386.exp (iamcu_tests): New. Run iamcu_tests. --- ld/configure.tgt | 64 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 22 deletions(-) (limited to 'ld/configure.tgt') diff --git a/ld/configure.tgt b/ld/configure.tgt index 4dd59f6..e1f5be7 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -226,9 +226,12 @@ i[3-7]86-*-sco*) targ_emul=i386coff ;; i[3-7]86-*-isc*) targ_emul=i386coff ;; i[3-7]86-*-lynxos*) targ_emul=i386lynx ;; i[3-7]86-*-coff) targ_emul=i386coff ;; -i[3-7]86-*-rtems*) targ_emul=elf_i386 ;; -i[3-7]86-*-aros*) targ_emul=elf_i386 ;; -i[3-7]86-*-rdos*) targ_emul=elf_i386 ;; +i[3-7]86-*-rtems*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; +i[3-7]86-*-aros*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; +i[3-7]86-*-rdos*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; x86_64-*-rdos*) targ_emul=elf64rdos ;; x86_64-*-cloudabi*) targ_emul=elf_x86_64_cloudabi ;; i[3-7]86-*-bsd) targ_emul=i386bsd ;; @@ -236,26 +239,30 @@ i[3-7]86-*-bsd386) targ_emul=i386bsd ;; i[3-7]86-*-bsdi*) targ_emul=i386bsd ;; i[3-7]86-*-aout) targ_emul=i386aout ;; i[3-7]86-*-linux*aout*) targ_emul=i386linux - targ_extra_emuls=elf_i386 + targ_extra_emuls="elf_i386 elf_iamcu" + tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/aout//'` tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` ;; -i[3-7]86-*-linux*oldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;; +i[3-7]86-*-linux*oldld) targ_emul=i386linux + targ_extra_emuls="elf_i386 elf_iamcu" ;; i[3-7]86-*-linux-*) targ_emul=elf_i386 - targ_extra_emuls=i386linux + targ_extra_emuls="i386linux elf_iamcu" targ64_extra_emuls="elf_x86_64 elf32_x86_64 elf_l1om elf_k1om" targ64_extra_libpath=elf_x86_64 targ_extra_libpath=elf32_x86_64 tdir_i386linux=${targ_alias}aout ;; x86_64-*-linux-gnux32) targ_emul=elf32_x86_64 - targ_extra_emuls="elf_x86_64 elf_i386 i386linux elf_l1om elf_k1om" - targ_extra_libpath="elf_i386 elf_x86_64 elf_l1om elf_k1om" + targ_extra_emuls="elf_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om" + targ_extra_libpath="elf_i386 elf_iamcu elf_x86_64 elf_l1om elf_k1om" tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` + tdir_elf_iamcu=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/' -e 's/-linux-gnux32/-linux-gnu/'` ;; x86_64-*-linux-*) targ_emul=elf_x86_64 - targ_extra_emuls="elf32_x86_64 elf_i386 i386linux elf_l1om elf_k1om" + targ_extra_emuls="elf32_x86_64 elf_i386 elf_iamcu i386linux elf_l1om elf_k1om" targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om" tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'` tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;; -i[3-7]86-*-sysv[45]*) targ_emul=elf_i386 ;; +i[3-7]86-*-sysv[45]*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; i[3-7]86-*-solaris2*) targ_emul=elf_i386_sol2 targ_extra_emuls="elf_i386_ldso elf_i386 elf_x86_64_sol2 elf_x86_64 elf_l1om elf_k1om" targ_extra_libpath=$targ_extra_emuls @@ -265,7 +272,8 @@ x86_64-*-solaris2*) targ_extra_emuls="elf_x86_64 elf_i386_sol2 elf_i386_ldso elf_i386 elf_l1om elf_k1om" targ_extra_libpath=$targ_extra_emuls tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;; -i[3-7]86-*-unixware) targ_emul=elf_i386 ;; +i[3-7]86-*-unixware) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; i[3-7]86-*-solaris*) targ_emul=elf_i386_ldso targ_extra_emuls="elf_i386" targ_extra_libpath=$targ_extra_emuls @@ -274,13 +282,20 @@ i[3-7]86-*-netbsdelf* | \ i[3-7]86-*-netbsd*-gnu* | \ i[3-7]86-*-knetbsd*-gnu) targ_emul=elf_i386 - targ_extra_emuls=i386nbsd ;; + targ_extra_emuls="elf_iamcu i386nbsd" ;; i[3-7]86-*-netbsdpe*) targ_emul=i386pe targ_extra_ofiles="deffilep.o pe-dll.o" ;; i[3-7]86-*-netbsd*) targ_emul=i386nbsd targ_extra_emuls=elf_i386 ;; x86_64-*-netbsd*) targ_emul=elf_x86_64 - targ_extra_emuls="elf_i386 i386nbsd elf_l1om elf_k1om" + targ_extra_emuls="elf_i386 elf_iamcu i386nbsd elf_l1om elf_k1om" + tdir_elf_iamcu=`echo ${targ_alias} | \ + sed -e 's/x86_64/i386/'` + case "${tdir_elf_iamcu}" in + *-netbsdelf*) ;; + *) tdir_elf_iamcu=`echo ${tdir_elf_iamcu} | \ + sed -e 's/netbsd/netbsdelf/'`;; + esac tdir_elf_i386=`echo ${targ_alias} | \ sed -e 's/x86_64/i386/'` case "${tdir_elf_i386}" in @@ -289,34 +304,38 @@ 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-*-elf*) targ_emul=elf_i386 ;; +i[3-7]86-*-elf*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; x86_64-*-elf*) targ_emul=elf_x86_64 - targ_extra_emuls="elf_i386 elf32_x86_64 elf_l1om elf_k1om" - targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om" + targ_extra_emuls="elf_i386 elf_iamcu elf32_x86_64 elf_l1om elf_k1om" + targ_extra_libpath="elf_i386 elf_iamcu elf32_x86_64 elf_l1om elf_k1om" tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` ;; i[3-7]86-*-kaos*) targ_emul=elf_i386 ;; i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12]) targ_emul=i386bsd ;; i[3-7]86-*-dragonfly*) targ_emul=elf_i386 - targ_extra_emuls="i386bsd" ;; + targ_extra_emuls="elf_iamcu i386bsd" ;; x86_64-*-dragonfly*) targ_emul=elf_x86_64 - targ_extra_emuls="elf_i386 elf_l1om elf_k1om" ;; + targ_extra_emuls="elf_i386 elf_iamcu elf_l1om elf_k1om" ;; i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu) targ_emul=elf_i386_fbsd - targ_extra_emuls="elf_i386 i386bsd" ;; + targ_extra_emuls="elf_i386 elf_iamcu i386bsd" ;; x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) targ_emul=elf_x86_64_fbsd - targ_extra_emuls="elf_i386_fbsd elf_x86_64 elf_i386 elf_l1om elf_l1om_fbsd elf_k1om elf_k1om_fbsd" + targ_extra_emuls="elf_i386_fbsd elf_x86_64 elf_i386 elf_iamcu elf_l1om elf_l1om_fbsd elf_k1om elf_k1om_fbsd" targ_extra_libpath="elf_i386_fbsd" tdir_elf_i386_fbsd=`echo ${targ_alias} \ | sed -e 's/x86_64/i386/'` + tdir_elf_iamcu=`echo ${targ_alias} \ + | sed -e 's/x86_64/i386/'` tdir_elf_i386=`echo ${targ_alias} \ | sed -e 's/x86_64/i386/'` ;; i[3-7]86-*-sysv*) targ_emul=i386coff ;; i[3-7]86-*-ptx*) targ_emul=i386coff ;; i[3-7]86-*-mach*) targ_emul=i386mach ;; -i[3-7]86-*-gnu*) targ_emul=elf_i386 ;; +i[3-7]86-*-gnu*) targ_emul=elf_i386 + targ_extra_emuls=elf_iamcu ;; i[3-7]86-*-msdos*) targ_emul=i386msdos; targ_extra_emuls=i386aout ;; i[3-7]86-*-moss*) targ_emul=i386moss; targ_extra_emuls=i386msdos ;; i[3-7]86-*-winnt*) targ_emul=i386pe ; @@ -544,7 +563,8 @@ or1k-*-rtems* | or1knd-*-rtems*) targ_emul=elf32or1k ;; pdp11-*-*) targ_emul=pdp11 ;; -pjl*-*-*) targ_emul=pjlelf ; targ_extra_emuls="elf_i386" ;; +pjl*-*-*) targ_emul=pjlelf + targ_extra_emuls="elf_i386 elf_iamcu" ;; pj*-*-*) targ_emul=pjelf ;; powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu) -- cgit v1.1