Skip to content

Commit

Permalink
Add Intel MCU support to bfd
Browse files Browse the repository at this point in the history
bfd/

	* Makefile.am (ALL_MACHINES): Add cpu-iamcu.lo.
	(ALL_MACHINES_CFILES): Likewise.
	* archures.c (bfd_mach_iamcu): New.
	(bfd_mach_i386_iamcu): Likewise.
	(bfd_mach_i386_iamcu_intel_syntax): Likewise.
	(bfd_iamcu_arch): Likewise.
	(bfd_archures_list): Add &bfd_iamcu_arch.
	* config.bfd (targ_selvecs): Add iamcu_elf32_vec to
	i386_elf32_vec.
	(targ_archs): Add bfd_iamcu_arch if needed.
	* configure.ac: Support iamcu_elf32_vec.
	* cpu-iamcu.c: New file.
	* elf32-i386.c (elf32_iamcu_elf_object_p): New function.
	Add support for iamcu_elf32_vec and elf32_iamcu_bed.
	* targets.c (iamcu_elf32_vec): New.
	(_bfd_target_vector): Add iamcu_elf32_vec.
	* Makefile.in: Regenerated.
	* bfd-in2.h: Likewise.
	* configure: Likewise.

binutils/testsuite/

	* binutils-all/objdump.exp (cpus_expected): Append iamcu.
  • Loading branch information
hjl-tools committed May 11, 2015
1 parent 6c14750 commit bf64a95
Show file tree
Hide file tree
Showing 13 changed files with 185 additions and 26 deletions.
22 changes: 22 additions & 0 deletions bfd/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
2015-05-11 H.J. Lu <hongjiu.lu@intel.com>

* Makefile.am (ALL_MACHINES): Add cpu-iamcu.lo.
(ALL_MACHINES_CFILES): Likewise.
* archures.c (bfd_mach_iamcu): New.
(bfd_mach_i386_iamcu): Likewise.
(bfd_mach_i386_iamcu_intel_syntax): Likewise.
(bfd_iamcu_arch): Likewise.
(bfd_archures_list): Add &bfd_iamcu_arch.
* config.bfd (targ_selvecs): Add iamcu_elf32_vec to
i386_elf32_vec.
(targ_archs): Add bfd_iamcu_arch if needed.
* configure.ac: Support iamcu_elf32_vec.
* cpu-iamcu.c: New file.
* elf32-i386.c (elf32_iamcu_elf_object_p): New function.
Add support for iamcu_elf32_vec and elf32_iamcu_bed.
* targets.c (iamcu_elf32_vec): New.
(_bfd_target_vector): Add iamcu_elf32_vec.
* Makefile.in: Regenerated.
* bfd-in2.h: Likewise.
* configure: Likewise.

2015-05-11 H.J. Lu <hongjiu.lu@intel.com>

* elfcode.h (elf_object_p): Replace EM_486 with EM_IAMCU.
Expand Down
2 changes: 2 additions & 0 deletions bfd/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ ALL_MACHINES = \
cpu-hppa.lo \
cpu-i370.lo \
cpu-i386.lo \
cpu-iamcu.lo \
cpu-l1om.lo \
cpu-k1om.lo \
cpu-i860.lo \
Expand Down Expand Up @@ -197,6 +198,7 @@ ALL_MACHINES_CFILES = \
cpu-hppa.c \
cpu-i370.c \
cpu-i386.c \
cpu-iamcu.c \
cpu-l1om.c \
cpu-k1om.c \
cpu-i860.c \
Expand Down
3 changes: 3 additions & 0 deletions bfd/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,7 @@ ALL_MACHINES = \
cpu-hppa.lo \
cpu-i370.lo \
cpu-i386.lo \
cpu-iamcu.lo \
cpu-l1om.lo \
cpu-k1om.lo \
cpu-i860.lo \
Expand Down Expand Up @@ -500,6 +501,7 @@ ALL_MACHINES_CFILES = \
cpu-hppa.c \
cpu-i370.c \
cpu-i386.c \
cpu-iamcu.c \
cpu-l1om.c \
cpu-k1om.c \
cpu-i860.c \
Expand Down Expand Up @@ -1341,6 +1343,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i860.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i960.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ia64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iamcu.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ip2k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iq2000.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-k1om.Plo@am__quote@
Expand Down
6 changes: 6 additions & 0 deletions bfd/archures.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ DESCRIPTION
.#define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
.#define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl)
.#define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl)
. bfd_arch_iamcu, {* Intel MCU *}
.#define bfd_mach_iamcu (1 << 8)
.#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu)
.#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
. bfd_arch_we32k, {* AT&T WE32xxx *}
. bfd_arch_tahoe, {* CCI/Harris Tahoe *}
. bfd_arch_i860, {* Intel 860 *}
Expand Down Expand Up @@ -566,6 +570,7 @@ extern const bfd_arch_info_type bfd_h8500_arch;
extern const bfd_arch_info_type bfd_hppa_arch;
extern const bfd_arch_info_type bfd_i370_arch;
extern const bfd_arch_info_type bfd_i386_arch;
extern const bfd_arch_info_type bfd_iamcu_arch;
extern const bfd_arch_info_type bfd_i860_arch;
extern const bfd_arch_info_type bfd_i960_arch;
extern const bfd_arch_info_type bfd_ia64_arch;
Expand Down Expand Up @@ -657,6 +662,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_hppa_arch,
&bfd_i370_arch,
&bfd_i386_arch,
&bfd_iamcu_arch,
&bfd_i860_arch,
&bfd_i960_arch,
&bfd_ia64_arch,
Expand Down
4 changes: 4 additions & 0 deletions bfd/bfd-in2.h
Original file line number Diff line number Diff line change
Expand Up @@ -2004,6 +2004,10 @@ enum bfd_architecture
#define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
#define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl)
#define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl)
bfd_arch_iamcu, /* Intel MCU */
#define bfd_mach_iamcu (1 << 8)
#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu)
#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax)
bfd_arch_we32k, /* AT&T WE32xxx */
bfd_arch_tahoe, /* CCI/Harris Tahoe */
bfd_arch_i860, /* Intel 860 */
Expand Down
62 changes: 37 additions & 25 deletions bfd/config.bfd
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ case "${targ}" in
i[3-7]86-*-elf* | i[3-7]86-*-sco3.2v5* | \
i[3-7]86-*-dgux* | i[3-7]86-*-sysv5*)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_coff_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-solaris2*)
targ_defvec=i386_elf32_sol2_vec
Expand All @@ -552,16 +552,19 @@ case "${targ}" in
;;
i[3-7]86-*-nto*)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_coff_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-aros*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
;;
i[3-7]86-*-chorus*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
;;
i[3-7]86-*-dicos*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
*-*-msdosdjgpp* | *-*-go32* )
Expand All @@ -574,7 +577,7 @@ case "${targ}" in
;;
i[3-7]86-*-rtems*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_coff_vec i386_aout_vec"
targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_aout_vec"
;;
i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*)
targ_defvec=i386_mach_o_vec
Expand All @@ -592,6 +595,7 @@ case "${targ}" in
;;
i[3-7]86-*-dragonfly*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \
Expand All @@ -602,7 +606,7 @@ case "${targ}" in
;;
i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
targ_defvec=i386_elf32_fbsd_vec
targ_selvecs="i386_elf32_vec i386_pei_vec i386_coff_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec"
targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pei_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
# FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
case "${targ}" in
Expand All @@ -612,35 +616,35 @@ case "${targ}" in
;;
i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_aout_nbsd_vec
targ_selvecs="i386_aout_nbsd_vec iamcu_elf32_vec"
targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-netbsdpe*)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec"
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
;;
i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \
i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3])
targ_defvec=i386_aout_nbsd_vec
targ_selvecs="i386_elf32_vec i386_aout_bsd_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_bsd_vec"
targ_underscore=yes
;;
i[3-7]86-*-openbsd*)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_aout_nbsd_vec
targ_selvecs="iamcu_elf32_vec i386_aout_nbsd_vec"
;;
i[3-7]86-*-netware*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_nlm32_vec i386_coff_vec i386_aout_vec"
targ_selvecs="iamcu_elf32_vec i386_nlm32_vec i386_coff_vec i386_aout_vec"
;;
i[3-7]86-*-linux*aout*)
targ_defvec=i386_aout_linux_vec
targ_selvecs=i386_elf32_vec
targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
targ_underscore=yes
;;
i[3-7]86-*-linux-*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_aout_linux_vec i386_pei_vec"
targ_selvecs="iamcu_elf32_vec i386_aout_linux_vec i386_pei_vec"
targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
;;
i[3-7]86-*-nacl*)
Expand All @@ -662,32 +666,32 @@ case "${targ}" in
;;
x86_64-*-dicos*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec l1om_elf64_vec k1om_elf64_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-elf*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-dragonfly*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec l1om_elf64_vec k1om_elf64_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
targ_defvec=x86_64_elf64_fbsd_vec
targ_selvecs="i386_elf32_fbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
want64=true
;;
x86_64-*-netbsd* | x86_64-*-openbsd*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec i386_aout_nbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_nbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-linux-*)
targ_defvec=x86_64_elf64_vec
targ_selvecs="i386_elf32_vec x86_64_elf32_vec i386_aout_linux_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_aout_linux_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
x86_64-*-nacl*)
Expand All @@ -698,7 +702,7 @@ case "${targ}" in
;;
x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
targ_defvec=x86_64_pe_vec
targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec"
targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
want64=true
targ_underscore=no
;;
Expand All @@ -709,10 +713,11 @@ case "${targ}" in
#endif
i[3-7]86-*-lynxos*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_coff_lynx_vec i386_aout_lynx_vec"
targ_selvecs="iamcu_elf32_vec i386_coff_lynx_vec i386_aout_lynx_vec"
;;
i[3-7]86-*-gnu*)
targ_defvec=i386_elf32_vec
targ_selvecs=iamcu_elf32_vec
;;
i[3-7]86-*-mach* | i[3-7]86-*-osf1mk*)
targ_defvec=i386_aout_mach3_vec
Expand All @@ -728,15 +733,15 @@ case "${targ}" in
;;
i[3-7]86-*-moss*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_msdos_vec i386_aout_vec"
targ_selvecs="iamcu_elf32_vec i386_msdos_vec i386_aout_vec"
;;
i[3-7]86-*-beospe*)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec"
;;
i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
targ_defvec=i386_elf32_vec
targ_selvecs="i386_pe_vec i386_pei_vec"
targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec"
;;
i[3-7]86-*-interix*)
targ_defvec=i386_pei_vec
Expand All @@ -746,11 +751,11 @@ case "${targ}" in
;;
i[3-7]86-*-rdos*)
targ_defvec=i386_elf32_vec
targ_selvecs=i386_coff_vec
targ_selvecs="iamcu_elf32_vec i386_coff_vec"
;;
i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
targ_defvec=i386_pe_vec
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec"
targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
targ_underscore=yes
;;
i[3-7]86-none-*)
Expand All @@ -765,7 +770,7 @@ case "${targ}" in
;;
i[3-7]86-*-chaos)
targ_defvec=i386_elf32_vec
targ_selfvecs=i386chaos_vec
targ_selfvecs="iamcu_elf32_vec i386chaos_vec"
;;

i860-*-mach3* | i860-*-osf1* | i860-*-coff*)
Expand Down Expand Up @@ -1207,7 +1212,7 @@ case "${targ}" in

pjl-*-*)
targ_defvec=pj_elf32_le_vec
targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec"
targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec iamcu_elf32_vec"
;;

powerpc-*-aix5.[01] | rs6000-*-aix5.[01])
Expand Down Expand Up @@ -1766,6 +1771,13 @@ case "${targ_defvec} ${targ_selvecs}" in
;;
esac

# If we support Intel MCU target, then add support for bfd_iamcu_arch.
case "${targ_defvec} ${targ_selvecs}" in
*iamcu_elf32*)
targ_archs="$targ_archs bfd_iamcu_arch"
;;
esac

# If we support Intel L1OM target, then add support for bfd_l1om_arch.
case "${targ_defvec} ${targ_selvecs}" in
*l1om_elf64*)
Expand Down
1 change: 1 addition & 0 deletions bfd/configure
Original file line number Diff line number Diff line change
Expand Up @@ -15323,6 +15323,7 @@ do
i386_nlm32_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
i386_pe_vec) tb="$tb pe-i386.lo peigen.lo $coff" ;;
i386_pei_vec) tb="$tb pei-i386.lo peigen.lo $coff" ;;
iamcu_elf32_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
i860_coff_vec) tb="$tb coff-i860.lo $coff" ;;
i860_elf32_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
i860_elf32_le_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
Expand Down
1 change: 1 addition & 0 deletions bfd/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -789,6 +789,7 @@ do
i386_nlm32_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
i386_pe_vec) tb="$tb pe-i386.lo peigen.lo $coff" ;;
i386_pei_vec) tb="$tb pei-i386.lo peigen.lo $coff" ;;
iamcu_elf32_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
i860_coff_vec) tb="$tb coff-i860.lo $coff" ;;
i860_elf32_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
i860_elf32_le_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
Expand Down
Loading

0 comments on commit bf64a95

Please sign in to comment.