summaryrefslogtreecommitdiff
path: root/bfd/elfxx-mips.c
Commit message (Collapse)AuthorAgeFilesLines
* 2013-10-14 Chao-ying Fu <Chao-ying.Fu@imgtec.com>Chao-ying Fu2013-10-141-0/+50
| | | | | | | * elfxx-mips.c (mips_elf_obj_tdata): Add abi_msa_bfd. (mips_elf_merge_obj_attributes): Set abi_msa_bfd to the first object file that has a Tag_GNU_MIPS_ABI_MSA attribute. Merge Tag_GNU_MIPS_ABI_MSA attributes.
* bfd/Richard Sandiford2013-10-131-75/+89
| | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_use_local_got_p): New function. (mips_elf_count_got_symbols, mips_elf_calculate_relocation): Use it. (_bfd_mips_elf_check_relocs): Set pointer_equality_needed for GOT and absolute references. ld/testsuite/ * ld-mips-elf/pic-and-nonpic-6-n32.ad, ld-mips-elf/pic-and-nonpic-6-n32.dd, ld-mips-elf/pic-and-nonpic-6-n32.gd, ld-mips-elf/pic-and-nonpic-6-n32.nd, ld-mips-elf/pic-and-nonpic-6-n32.rd, ld-mips-elf/pic-and-nonpic-6-n64.ad, ld-mips-elf/pic-and-nonpic-6-n64.dd, ld-mips-elf/pic-and-nonpic-6-n64.gd, ld-mips-elf/pic-and-nonpic-6-n64.nd, ld-mips-elf/pic-and-nonpic-6-n64.rd, ld-mips-elf/pic-and-nonpic-6-o32.ad, ld-mips-elf/pic-and-nonpic-6-o32.dd, ld-mips-elf/pic-and-nonpic-6-o32.gd, ld-mips-elf/pic-and-nonpic-6-o32.nd, ld-mips-elf/pic-and-nonpic-6-o32.rd: Fix symbol value of extf4. No longer expect extf3, extf4 and extd2 to be in the global GOT.
* bfd/Richard Sandiford2013-09-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2013-09-24 Gregory Fong <gregory.0xf0@gmail.com> * elfxx-mips.c (mips_elf_create_got_section): Hide _GLOBAL_OFFSET_TABLE_. ld/testsuite/ 2013-09-24 Gregory Fong <gregory.0xf0@gmail.com> * ld-mips-elf/eh-frame5.d, ld-mips-elf/jalx-2.dd, ld-mips-elf/mips-elf.exp, ld-mips-elf/mips16-pic-2.ad, ld-mips-elf/mips16-pic-2.nd, ld-mips-elf/pic-and-nonpic-3a.dd, ld-mips-elf/pic-and-nonpic-3b.ad, ld-mips-elf/pic-and-nonpic-3b.dd, ld-mips-elf/pic-and-nonpic-3b.nd, ld-mips-elf/pic-and-nonpic-4b.ad, ld-mips-elf/pic-and-nonpic-4b.nd, ld-mips-elf/pic-and-nonpic-4b.rd, ld-mips-elf/pic-and-nonpic-5b.ad, ld-mips-elf/pic-and-nonpic-5b.nd, ld-mips-elf/pic-and-nonpic-6-n32.ad, ld-mips-elf/pic-and-nonpic-6-n32.dd, ld-mips-elf/pic-and-nonpic-6-n32.nd, ld-mips-elf/pic-and-nonpic-6-n64.ad, ld-mips-elf/pic-and-nonpic-6-n64.dd, ld-mips-elf/pic-and-nonpic-6-n64.nd, ld-mips-elf/pic-and-nonpic-6-o32.ad, ld-mips-elf/pic-and-nonpic-6-o32.dd, ld-mips-elf/pic-and-nonpic-6-o32.nd, ld-mips-elf/rel32-n32.d, ld-mips-elf/rel32-o32.d, ld-mips-elf/rel64.d, ld-mips-elf/tls-multi-got-1.got, ld-mips-elf/tls-multi-got-1.r, ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tlsdyn-o32.d, ld-mips-elf/tlsdyn-o32.got, ld-mips-elf/tlslib-o32-ver.got, ld-mips-elf/tlslib-o32.got: Update for removal of _GLOBAL_OFFSET_TABLE_ from .dynsym.
* 2013-09-17 Doug Gilmore <Doug.Gilmore@imgtec.com>Steve Ellcey2013-09-171-0/+3
| | | | | * elfxx-mips.c (_bfd_mips_elf_print_private_bfd_data): Handle EF_MIPS_FP64.
* include/elf/Maciej W. Rozycki2013-07-151-23/+23
| | | | | | | | | | | | | | | | | | | * mips.h (Tag_GNU_MIPS_ABI_FP): Remove comment. (Val_GNU_MIPS_ABI_FP_ANY, Val_GNU_MIPS_ABI_FP_DOUBLE, Val_GNU_MIPS_ABI_FP_SINGLE, Val_GNU_MIPS_ABI_FP_SOFT, Val_GNU_MIPS_ABI_FP_64): New enum. bfd/ * elfxx-mips.c (mips_elf_merge_obj_attributes): Replace hardcoded magic numbers with enum values. binutils/ * readelf.c (display_mips_gnu_attribute): Replace hardcoded magic numbers with enum values. gdb/ * mips-tdep.c (mips_gdbarch_init): Replace hardcoded magic numbers with enum values.
* include/elf/Maciej W. Rozycki2013-07-121-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * mips.h (EF_MIPS_NAN2008): New macro. bfd/ * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Handle EF_MIPS_NAN2008. (_bfd_mips_elf_print_private_bfd_data): Likewise. binutils/ * readelf.c (get_machine_flags): Handle EF_MIPS_NAN2008. gas/ * config/tc-mips.c (mips_flag_nan2008): New variable. (options): Add OPTION_NAN enum value. (md_longopts): Handle it. (md_parse_option): Likewise. (s_nan): New function. (mips_elf_final_processing): Handle EF_MIPS_NAN2008. (md_show_usage): Add -mnan. * doc/as.texinfo (Overview): Add -mnan. * doc/c-mips.texi (MIPS Opts): Document -mnan. (MIPS NaN Encodings): New node. Document .nan directive. (MIPS-Dependent): List the new node. gas/testsuite/ * gas/mips/nan-2008-1.d: New test. * gas/mips/nan-2008-2.d: New test. * gas/mips/nan-2008-3.d: New test. * gas/mips/nan-2008-4.d: New test. * gas/mips/nan-legacy-1.d: New test. * gas/mips/nan-legacy-2.d: New test. * gas/mips/nan-legacy-3.d: New test. * gas/mips/nan-legacy-4.d: New test. * gas/mips/nan-legacy-5.d: New test. * gas/mips/nan-error-1.l: New list test. * gas/mips/nan-error-2.l: New list test. * gas/mips/nan-2008-override.s: New test source. * gas/mips/nan-2008.s: New test source. * gas/mips/nan-legacy-override.s: New test source. * gas/mips/nan-legacy.s: New test source. * gas/mips/nan-error-1.s: New test source. * gas/mips/nan-error-2.s: New test source. * gas/mips/mips.exp: Run the new tests. ld/testsuite/ * ld-mips-elf/nan-2008.d: New test. * ld-mips-elf/nan-legacy.d: New test. * ld-mips-elf/nan-mixed-1.d: New test. * ld-mips-elf/nan-mixed-2.d: New test. * ld-mips-elf/nan-2008.s: New test source. * ld-mips-elf/nan-legacy.s: New test source.
* bfd/Maciej W. Rozycki2013-06-251-40/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.h (_bfd_mips_elf_insn32): New prototype. * elfxx-mips.c (mips_elf_link_hash_table): Add insn32 member. (STUB_MOVE32_MICROMIPS, STUB_JALR32_MICROMIPS): New macros. (MICROMIPS_INSN32_FUNCTION_STUB_NORMAL_SIZE): Likewise. (MICROMIPS_INSN32_FUNCTION_STUB_BIG_SIZE): Likewise. (micromips_insn32_o32_exec_plt0_entry): New variable. (micromips_insn32_o32_exec_plt_entry): Likewise. (_bfd_mips_elf_adjust_dynamic_symbol): Handle insn32 mode. (mips_elf_estimate_stub_size): Likewise. (_bfd_mips_elf_size_dynamic_sections): Likewise. (_bfd_mips_elf_finish_dynamic_symbol): Likewise. (mips_finish_exec_plt): Likewise. (_bfd_mips_elf_relax_section): Likewise. (_bfd_mips_elf_insn32): New function. (_bfd_mips_elf_get_synthetic_symtab): Handle insn32 PLT. gas/ * config/tc-mips.c (mips_set_options): Add insn32 member. (mips_opts): Initialize it. (NOP_INSN, NOP_INSN_SIZE): Handle insn32 mode. (options): Add OPTION_INSN32 and OPTION_NO_INSN32 enum values. (md_longopts): Add "minsn32" and "mno-insn32" options. (is_size_valid): Handle insn32 mode. (md_assemble): Pass instruction string down to macro. (brk_fmt): Add second dimension and insn32 mode initializers. (mfhl_fmt): Likewise. (BRK_FMT, MFHL_FMT): Handle insn32 mode. (macro_build) <'c'>: Handle microMIPS 32-bit BREAK encoding. (macro_build_jalr, move_register): Handle insn32 mode. (macro_build_branch_rs): Likewise. (macro): Handle insn32 mode. <M_JRADDIUSP>, <M_JRC>, <M_MOVEP>: New cases. (mips_ip): Handle insn32 mode. (md_parse_option): Handle OPTION_INSN32 and OPTION_NO_INSN32. (s_mipsset): Handle "insn32" and "noinsn32" pseudo-ops. (mips_handle_align): Handle insn32 mode. (md_show_usage): Add -minsn32 and -mno-insn32. * doc/as.texinfo (Target MIPS options): Add -minsn32 and -mno-insn32 options. (-minsn32, -mno-insn32): New options. * doc/c-mips.texi (MIPS Opts): Add -minsn32 and -mno-insn32 options. (MIPS assembly options): New node. Document .set insn32 and .set noinsn32. (MIPS-Dependent): List the new node. gas/testsuite/ * gas/mips/micromips-insn32.d: New test. * gas/mips/micromips-noinsn32.d: Likewise. * gas/mips/micromips.l: Rename to... * gas/mips/micromips-warn.l: ... this. * gas/mips/micromips.d: Update accordingly. * gas/mips/micromips-trap.d: Likewise. * gas/mips/micromips.l: New list test. * gas/mips/micromips.s: Add conditionals. * gas/mips/mips.exp: Run the new tests. include/opcode/ * mips.h: Add M_JRADDIUSP, M_JRC and M_MOVEP anonymous enum values. ld/ * emultempl/mipself.em (insn32): New variable. (mips_create_output_section_statements): Handle insn32 mode. (PARSE_AND_LIST_PROLOGUE): New macro. (PARSE_AND_LIST_LONGOPTS): Likewise. (PARSE_AND_LIST_OPTIONS): Likewise. * gen-doc.texi: Set MIPS. * ld.texinfo: Likewise. (Options specific to MIPS targets): New section. (ld and MIPS family): New node. (Top, Machine Dependent): List the new node. opcodes/ * micromips-opc.c (micromips_opcodes): Add "jraddiusp", "jrc" and "movep" macros.
* bfd/Maciej W. Rozycki2013-06-241-182/+940
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.h (_bfd_mips_elf_get_synthetic_symtab): New prototype. * elf32-mips.c (elf_backend_plt_sym_val): Remove macro. (bfd_elf32_get_synthetic_symtab): New macro. * elfxx-mips.c (plt_entry): New structure. (mips_elf_link_hash_entry): Add use_plt_entry member. (mips_elf_link_hash_table): Rename plt_entry_size member to plt_mips_entry_size. Add plt_comp_entry_size, plt_mips_offset, plt_comp_offset, plt_got_index entries and plt_header_is_comp members. (STUB_LW_MICROMIPS, STUB_MOVE_MICROMIPS): New macros. (STUB_LUI_MICROMIPS, STUB_JALR_MICROMIPS): Likewise. (STUB_ORI_MICROMIPS, STUB_LI16U_MICROMIPS): Likewise. (STUB_LI16S_MICROMIPS): Likewise. (MICROMIPS_FUNCTION_STUB_NORMAL_SIZE): Likewise. (MICROMIPS_FUNCTION_STUB_BIG_SIZE): Likewise. (micromips_o32_exec_plt0_entry): New variable. (mips16_o32_exec_plt_entry): Likewise. (micromips_o32_exec_plt_entry): Likewise. (mips_elf_link_hash_newfunc): Initialize use_plt_entry. (mips_elf_output_extsym): Update to use gotplt_union's plist member rather than offset. (mips_elf_gotplt_index): Likewise. Remove the VxWorks restriction. Use MIPS_ELF_GOT_SIZE to calculate GOT address. (mips_elf_count_got_symbols): Update to use gotplt_union's plist member rather than offset. (mips_elf_calculate_relocation): Handle MIPS16/microMIPS PLT entries. (_bfd_mips_elf_create_dynamic_sections): Don't set PLT sizes here. (mips_elf_make_plt_record): New function. (_bfd_mips_elf_check_relocs): Update comment. Record occurences of JAL relocations that might need a PLT entry. (_bfd_mips_elf_adjust_dynamic_symbol): Update to use gotplt_union's plist member rather than offset. Set individual PLT entry sizes here. Handle MIPS16/microMIPS PLT entries. Don't set the symbol's value in the symbol table for PLT references here. Don't set the PLT or PLT GOT section sizes here. (mips_elf_estimate_stub_size): Handle microMIPS stubs. (mips_elf_allocate_lazy_stub): Likewise. (mips_elf_lay_out_lazy_stubs): Likewise. Define a _MIPS_STUBS_ magic symbol. (mips_elf_set_plt_sym_value): New function. (_bfd_mips_elf_size_dynamic_sections): Set PLT header size and PLT and PLT GOT section sizes here. Set the symbol values in the symbol table for PLT references here. Handle microMIPS annotation of the _PROCEDURE_LINKAGE_TABLE_ magic symbol. (_bfd_mips_elf_finish_dynamic_symbol): Update to use gotplt_union's plist member rather than offset. Handle MIPS16/microMIPS PLT entries. Handle microMIPS stubs. (_bfd_mips_vxworks_finish_dynamic_symbol): Update to use gotplt_union's plist member rather than offset. Use MIPS_ELF_GOT_SIZE to calculate GOT address. (mips_finish_exec_plt): Handle microMIPS PLT. Return status. (_bfd_mips_elf_finish_dynamic_sections): Handle result from mips_finish_exec_plt. (_bfd_mips_elf_link_hash_table_create): Update to use gotplt_union's plist member rather than offset. (_bfd_mips_elf_get_synthetic_symtab): New function. include/elf/ * mips.h (ELF_ST_IS_MIPS_PLT): Respect STO_MIPS16 setting. (ELF_ST_SET_MIPS_PLT): Likewise. gdb/ * mips-tdep.c (mips_elf_make_msymbol_special): Handle MIPS16 and microMIPS synthetic symbols. ld/ * emulparams/elf32btsmip.sh: Arrange for .got.plt to be placed as close to .plt as possible. * scripttempl/elf.sc: Handle $INITIAL_READWRITE_SECTIONS and $PLT_NEXT_DATA variables. ld/testsuite/ * ld-mips-elf/jalx-2.dd: Update for microMIPS PLT support. * ld-mips-elf/pic-and-nonpic-3a.dd: Update for the _MIPS_STUBS_ magic symbol. * ld-mips-elf/pic-and-nonpic-3b.dd: Likewise. * ld-mips-elf/pic-and-nonpic-6-n32.dd: Likewise. * ld-mips-elf/pic-and-nonpic-6-n64.dd: Likewise. * ld-mips-elf/pic-and-nonpic-6-o32.dd: Likewise. * ld-mips-elf/stub-dynsym-1-10000.d: Likewise. * ld-mips-elf/stub-dynsym-1-2fe80.d: Likewise. * ld-mips-elf/stub-dynsym-1-7fff.d: Likewise. * ld-mips-elf/stub-dynsym-1-8000.d: Likewise. * ld-mips-elf/stub-dynsym-1-fff0.d: Likewise. * ld-mips-elf/tlslib-o32.d: Likewise. opcodes/ * mips-dis.c (is_mips16_plt_tail): New function. (print_insn_mips16): Handle MIPS16 PLT entry's GOT slot address word. (is_compressed_mode_p): Handle MIPS16/microMIPS PLT entries.
* PR binutils/15462Alan Modra2013-05-221-1/+1
| | | | * elfxx-mips.c (_bfd_mips_elf_relocate_section): Warning fix.
* * coffcode.h: Added a cast to void when a bfd_set_section_*()Nick Clifton2013-04-171-10/+14
| | | | | | | | | | | | | | macro's return value is ignored. * elf32-hppa.c: Likewise. * elf32-tic6x.c: Likewise. * mach-o.c: Likewise. * mmo.c: Likewise. * opncls.c: Likewise. * peicode.h: Likewise. * elf32-m32r.c: Check return value of bfd_set_section_*(). * elfnn-ia64.c: Likewise. * elfxx-mips.c: Likewise. * vms-alpha.c: Likewise.
* PR ld/15323Alan Modra2013-03-301-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bfd/ * elf-m10300.c (mn10300_elf_check_relocs): Set non_ir_ref for global symbols referenced by relocs. * elf32-arm.c (elf32_arm_check_relocs): Likewise. * elf32-bfin.c (bfin_check_relocs): Likewise. * elf32-cr16.c (cr16_elf_check_relocs): Likewise. * elf32-cris.c (cris_elf_check_relocs): Likewise. * elf32-d10v.c (elf32_d10v_check_relocs): Likewise. * elf32-dlx.c (elf32_dlx_check_relocs): Likewise. * elf32-fr30.c (fr30_elf_check_relocs): Likewise. * elf32-frv.c (elf32_frv_check_relocs): Likewise. * elf32-hppa.c (elf32_hppa_check_relocs): Likewise. * elf32-i370.c (i370_elf_check_relocs): Likewise. * elf32-iq2000.c (iq2000_elf_check_relocs): Likewise. * elf32-lm32.c (lm32_elf_check_relocs): Likewise. * elf32-m32c.c (m32c_elf_check_relocs): Likewise. * elf32-m32r.c (m32r_elf_check_relocs): Likewise. * elf32-m68hc1x.c (elf32_m68hc11_check_relocs): Likewise. * elf32-m68k.c (elf_m68k_check_relocs): Likewise. * elf32-mcore.c (mcore_elf_check_relocs): Likewise. * elf32-metag.c (elf_metag_check_relocs): Likewise. * elf32-microblaze.c (microblaze_elf_check_relocs): Likewise. * elf32-moxie.c (moxie_elf_check_relocs): Likewise. * elf32-msp430.c (elf32_msp430_check_relocs): Likewise. * elf32-mt.c (mt_elf_check_relocs): Likewise. * elf32-nios2.c (nios2_elf32_check_relocs): Likewise. * elf32-openrisc.c (openrisc_elf_check_relocs): Likewise. * elf32-ppc.c (ppc_elf_check_relocs): Likewise. * elf32-rl78.c (rl78_elf_check_relocs): Likewise. * elf32-s390.c (elf_s390_check_relocs): Likewise. * elf32-score.c (s3_bfd_score_elf_check_relocs): Likewise. * elf32-score7.c (s7_bfd_score_elf_check_relocs): Likewise. * elf32-sh.c (sh_elf_check_relocs): Likewise. * elf32-tic6x.c (elf32_tic6x_check_relocs): Likewise. * elf32-tilepro.c (tilepro_elf_check_relocs): Likewise. * elf32-v850.c (v850_elf_check_relocs): Likewise. * elf32-vax.c (elf_vax_check_relocs): Likewise. * elf32-xstormy16.c (xstormy16_elf_check_relocs): Likewise. * elf32-xtensa.c (elf_xtensa_check_relocs): Likewise. * elf64-aarch64.c (elf64_aarch64_check_relocs): Likewise. * elf64-alpha.c (elf64_alpha_check_relocs): Likewise. * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. * elf64-ia64-vms.c (elf64_ia64_check_relocs): Likewise. * elf64-mmix.c (mmix_elf_check_relocs): Likewise. * elf64-ppc.c (ppc64_elf_check_relocs): Likewise. * elf64-s390.c (elf_s390_check_relocs): Likewise. * elf64-sh64.c (sh_elf64_check_relocs): Likewise. * elfnn-ia64.c (elfNN_ia64_check_relocs): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise. * elfxx-tilegx.c (tilegx_elf_check_relocs): Likewise. * elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise. Don't test indirect/warning links for NULL. ld/testsuite/ * ld-plugin/lto.exp (pr15323a.c): Compile without -flto rather than using -r to effectively strip out lto info.
* * elfxx-mips.c (mips_elf_allocate_lazy_stub): Correct data type.Maciej W. Rozycki2013-03-081-1/+1
|
* bfd/Alan Modra2013-02-211-7/+7
| | | | | | | | | | | | | | | | | | | * elf-bfd.h (struct elf_obj_tdata): Rename segment_map to seg_map. Delete num_locals and num_globals. (elf_num_locals, elf_num_globals): Don't define. (elf_seg_map, elf_next_file_pos, elf_eh_frame_hdr, elf_linker, elf_stack_flags, elf_strtab_sec, elf_shstrtab_sec): Define. * bfd.c, * elf-eh-frame.c, * elf-nacl.c, * elf-vxworks.c, * elf.c, * elf32-arm.c, * elf32-lm32.c, * elf32-ppc.c, * elf32-rx.c, * elf32-spu.c, * elf64-hppa.c, * elfcode.h, * elflink.c, * elfnn-ia64.c, * elfxx-mips.c: Use newly defined elf_obj_tdata accessor macros. * elf.c (elf_map_symbols): Add pnum_locals param. Return number of locals syms via new param. (swap_out_syms): Adjust to suit elf_map_symbols change. ld/ * emultempl/elf-generic.em: Use newly defined elf_obj_tdata accessor macros.
* * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Also clearMaciej W. Rozycki2013-02-191-2/+7
| | | | STO_MICROMIPS annotation.
* * elfxx-mips.c (MICROMIPS_P): New macro.Maciej W. Rozycki2013-02-181-1/+5
| | | | (_bfd_mips_elf_symbol_processing): Use it.
* * elfxx-mips.c (_bfd_mips_elf_create_dynamic_sections): ClarifyMaciej W. Rozycki2013-02-181-1/+1
| | | | comment on _PROCEDURE_LINKAGE_TABLE_ creation.
* * elf-bfd.h (struct elf_obj_tdata): Move find_line_info, local_stubs,Alan Modra2013-02-181-24/+40
| | | | | | | | | local_call_stubs, elf_data_symbol, elf_text_symbol, elf_data_section, and elf_text_section to.. * elfxx-mips.c (struct mips_elf_obj_tdata): ..here. Update all refs. * elf64-alpha.c (struct mips_elf_find_line): Rename to.. (struct alpha_elf_find_line): ..this. (struct alpha_elf_obj_tdata): Add find_line_info, update refs.
* bfd/Richard Sandiford2013-02-131-120/+296
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_page_ref): New structure. (mips_got_page_entry): Use a section rather than a (bfd, symndx) pair to represent the anchor point. (mips_got_info): Add a got_page_refs field. (mips_elf_link_hash_table): Add a sym_cache field. (mips_got_page_ref_hash, mips_got_page_ref_eq): New functions. (mips_got_page_entry_hash, mips_got_page_entry_eq): Update for new anchor representation. (mips_elf_create_got_info): Create got_page_refs rather than got_page_entries. (mips_elf_record_got_page_ref): New function. (mips_elf_pages_for_range): Move further down file. (mips_elf_record_got_page_entry): Likewise. Take a got as argument. Use a section rather than a (bfd, symndx) pair to represent the anchor point. (mips_elf_resolve_got_page_ref): New function. (mips_elf_resolve_final_got_entries): Use it to populate got_page_entries. (_bfd_mips_elf_check_relocs): Call mips_elf_record_got_page_ref rather than mips_elf_record_got_page_entry. Only nullify h afterwards. (mips_elf_lay_out_got): Call mips_elf_resolve_final_got_entries earlier. ld/testsuite/ * ld-mips-elf/mips16-pic-2.dd, ld-mips-elf/mips16-pic-2.gd: Remove 3 unused local GOT entries. * ld-mips-elf/got-page-4a.s, ld-mips-elf/got-page-4b.s, ld-mips-elf/got-page-4a.d, ld-mips-elf/got-page-4a.got, ld-mips-elf/got-page-4b.d, ld-mips-elf/got-page-4b.got, ld-mips-elf/got-page-5.s, ld-mips-elf/got-page-5.d, ld-mips-elf/got-page-5.got, ld-mips-elf/got-page-6.s, ld-mips-elf/got-page-6.d, ld-mips-elf/got-page-6.got, ld-mips-elf/got-page-7a.s, ld-mips-elf/got-page-7b.s, ld-mips-elf/got-page-7c.s, ld-mips-elf/got-page-7d.s, ld-mips-elf/got-page-7e.s, ld-mips-elf/got-page-7.d, ld-mips-elf/got-page-7.got: New tests. * ld-mips-elf/mips-elf.exp: Run them.
* bfd/Richard Sandiford2013-02-121-14/+5
| | | | | * elfxx-mips.c (mips_elf_lay_out_got): Count VxWorks GOT relocs in g->relocs.
* bfd/Richard Sandiford2013-02-111-59/+44
| | | | | | | | | | | * elfxx-mips.c (mips_elf_count_got_entries): Delete. (mips_elf_check_recreate_got, mips_elf_recreate_got): Take a mips_elf_traverse_got_arg. Count GOT entries. (mips_elf_resolve_final_got_entries): Take the bfd_link_info as argument. Update after above changes. (mips_elf_merge_got, mips_elf_lay_out_got): Don't call mips_elf_count_got_entries. Update the calls to mips_elf_resolve_final_got_entries.
* bfd/Richard Sandiford2013-02-111-55/+39
| | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_tls_type): New enum. (mips_got_entry): Add tls_initialized. (mips_elf_got_entry_hash, mips_elf_got_entry_eq, mips_tls_got_relocs) (mips_elf_count_got_entry, mips_elf_initialize_tls_index): Remove GOT_TLS_TYPE masks. (mips_elf_reloc_tls_type, mips_tls_got_entries) (mips_elf_record_global_got_symbol, mips_elf_initialize_tls_index) (_bfd_mips_elf_finish_dynamic_symbol): Use GOT_TLS_NONE rather than GOT_NORMAL. (mips_elf_initialize_tls_slots): Replace got_offset and tls_type_p arguments with a GOT entry. Remove GOT_TLS_TYPE masks. Use tls_initialized rather than GOT_TLS_DONE. (mips_tls_got_index): Delete. (mips_elf_local_got_index, mips_elf_global_got_index): Use mips_elf_initialize_tls_slots rather than mips_tls_got_index. (mips_elf_record_got_entry): Initialize tls_initialized.
* bfd/Richard Sandiford2013-02-111-229/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Remove tls_ldm_offset. (mips_elf_link_hash_entry): Remove tls_ie_type, tls_gd_type, tls_ie_got_offset and tls_gd_got_offset. (mips_elf_link_hash_newfunc): Remove initialization. (mips_elf_create_got_info): Likewise. (mips_elf_count_local_got_entries, mips_elf_count_global_tls_entries) (mips_tls_single_got_index): Delete. (mips_elf_local_got_index): Always use the GOT entry to track GOT indices. (mips_elf_global_got_index): Likewise. (mips_elf_create_local_got_entry): Assert that TLS entries have already been allocated. (mips_elf_record_global_got_symbol): Don't initialize tls_ie_type or tls_gd_type. (mips_elf_count_got_symbols): Only count reloc-only GOT entries here. (mips_elf_initialize_tls_index): Allocate a GOT index for every TLS entry. (mips_elf_lay_out_got): Use mips_elf_count_got_entries to count the GOT entries. (_bfd_mips_elf_finish_dynamic_symbol): Assert that TLS GOT offsets have been allocated. (_bfd_mips_elf_copy_indirect_symbol): Remove handling of tls_ie_type and tls_gd_type.
* bfd/Richard Sandiford2013-02-111-36/+37
| | | | | * elfxx-mips.c (mips_elf_create_local_got_entry): Tidy. Avoid aliasing violation. Check for htab allocation failures.
* bfd/Richard Sandiford2013-02-111-24/+42
| | | | | | | | | | | | | * elfxx-mips.c (mips_elf_primary_global_got_index): New function, split out from... (mips_elf_global_got_index): ...here. Reorder arguments so that the output bfd and info come first. (mips_elf_calculate_relocation): Update the call to mips_elf_global_got_index accordingly. (_bfd_mips_elf_finish_dynamic_symbol): Use mips_elf_primary_global_got_index rather than mips_elf_global_got_index. (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise.
* bfd/Richard Sandiford2013-02-111-70/+27
| | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Update comments. (mips_elf_multi_got_entry_eq): Rename to... (mips_elf_got_entry_eq): ...this, deleting the old definition. (mips_elf_create_got_info): Remove master_got_p argument. Always use mips_elf_got_entry_eq. (mips_elf_bfd_got, mips_elf_multi_got, mips_elf_create_got_section): Update calls accordingly. ld/testsuite/ * ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tls-hidden3.d, ld-mips-elf/tls-hidden3.got: Update for new hash table order.
* bfd/Richard Sandiford2013-02-111-206/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_info): Remove bfd2got. (mips_elf_bfd2got_hash): Delete. (mips_elf_got_per_bfd_arg): Remove bfd2got. (mips_elf_replace_bfd_got, mips_elf_count_got_entries): New functions. (mips_elf_global_got_index, mips_elf_create_local_got_entry): Use g->next to test for the multigot case. Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. (mips_elf_bfd2got_entry_hash, mips_elf_bfd2got_entry_eq) (mips_elf_got_for_ibfd, mips_elf_get_got_for_bfd): Delete. (mips_elf_make_got_per_bfd): Replace with... (mips_elf_add_got_entry): ...this new function. (mips_elf_make_got_pages_per_bfd): Replace with... (mips_elf_add_got_page_entry): ...this new function. (mips_elf_merge_got_with): Replace bfd2got argument with separate bfd and GOT arguments. Use mips_elf_add_got_entry and mips_elf_add_got_page_entry instead of mips_elf_make_got_per_bfd and mips_elf_make_got_pages_per_bfd. Use mips_elf_replace_bfd_got to set the BFD's GOT and free the old table. (mips_elf_merge_got): Replace bfd2got argument with separate bfd and GOT arguments. Apply mips_elf_resolve_final_got_entries. Use mips_elf_count_got_entries to count the number of entries in each GOT. Update the calls to mips_elf_merge_got_with. (mips_elf_adjust_gp): Use g->next to test for the multigot case. Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. (mips_elf_multi_got): Don't create the bfd2got hash table. Replace hash table traversal with a walk over the input bfds, updating the call to mips_elf_merge_got. Use mips_elf_replace_bfd_got to set the output bfd's GOT. (mips_elf_lay_out_got): Rename "sub" to "ibfd". Record that all bfds use the master GOT in the single-GOT case. (_bfd_mips_elf_finish_dynamic_sections): Use mips_elf_bfd_got rather than mips_elf_got_for_ibfd. ld/testsuite/ * ld-mips-elf/tls-hidden4.got, ld-mips-elf/tls-multi-got-1.d, ld-mips-elf/tls-multi-got-1.got: Update for changes in the order that symbols are added to per-bfd GOTs.
* bfd/Richard Sandiford2013-02-111-56/+101
| | | | | | | | | | | * elfxx-mips.c (mips_elf_obj_tdata): Add a got field. (mips_elf_bfd_got, mips_elf_record_got_entry): New functions. (mips_elf_record_global_got_symbol): Update the hash entry before adding the mips_got_entry. Use mips_elf_record_got_entry to do the latter. (mips_elf_record_local_got_symbol): Use mips_elf_record_got_entry. (mips_elf_record_got_page_entry): Record the entry in both the master and bfd GOTs.
* bfd/Richard Sandiford2013-02-111-18/+88
| | | | | | | | | | | | * elfxx-mips.c (mips_elf_recreate_got): Don't change the entry; create another one if necessary. (mips_elf_set_gotidx): New function. (mips_elf_set_global_gotidx): Use it. (mips_elf_initialize_tls_index): Likewise. Take a mips_elf_traverse_got_arg as argument. (mips_elf_lay_out_got): Update use of mips_elf_initialize_tls_index. (mips_elf_multi_got): Likewise. Cope with error returns from mips_elf_set_global_gotidx.
* bfd/Richard Sandiford2013-02-111-132/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_info): Add relocs field. (mips_elf_set_global_got_offset_arg, mips_elf_count_tls_arg): Replace with... (mips_elf_traverse_got_arg): ...this new structure. (mips_elf_count_local_tls_relocs): Delete. (mips_elf_count_global_tls_relocs): Likewise. (mips_elf_count_got_entry): New function. (mips_elf_count_local_got_entries): Likewise. (mips_elf_count_global_tls_entries): Take a mips_elf_traverse_got_arg rather than a mips_elf_count_tls_arg. Count both relocs and entries. (mips_elf_record_local_got_symbol): Don't count got entries here. (mips_elf_make_got_per_bfd): Use mips_elf_count_got_entry. (mips_elf_set_global_got_offset): Split into... (mips_elf_set_global_got_area, mips_elf_set_global_gotidx): ...these new functions. Take a mips_elf_traverse_got_arg rather than a mips_elf_set_global_got_offset_arg. Don't count TLS relocs here. Use g->relocs to record the number of relocs needed for global GOT entries. (mips_elf_multi_got): Use mips_elf_traverse_got_arg rather than mips_elf_set_global_got_offset_arg. Use the relocs field to count relocations. Update for above function split. (mips_elf_lay_out_got): Use mips_elf_count_local_got_entries to count both the number of GOT entries and the number of TLS relocs required by local entries. Likewise mips_elf_count_global_tls_entries and global entries. Remove uses of mips_elf_count_local_tls_relocs and mips_elf_count_global_tls_relocs.
* bfd/Richard Sandiford2013-02-111-220/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_got_entry): Update comment above tls_type entry to say that each structure represents only one type of TLS reference. (GOT_TLS_TYPE): New define. (mips_elf_link_hash_entry): Temporarily split tls_type and tls_got_offset into two variables each. (mips_elf_link_hash_newfunc): Update accordingly. (mips_elf_got_entry_eq, mips_elf_got_entry_hash) (mips_elf_multi_got_entry_eq): Require the tls_type to be the same. (mips_elf_reloc_tls_type, mips_tls_got_entries): New functions. (mips_tls_got_relocs): Use a switch statement. (mips_elf_count_global_tls_entries): Handle the new hash entry fields. (mips_elf_initialize_tls_slots): Use a switch statement. Avoid local "offset" variable. (mips_tls_got_index): Remove r_type argument and assert. Remove code that handled entries with two TLS types; always use the original got_index instead. (mips_tls_single_got_index): New function. (mips_elf_local_got_index): Use entry->tls_type to check for TLS entries. Use mips_tls_single_got_index. Update call to mips_tls_got_index. (mips_elf_global_got_index): Use mips_elf_reloc_tls_type. Use p->tls_type to check for TLS entries. Update call to mips_tls_got_index. Use mips_tls_single_got_index. (mips_elf_create_local_got_entry): Use mips_elf_reloc_tls_type. Use entry.tls_type to check for TLS entries. (mips_elf_record_global_got_symbol): Replace tls_flag argument with r_type argument. Use mips_elf_reloc_tls_type. Set up the new hash entry fields. (mips_elf_record_local_got_symbol): Replace tls_flag argument with r_type argument. Use mips_elf_reloc_tls_type and mips_tls_got_entries. Remove code that handled entries with multiple TLS types. (mips_elf_make_got_per_bfd): Use mips_tls_got_entries. (mips_elf_initialize_tls_index): Handle new hash entry fields. Use equality rather than masks when checking for specific TLS types. Use mips_tls_got_entries. Remove code that handled entries with multiple TLS types. (mips_elf_calculate_relocation): Use TLS_RELOC_P instead of testing the hash table entry. (_bfd_mips_elf_check_relocs): Update calls to mips_elf_record_global_got_symbol and mips_elf_record_local_got_symbol. (_bfd_mips_elf_finish_dynamic_symbol): Don't check h->type. (_bfd_mips_elf_copy_indirect_symbol): Handle new hash entry fields.
* bfd/Richard Sandiford2013-02-111-17/+2
| | | | | | | | | | | | | | | | | | | * elfxx-mips.c (mips_elf_multi_got_entry_hash): Rename to... (mips_elf_got_entry_hash): ...this, deleting the old version. (mips_elf_create_got_info): Use mips_elf_got_entry_hash for both types of GOT. ld/testsuite/ * ld-mips-elf/tls-hidden3.d, ld-mips-elf/tls-hidden3.got, ld-mips-elf/tls-multi-got-1.got, ld-mips-elf/tlsbin-o32.d, ld-mips-elf/tlsbin-o32.got, ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tlsdyn-o32.d, ld-mips-elf/tlsdyn-o32.got, ld-mips-elf/tlslib-o32.d, ld-mips-elf/tlslib-o32.got, ld-mips-elf/tlslib-o32-hidden.got, ld-mips-elf/tlslib-o32-ver.got: Adjust GOT layout for new got_entry hash function.
* bfd/Richard Sandiford2013-02-111-77/+34
| | | | | | * elfxx-mips.c (mips_elf_create_got_info): New function. (mips_elf_get_got_for_bfd, mips_elf_multi_got): Use it. (mips_elf_create_got_section): Likewise.
* bfd/Richard Sandiford2013-02-111-2/+2
| | | | | * elfxx-mips.c (mips_elf_record_local_got_symbol): Always set gotidx to -1.
* bfd/Richard Sandiford2013-02-111-3/+1
| | | | * elfxx-mips.c (mips_elf_multi_got): Simplify size calculation.
* bfd/Richard Sandiford2013-02-111-13/+9
| | | | | * elfxx-mips.c (mips_got_info): Move global_gotsym to... (mips_elf_link_hash_table): ...here. Update rest of file accordingly.
* bfd/Richard Sandiford2013-02-111-0/+11
| | | | | | | | | | | | * elfxx-mips.c (mips_elf_count_global_tls_entries) (mips_elf_count_global_tls_relocs): Don't count indirect or warning symbols. (mips_elf_multi_got, mips_elf_lay_out_got): Assert that the right number of TLS entries were allocated. ld/testsuite/ * ld-mips-elf/tlsdyn-o32-2.got, ld-mips-elf/tlsdyn-o32-3.got: Remove unused GOT entries.
* bfd/Richard Sandiford2013-02-111-4/+0
| | | | * elfxx-mips.c (mips_elf_sort_hash_table_f): Remove asserts.
* bfd/Richard Sandiford2013-02-111-3/+3
| | | | | * elfxx-mips.c (mips_elf_merge_got_with): Only use arg->global_count if there are TLS relocations.
* bfd/Richard Sandiford2013-02-111-4/+0
| | | | | * elfxx-mips.c (mips_elf_recreate_got): Remove free. (mips_elf_resolve_final_got_entries): Remove bogus comment.
* * coff-arm.c (coff_arm_link_hash_table_create): Use bfd_zmalloc.Alan Modra2013-02-101-36/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * coff-h8300.c (h8300_coff_link_hash_table_create): Likewise. * m68klinux.c (linux_link_hash_table_create): Likewise. * sparclinux.c (linux_link_hash_table_create): Likewise. * sunos.c (sunos_link_hash_table_create): Likewise. * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise. * elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise. * elf32-arm.c (elf32_arm_link_hash_table_create): Likewise. * elf32-avr.c (elf32_avr_link_hash_table_create): Likewise. * elf32-cr16.c (elf32_cr16_link_hash_table_create): Likewise. * elf32-cris.c (elf_cris_link_hash_table_create): Likewise. * elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise. * elf32-i386.c (elf_i386_link_hash_table_create): Likewise. * elf32-lm32.c (lm32_elf_link_hash_table_create): Likewise. * elf32-m32r.c (m32r_elf_link_hash_table_create): Likewise. * elf32-m68hc1x.c (m68hc11_elf_hash_table_create): Likewise. * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise. * elf32-metag.c (elf_metag_link_hash_table_create): Likewise. * elf32-nios2.c (nios2_elf32_link_hash_table_create): Likewise. * elf32-s390.c (elf_s390_link_hash_table_create): Likewise. * elf32-score.c (elf32_score_link_hash_table_create): Likewise. * elf32-spu.c (spu_elf_link_hash_table_create): Likewise. * elf32-tic6x.c (elf32_tic6x_link_hash_table_create): Likewise. * elf32-vax.c (elf_vax_link_hash_table_create): Likewise. * elf32-xgate.c (xgate_elf_bfd_link_hash_table_create): Likewise. * elf32-xtensa.c (elf_xtensa_link_hash_table_create): Likewise. * elf64-aarch64.c (elf64_aarch64_link_hash_table_create): Likewise. * elf64-s390.c (elf_s390_link_hash_table_create): Likewise. * elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise. * elf64-x86-64.c (elf_x86_64_link_hash_table_create): Likewise. * elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise. * elflink.c (_bfd_elf_link_hash_table_create): Likewise. (_bfd_elf_link_hash_table_init): Assume zero fill table on entry.
* Remove trailing white spaces in bfdH.J. Lu2013-01-101-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * aout0.c: Remove trailing white spaces. * archive.c: Likewise. * archures.c: Likewise. * bfd-in.h: Likewise. * bfd-in2.h: Likewise. * coff-alpha.c: Likewise. * coff-i860.c: Likewise. * coff-mips.c: Likewise. * coff-ppc.c: Likewise. * coff-tic80.c: Likewise. * coff-x86_64.c: Likewise. * coff-z80.c: Likewise. * coffcode.h: Likewise. * coffgen.c: Likewise. * cofflink.c: Likewise. * compress.c: Likewise. * corefile.c: Likewise. * cpu-arm.c: Likewise. * cpu-avr.c: Likewise. * cpu-bfin.c: Likewise. * cpu-cr16.c: Likewise. * cpu-cr16c.c: Likewise. * cpu-crx.c: Likewise. * cpu-h8300.c: Likewise. * cpu-i386.c: Likewise. * cpu-lm32.c: Likewise. * cpu-m68k.c: Likewise. * cpu-moxie.c: Likewise. * cpu-msp430.c: Likewise. * cpu-sh.c: Likewise. * cpu-xc16x.c: Likewise. * dwarf2.c: Likewise. * ecofflink.c: Likewise. * ecoffswap.h: Likewise. * elf-ifunc.c: Likewise. * elf-m10300.c: Likewise. * elf-vxworks.c: Likewise. * elf32-avr.c: Likewise. * elf32-avr.h: Likewise. * elf32-cr16.c: Likewise. * elf32-cr16c.c: Likewise. * elf32-cris.c: Likewise. * elf32-crx.c: Likewise. * elf32-frv.c: Likewise. * elf32-hppa.c: Likewise. * elf32-i860.c: Likewise. * elf32-ip2k.c: Likewise. * elf32-iq2000.c: Likewise. * elf32-m32c.c: Likewise. * elf32-m68hc1x.c: Likewise. * elf32-msp430.c: Likewise. * elf32-mt.c: Likewise. * elf32-ppc.c: Likewise. * elf32-rl78.c: Likewise. * elf32-s390.c: Likewise. * elf32-score.h: Likewise. * elf32-sh-symbian.c: Likewise. * elf32-sh.c: Likewise. * elf32-spu.c: Likewise. * elf32-tic6x.c: Likewise. * elf32-v850.c: Likewise. * elf32-xc16x.c: Likewise. * elf32-xtensa.c: Likewise. * elf64-alpha.c: Likewise. * elf64-hppa.c: Likewise. * elf64-ppc.c: Likewise. * elf64-s390.c: Likewise. * elfcore.h: Likewise. * elflink.c: Likewise. * elfxx-mips.c: Likewise. * elfxx-sparc.c: Likewise. * elfxx-tilegx.c: Likewise. * ieee.c: Likewise. * libcoff.h: Likewise. * libpei.h: Likewise. * libxcoff.h: Likewise. * linker.c: Likewise. * mach-o-i386.c: Likewise. * mach-o-target.c: Likewise. * mach-o.c: Likewise. * mach-o.h: Likewise. * mmo.c: Likewise. * opncls.c: Likewise. * pdp11.c: Likewise. * pe-x86_64.c: Likewise. * peXXigen.c: Likewise. * pef-traceback.h: Likewise. * pei-x86_64.c: Likewise. * peicode.h: Likewise. * plugin.c: Likewise. * reloc.c: Likewise. * riscix.c: Likewise. * section.c: Likewise. * som.c: Likewise. * syms.c: Likewise. * tekhex.c: Likewise. * ticoff.h: Likewise. * vaxbsd.c: Likewise. * xcofflink.c: Likewise. * xtensa-isa.c: Likewise.
* * archures.c: Add support for MIPS r5900Nick Clifton2013-01-041-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bfd-in2.h: Add support for MIPS r5900 * config.bfd: Add support for Sony Playstation 2 * cpu-mips.c: Add support for MIPS r5900 * elfxx-mips.c: Add support for MIPS r5900 (extension of r4000) * config/tc-mips.c: Add support for MIPS r5900 Add M_LQ_AB and M_SQ_AB to support large values for instructions lq and sq. * config/tc-mips.c (can_swap_branch_p, get_append_method): Detect some conditional short loops to fix a bug on the r5900 by NOP in the branch delay slot. * config/tc-mips.c (M_MUL): Support 3 operands in multu on r5900. * config/tc-mips.c (M_TRUNCWS): Support trunc.w.s on r5900 in MIPS ISA I. * config/tc-mips.c (s_mipsset): Force 32 bit floating point on r5900. * configure.in: Detect CPU type when target string contains r5900 (e.g. mips64r5900el-linux-gnu). * config/tc-mips.c (mips_ip): Check parameter range of instructions mfps and mtps on r5900. * elf/mips.h: Add MIPS machine variant number for r5900 which is compatible with old Playstation 2 software. * opcode/mips.h: Add support for r5900 instructions including lq and sq. * configure.tgt: Support ELF files for Sony Playstation 2 (for ps2dev and ps2sdk). * emulparams/elf32lr5900n32.sh: Create linker script for Sony Playstation 2 ELF files using MIPS ABI n32. * emulparams/elf32lr5900.sh: Create linker script for Sony Playstation 2 ELF files using MIPS ABI o32. * Makefile.am: Add linker scripts for Sony Playstation 2 ELF files. * opcodes/mips-dis.c: Add names for CP0 registers of r5900. * opcodes/mips-opc.c: Add M_SQ_AB and M_LQ_AB to support larger range for instructions sq and lq. * opcodes/mips-opc.c: Add support for MIPS r5900 CPU. Add support for 128 bit MMI (Multimedia Instructions). Add support for EE instructions (Emotion Engine). Disable unsupported floating point instructions (64 bit and undefined compare operations). Enable instructions of MIPS ISA IV which are supported by r5900. Disable 64 bit co processor instructions. Disable 64 bit multiplication and division instructions. Disable instructions for co-processor 2 and 3, because these are not supported (preparation for later VU0 support (Vector Unit)). Disable cvt.w.s because this behaves like trunc.w.s and the correct execution can't be ensured on r5900. Add trunc.w.s using the opcode encoding of cvt.w.s on r5900. This will confuse less developers and compilers.
* * elfxx-mips.c (allocate_dynrelocs): Correct test for symbolAlan Modra2012-12-061-1/+1
| | | | defined in a regular file to include common symbols.
* PR ld/10629Maciej W. Rozycki2012-12-031-3/+3
| | | | | | | * elfxx-mips.c (mips_elf_link_hash_table): Update comment for use_rld_obj_head. (_bfd_mips_elf_create_dynamic_sections): Always create a .rld_map section if no __rld_obj_head symbol has been seen.
* bfd/Maciej W. Rozycki2012-12-031-37/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elf32-mips.c (bfd_elf32_mkobject): New macro. * elf64-mips.c (bfd_elf64_mkobject): Likewise. * elfn32-mips.c (bfd_elf32_mkobject): Likewise. * elfxx-mips.h (_bfd_mips_elf_mkobject): New prototype. * elfxx-mips.c (mips_elf_obj_tdata): New struct. (mips_elf_tdata): New macro. (_bfd_mips_elf_mkobject): New function. (mips_elf_merge_obj_attributes): Report the originating input BFD on attribute conflicts. ld/testsuite/ * ld-mips-elf/attr-gnu-4-12.d: Update the warning message. * ld-mips-elf/attr-gnu-4-13.d: Likewise. * ld-mips-elf/attr-gnu-4-14.d: Likewise. * ld-mips-elf/attr-gnu-4-15.d: Likewise. * ld-mips-elf/attr-gnu-4-21.d: Likewise. * ld-mips-elf/attr-gnu-4-23.d: Likewise. * ld-mips-elf/attr-gnu-4-24.d: Likewise. * ld-mips-elf/attr-gnu-4-25.d: Likewise. * ld-mips-elf/attr-gnu-4-31.d: Likewise. * ld-mips-elf/attr-gnu-4-32.d: Likewise. * ld-mips-elf/attr-gnu-4-34.d: Likewise. * ld-mips-elf/attr-gnu-4-35.d: Likewise. * ld-mips-elf/attr-gnu-4-41.d: Likewise. * ld-mips-elf/attr-gnu-4-42.d: Likewise. * ld-mips-elf/attr-gnu-4-43.d: Likewise. * ld-mips-elf/attr-gnu-4-45.d: Likewise. * ld-mips-elf/attr-gnu-4-51.d: Likewise.
* bfd/Maciej W. Rozycki2012-12-031-10/+10
| | | | | | | | | | | | | | | | * elfxx-mips.c (mips_elf_merge_obj_attributes): Correct messages for the -mdouble-float and -msingle-float cases throughout; make all the messages report the output file consistently on the left-hand side. ld/testsuite/ * ld-mips-elf/attr-gnu-4-12.d: Adjust the warning expected according to changes to BFD. * ld-mips-elf/attr-gnu-4-14.d: Likewise. * ld-mips-elf/attr-gnu-4-31.d: Likewise. * ld-mips-elf/attr-gnu-4-32.d: Likewise. * ld-mips-elf/attr-gnu-4-34.d: Likewise. * ld-mips-elf/attr-gnu-4-41.d: Likewise.
* Add hdynamic to elf_link_hash_table for _DYNAMICH.J. Lu2012-09-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * elf-bfd.h (elf_link_hash_table): Add hdynamic for the _DYNAMIC symbol. * elflink.c (_bfd_elf_link_create_dynamic_sections): Set hdynamic. * elf-m10300.c (_bfd_mn10300_elf_finish_dynamic_symbol): Check hdynamic instead of "_DYNAMIC". * elf32-arm.c (elf32_arm_finish_dynamic_symbol): Likewise. * elf32-cr16.c (elf32_arm_finish_dynamic_symbol): Likewise. * elf32-cris.c (elf_cris_finish_dynamic_symbol): Likewise. * elf32-hppa.c (elf32_hppa_finish_dynamic_symbol): Likewise. * elf32-i386.c (elf_i386_convert_mov_to_lea): Likewise. * elf32-lm32.c (lm32_elf_finish_dynamic_symbol): Likewise. * elf32-m32r.c (m32r_elf_finish_dynamic_symbol): Likewise. * elf32-s390.c (elf_s390_finish_dynamic_symbol): Likewise. * elf32-sh.c (sh_elf_finish_dynamic_symbol): Likewise. * elf32-tic6x.c (elf32_tic6x_finish_dynamic_symbol): Likewise. * elf32-tilepro.c (tilepro_elf_finish_dynamic_symbol): Likewise. * elf32-vax.c (elf_vax_finish_dynamic_symbol): Likewise. * elf32-xtensa.c (elf_xtensa_finish_dynamic_symbol): Likewise. * elf64-aarch64.c elf64_aarch64_finish_dynamic_symbol(): Likewise. * elf64-alpha.c (elf64_alpha_finish_dynamic_symbol): Likewise. * elf64-ia64-vms.c (elf64_ia64_finish_dynamic_symbol): Likewise. * elf64-s390.c (elf_s390_finish_dynamic_symbol): Likewise. * elf64-sh64.c (sh64_elf64_finish_dynamic_symbol): Likewise. * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. * elfnn-ia64.c (elfNN_ia64_finish_dynamic_symbol): Likewise. * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Likewise. * elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_symbol): Likewise. * elfxx-tilegx.c (tilegx_elf_finish_dynamic_symbol): Likewise. * elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol): Check hdynamic, hgot, hplt instead of _DYNAMIC, _GLOBAL_OFFSET_TABLE_, _PROCEDURE_LINKAGE_TABLE_. * elf32-score.c (s3_bfd_score_elf_finish_dynamic_symbol): Likewise. * elf32-score7.c (s7_bfd_score_elf_finish_dynamic_symbol): Likewise.
* typo fixesAlan Modra2012-08-171-2/+2
|
* * elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Look upMaciej W. Rozycki2012-08-131-1/+1
| | | | | the options section in the output rather than input BFD to decide if to add a DT_MIPS_OPTIONS tag.
* * elfxx-mips.c (mips_elf_calculate_relocation): Fix the handlingMaciej W. Rozycki2012-08-131-1/+4
| | | | of protected symbols.