diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-10-13 09:02:23 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-10-13 09:02:41 -0700 |
commit | 01f573ad8aa539f972e2fef8a10ef290e042e24c (patch) | |
tree | 26bbca594b8ac6ea3ff383282880f927d6264584 /gold | |
parent | 8f33e7daaf80d23fc0f0551a14f9cffb95a85141 (diff) | |
download | gdb-01f573ad8aa539f972e2fef8a10ef290e042e24c.zip gdb-01f573ad8aa539f972e2fef8a10ef290e042e24c.tar.gz gdb-01f573ad8aa539f972e2fef8a10ef290e042e24c.tar.bz2 |
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.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 8 | ||||
-rw-r--r-- | gold/i386.cc | 56 |
2 files changed, 64 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index e13392a..ff11c88 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -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. diff --git a/gold/i386.cc b/gold/i386.cc index 086314e..202f518 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -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. |