Add EM_IAMCU support to gold

elfcpp/

	PR gold/19118
	* elfcpp.h (EM): Add EM_IAMCU.

gold/

	PR gold/19118
	* i386.cc (Target_iamcu): New class.
	(Target_selector_iamcu): Likewise.
	(Target_iamcu::iamcu_info): New variable.
	(target_selector_iamcu): Likewise.
This commit is contained in:
H.J. Lu 2015-10-13 09:02:23 -07:00
parent 8f33e7daaf
commit 01f573ad8a
4 changed files with 70 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2015-10-13 H.J. Lu <hongjiu.lu@intel.com>
PR gold/19118
* elfcpp.h (EM): Add EM_IAMCU.
2015-10-02 H.J. Lu <hongjiu.lu@intel.com>
PR gold/19060

View File

@ -173,7 +173,7 @@ enum EM
EM_386 = 3,
EM_68K = 4,
EM_88K = 5,
// 6 used to be EM_486
EM_IAMCU = 6,
EM_860 = 7,
EM_MIPS = 8,
EM_S370 = 9,

View File

@ -1,3 +1,11 @@
2015-10-13 H.J. Lu <hongjiu.lu@intel.com>
PR gold/19118
* i386.cc (Target_iamcu): New class.
(Target_selector_iamcu): Likewise.
(Target_iamcu::iamcu_info): New variable.
(target_selector_iamcu): Likewise.
2015-10-07 Andreas Schwab <schwab@suse.de>
* aarch64.cc (aarch64_info): Set abi_pagesize to 64K.

View File

@ -4252,4 +4252,60 @@ class Target_selector_i386_nacl
Target_selector_i386_nacl target_selector_i386;
// IAMCU variant. It uses EM_IAMCU, not EM_386.
class Target_iamcu : public Target_i386
{
public:
Target_iamcu()
: Target_i386(&iamcu_info)
{ }
private:
// Information about this specific target which we pass to the
// general Target structure.
static const Target::Target_info iamcu_info;
};
const Target::Target_info Target_iamcu::iamcu_info =
{
32, // size
false, // is_big_endian
elfcpp::EM_IAMCU, // machine_code
false, // has_make_symbol
false, // has_resolve
true, // has_code_fill
true, // is_default_stack_executable
true, // can_icf_inline_merge_sections
'\0', // wrap_char
"/usr/lib/libc.so.1", // dynamic_linker
0x08048000, // default_text_segment_address
0x1000, // abi_pagesize (overridable by -z max-page-size)
0x1000, // common_pagesize (overridable by -z common-page-size)
false, // isolate_execinstr
0, // rosegment_gap
elfcpp::SHN_UNDEF, // small_common_shndx
elfcpp::SHN_UNDEF, // large_common_shndx
0, // small_common_section_flags
0, // large_common_section_flags
NULL, // attributes_section
NULL, // attributes_vendor
"_start" // entry_symbol_name
};
class Target_selector_iamcu : public Target_selector
{
public:
Target_selector_iamcu()
: Target_selector(elfcpp::EM_IAMCU, 32, false, "elf32-iamcu",
"elf_iamcu")
{ }
Target*
do_instantiate_target()
{ return new Target_iamcu(); }
};
Target_selector_iamcu target_selector_iamcu;
} // End anonymous namespace.