PR ld/4590
* elfxx-ia64.c (sort_dyn_sym_info): Keep the valid got_offset
when removing duplicated entries.
(get_dyn_sym_info): Initialize the got_offset field to -1.
Update call to sort_dyn_sym_info.
(elfNN_ia64_relocate_section): Call sort_dyn_sym_info to sort
array of addend and remove duplicates.
* arm-tdep.c (arm_push_dummy_call): Replace DEPRECATED_REGISTER_SIZE
by INT_REGISTER_SIZE.
(thumb_get_next_pc, arm_return_in_memory): Likewise.
(arm_gdbarch_init): Do not call set_gdbarch_deprecated_register_size.
* ia64-tdep.c (ia64_gdbarch_init): Do not call
set_gdbarch_deprecated_register_size.
Nick Clifton [Mon, 18 Jun 2007 16:38:49 +0000 (16:38 +0000)]
* objdump.c: Include sys/mman.h
(print_file_list): Remove f, add map, mapsize, linemap, maxline, last_line, first fields.
(slurp_file): Add.
(index_file): Add.
(print_file_open): Call slurp_file and index_file. Initialize new fields.
(skip_to_line): Rename to print_line and write only single line.
(dump_line): Add.
(show_line): Change to new algorithm.
* libpei.h (_bfd_XXi_final_link_postscript): Remove
duplication.
(bfd_target_pei_p): New.
(bfd_target_pei_arch): New
(bfd_target_efi_p): Likewise.
(bfd_target_efi_arch): New
(bfd_pe_executable_p): Use bfd_target_pei_p and
bfd_target_efi_p.
* peicode.h (arch_type): New enum.
(pe_arch): New function.
(pe_bfd_object_p): Don't match PE/EFI target with EFI/PE file
if there is an EFI/PE target.
Alan Modra [Mon, 18 Jun 2007 10:58:07 +0000 (10:58 +0000)]
* Makefile.am: Add eelf32_spu.o rule.
* Makefile.in: Regenerate.
* emultempl/spuelf.em: Revert last change. Instead use EMBEDSPU
defined in Makefile for embedspu name.
Ulrich Weigand [Sat, 16 Jun 2007 20:10:51 +0000 (20:10 +0000)]
* gdbtypes.h (builtin_type_m2_char, builtin_type_m2_int,
builtin_type_m2_card, builtin_type_m2_real, builtin_type_m2_bool):
Replace global variable declaration with compatibility macro.
(struct builtin_m2_type): New data type.
(builtin_m2_type): Add prototype.
* m2-lang.c (builtin_type_m2_char, builtin_type_m2_int,
builtin_type_m2_card, builtin_type_m2_real, builtin_type_m2_bool):
Remove global variables.
(m2_language_arch_info): Use builtin_m2_type instead of variables.
(build_m2_types): New function.
(m2_type_data): New variable.
(builtin_m2_type): New function.
(_initialize_m2_language): Do not build data types. Register
m2_type_data per-gdbarch data.
Ulrich Weigand [Sat, 16 Jun 2007 20:09:07 +0000 (20:09 +0000)]
* gdbtypes.h (builtin_type_f_character, builtin_type_f_logical,
builtin_type_f_logical_s1, builtin_type_f_logical_s2,
builtin_type_f_integer, builtin_type_f_integer_s2, builtin_type_f_real,
builtin_type_f_real_s8, builtin_type_f_real_s16,
builtin_type_f_complex_s8, builtin_type_f_complex_s16,
builtin_type_f_complex_s32, builtin_type_f_void): Replace global
variable declaration with compatibility macro.
(struct builtin_f_type): New data type.
(builtin_f_type): Add prototype.
* f-lang.c (builtin_type_f_character, builtin_type_f_logical,
builtin_type_f_logical_s1, builtin_type_f_logical_s2,
builtin_type_f_integer, builtin_type_f_integer_s2, builtin_type_f_real,
builtin_type_f_real_s8, builtin_type_f_real_s16,
builtin_type_f_complex_s8, builtin_type_f_complex_s16,
builtin_type_f_complex_s32, builtin_type_f_void): Remove variables.
(f_language_arch_info): Use builtin_f_type instead of variables.
(build_fortran_types): Build builtin_f_type structure instead of
setting global type variables.
(f_type_data): New variable.
(builtin_f_type): New function.
(_initialize_f_language): Do not call build_fortran_types. Do not
swap global type variables. Register f_type_data per-gdbarch data.
* gdbtypes.h (builtin_bfd_vma_type): Remove.
* gdbtypes.h (builtin_bfd_vma_type): Remove.
(build_gdbtypes): Do not initialize it.
(_initialize_gdbtypes): Do not swap it.
* i386-tdep.h (struct gdbarch_tdep): Add i386_mmx_type and
i386_sse_type members.
(i386_mmx_type, i386_sse_type): Change from variables to functions.
* i386-tdep.c (i386_mmx_type, i386_sse_type): Remove variables.
(i386_init_types): Do not build vector types.
(i386_mmx_type, i386_sse_type): New functions.
(i386_register_type): Call them instead of using global variables.
(i386_gdbarch_init): Use XCALLOC to allocate tdep structure.
* amd64-tdep.c (amd64_register_type): Call i386_sse_type instead
of using global variable.
* rs6000-tdep.h (struct gdbarch_tdep): Add ppc_builtin_type_vec64
and ppc_builtin_type_vec128 members.
* rs6000-tdep.c (rs6000_builtin_type_vec64): New function.
(rs6000_builtin_type_vec128): Likewise.
(rs6000_register_type): Call them instead of using builtin_type_vec64
and builtin_type_vec128.
(rs6000_gdbarch_init): Use XCALLOC to allocate tdep structure.
* spu-tdep.c (struct gdbarch_tdep): New data type.
(spu_builtin_type_vec128): Remove variable.
(spu_builtin_type_vec128): New function.
(spu_register_type): Call it instead of using global variable.
(spu_gdbarch_init): Allocate tdep structure.
(spu_init_vector_type): Remove function.
(_initialize_spu_tdep): Do not call it.
Ulrich Weigand [Sat, 16 Jun 2007 17:24:18 +0000 (17:24 +0000)]
* amd64-tdep.c (struct amd64_register_info): Remove.
(amd64_register_info): Remove.
(amd64_register_names): New static variable.
(AMD64_NUM_REGS): Use amd64_register_names instead of
amd64_register_info.
(amd64_register_name): Likewise.
(amd64_register_type): Do not refer to amd64_register_info.
* s390-tdep.c (struct s390_register_info): Remove.
(s390_register_info): Remove.
(s390_register_name): Do not refer to s390_register_info.
(s390_register_type): Likewise.
* sparc64-tdep.c (struct sparc64_register_info): Remove.
(sparc64_register_info, sparc64_pseudo_register_info): Remove.
(sparc64_register_names, sparc64_pseudo_register_names): New.
(SPARC64_NUM_REGS, SPARC64_NUM_PSEUDO_REGS): Use
sparc64_register_names and sparc64_pseudo_register_names instead of
sparc64_register_info and sparc64_pseudo_register_info.
(sparc64_register_name): Likewise.
(sparc64_register_type): Do not refer to sparc64_register_info
and sparc64_pseudo_register_info.
Ulrich Weigand [Sat, 16 Jun 2007 17:23:12 +0000 (17:23 +0000)]
* c-lang.c (cplus_builtin_types): Remove.
(enum cplus_primitive_types): New data type.
(cplus_language_arch_info): New function.
(cplus_language_defn): Set la_language_arch_info member. Do not set
la_builtin_type_vector and string_char_type members.
* f-lang.c (f_builtin_types): Remove.
(enum f_primitive_types): New data type.
(f_language_arch_info): New function.
(f_language_de): Set la_language_arch_info member. Do not set
la_builtin_type_vector and string_char_type members.
* m2-lang.c (m2_builtin_types): Remove.
(enum m2_primitive_types): New data type.
(m2_language_arch_info): New function.
(m2_language_defn): Set la_language_arch_info member. Do not set
la_builtin_type_vector and string_char_type members.
* objc-lang.c (objc_builtin_types): Remove.
(objc_language): Set la_language_arch_info member. Do not set
la_builtin_type_vector and string_char_type members.
* p-lang.c (pascal_builtin_types): Remove.
(enum pascal_primitive_types): New data type.
(pascal_language_arch_info): New function.
(pascal_language_defn): Set la_language_arch_info member. Do not set
la_builtin_type_vector and string_char_type members.
Ulrich Weigand [Sat, 16 Jun 2007 17:16:26 +0000 (17:16 +0000)]
* regcache.c (struct regcache): Add ptid_t member.
(regcache_xmalloc): Initialize it.
(regcache_cpy_no_passthrough): Do not refer to current_regcache.
(regcache_dup): Likewise.
(regcache_dup_no_passthrough): Likewise.
(current_regcache): Make static.
(registers_ptid): Remove variable.
(get_thread_regcache): New function.
(get_current_regcache): New function.
(registers_changed): Implement by freeing current regcache.
(regcache_raw_read): Do not refer to current_regcache. Set
inferior_ptid to regcache->ptid while calling target routines.
(regcache_raw_write): Likewise.
(regcache_raw_supply): Do not refer to current_regcache.
(read_pc_pid): Use thread regcache. Do not modify inferior_ptid.
(write_pc_pid): Likewise.
(build_regcache): Remove.
(_initialize_regcache): Do not call DEPRECATED_REGISTER_GDBARCH_SWAP
or deprecated_register_gdbarch_swap. Do not initialize
registers_ptid.
* regcache.h (get_current_regcache): Add prototype.
(get_thread_regcache): Likewise.
(current_regcache): Remove declaration.
* mips-tdep.c (mips_skip_trampoline_code): Add FRAME argument. Read
registers from FRAME instead of using read_signed_register.
* ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Add FRAME
argument.
(ppc64_standard_linkage_target): Likewise. Read registers from FRAME
instead of using read_register.
(ppc64_skip_trampoline_code): Add FRAME argument. Pass it to
ppc64_standard_linkage_target.
* rs6000-tdep.c (rs6000_skip_trampoline_code): Add FRAME argument.
Pass it to find_solib_trampoline_target. Read registers from FRAME
instead of using read_register.
Ulrich Weigand [Fri, 15 Jun 2007 22:37:35 +0000 (22:37 +0000)]
* gdbarch.sh (software_single_step): Replace REGCACHE argument by
FRAME argument.
* gdbarch.c, gdbarch.h: Regenerate.
* infrun.c (resume): Pass current frame to SOFTWARE_SINGLE_STEP.
* alpha-tdep.c (alpha_next_pc): Add FRAME argument. Retrieve
registers from FRAME instead of using read_register.
(alpha_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
to alpha_next_pc. Use get_frame_pc instead of read_pc.
* alpha-tdep.h (alpha_software_single_step): Replace REGCACHE
argument by FRAME.
* arm-tdep.c (shifted_reg_val): Add FRAME argument. Read registers
from FRAME instead of using read_register.
(thumb_get_next_pc): Likewise.
(arm_get_next_pc): Likewise.
(arm_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
to arm_get_next_pc. Use get_frame_pc instead of read_register.
* arm-tdep.h (arm_software_single_step): Replace REGCACHE
argument by FRAME.
* cris-tdep.c (find_step_target): Add FRAME argument. Read registers
from FRAME instead of using read_register.
(cris_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
to find_step_target.
* mips-tdep.c (mips32_next_pc): Add FRAME argument. Read registers
from FRAME instead of using read_register / read_signed_register.
(extended_mips16_next_pc): Likewise.
(mips16_next_pc): Likewise.
(mips_next_pc): Likewise.
(mips_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
to mips_next_pc. Use get_frame_pc instead of read_pc.
* mips-tdep.h (mips_software_single_step): Replace REGCACHE
argument by FRAME.
* rs6000-tdep.c (branch_dest): Add FRAME argument. Use it instead
of current frame. Read registers from FRAME.
(deal_with_atomic_sequence): Add FRAME argument. Pass it to
branch_dest. Use get_frame_pc instead of read_pc.
(rs6000_software_single_step): Likewise.
(bl_to_blrl_insn_p): Do not call branch_dest.
* rs6000-tdep.h (rs6000_software_single_step): Replace REGCACHE
argument by FRAME.
* sparc64-linux-tdep.c (sparc64_linux_step_trap): Add FRAME argument.
Read registers from FRAME instead of current regcache.
* sparc-linux-tdep.c (sparc32_linux_step_trap): Likewise.
* sparcnbsd-tdep.c (sparcnbsd_step_trap): Likewise.
* sparc-tdep.c (sparc_address_from_register): Remove.
(sparc_analyze_control_transfer): Pass FRAME argument instead of
GDBARCH. Pass FRAME to step_trap callback.
(sparc_step_trap): Add FRAME argument.
(space_software_single_step): Replace REGCACHE by FRAME. Pass FRAME
to sparc_analyze_control_transfer. Read registers from FRAME instead
of calling sparc_address_from_register.
* sparc-tdep.h (struct gdbarch_tdep): Add FRAME argument to
step_trap callback.
(sparc_address_from_register): Remove prototype.
(sparc_software_single_step): Replace REGCACHE argument by FRAME.
(sparcnbsd_step_trap): Add FRAME argument.
* spu-tdep.c (spu_software_single_step): Replace REGCACHE argument
by FRAME. Read registers from FRAME instead of REGCACHE.
Ulrich Weigand [Fri, 15 Jun 2007 22:34:13 +0000 (22:34 +0000)]
* arm-tdep.c (arm_print_float_info): Use register value from FRAME
instead of calling read_register.
* avr-tdep.c (avr_push_dummy_call): Write to REGCACHE instead of
calling write_register.
* hppa-tdep.c (hppa32_push_dummy_call): Write to REGCACHE instead of
calling write_register.
* ia64-tdep.c (find_func_descr): Add REGCACHE parameter. Use it
instead of calling read_register.
(ia64_push_dummy_call): Update call to find_func_descr. Use REGCACHE
instead of calling read_register and write_register.
* m32r-tdep.c (m32r_linux_supply_gregset): Use REGCACHE parameter
instead of current_regcache.
* mn10300-tdep.c (mn10300_push_dummy_call): Write to REGCACHE instead
of calling write_register.
* mn10300-linux-tdep.c (am33_supply_fpregset_method): Use REGCACHE
parameter instead of current_regcache.
* mips-tdep.c (mips2_fp_compat): Add FRAME parameter. Use it
instead of calling read_register.
(mips_read_fp_register_double, mips_print_fp_register): Update calls.
(mips_eabi_push_dummy_call): Use REGCACHE instead of write_register.
(mips_n32n64_push_dummy_call): Likewise.
(mips_o32_push_dummy_call): Likewise.
(mips_o64_push_dummy_call): Likewise.
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use REGCACHE
parameter instead of current_regcache.
* xtensa-tdep.c (xtensa_register_write_masked): Add REGCACHE parameter.
Use it instead of read_register and write_register.
(xtensa_register_read_masked): Likewise.
(xtensa_pseudo_register_read): Update call.
(xtensa_pseudo_register_write): Likewise.
(xtensa_frame_cache): Use register values unwound from NEXT_FRAME
instead of calling read_register.
(xtensa_push_dummy_call): Update comment.
Ulrich Weigand [Fri, 15 Jun 2007 22:32:02 +0000 (22:32 +0000)]
* mips-tdep.c (mips16_scan_prologue): Replace read_next_frame_reg
by frame_unwind_register_signed calls.
(mips32_scan_prologue): Likewise. Skip analysis of alloca stack
frame allocations when called with NULL NEXT_FRAME parameter.
(read_next_frame_reg): Remove.
* sh-tdep.c (sh_analyze_prologue): Add FPSCR parameter. Use it
instead of reading the FPSCR register.
(sh_frame_cache): Pass unwound FPSCR register value to
sh_analyze_prologue.
(sh_skip_prologue): Pass dummy FPSCR value to sh_analyze_prologue.
* v850-tdep.c (v850_analyze_prologue): Add CTBP parameter. Use it
instead of reading the CTBP register.
(v850_frame_cache): Pass unwound CTBP register value to
v850_analyze_prologue.
Vladimir Prus [Fri, 15 Jun 2007 20:19:17 +0000 (20:19 +0000)]
* m68k-tdep.h (enum m68k_flavour): New.
(struct gdbarch_tdep): New fields
float_return, flavour and fpregs_present.
* m68k-tdep.c (m68k_register_type): Use
fpregs_present and conditionalize floating
registers type on flavour.
(m68k_register_names): New.
(m68k_register_name): Use the above.
(m68k_convert_register_p): Consult fpregs_present.
(m68k_register_to_value, m68k_value_to_register):
Use register_type to obtain the type of floating
point registers.
(m68k_svr4_extract_return_value): Check tdep->float_return.
Use register_type to get the type of floating
point regiters.
(m68k_svr4_store_return_value): Likewise.
(m68k_dwarf_reg_to_regnum): Check tdep->fpregs_present.
(m68k_analyze_register_saves): Likewise.
(m68k_gdbarch_init): Extract infromation
from XML description, if present. Guess coldfire by
looking at the file, if present. Conditionalize
setting of long double format. Set decr_pc_after_break
to 2 on coldfire and fido. Enable XML-driven
register description.
* m68kbsd-tdep.c (m68kbsd_fpreg_offset): Use
size of tdep->fpreg_type, as opposed to hardcoded value.
* Makefile.in (m68k-tdep.o): Update dependencies.
* gdb.texinfo (Target Description Format): Add version attribute
for <target>.
* xml-tdesc.c (tdesc_start_target): New.
(target_attributes): New.
(tdesc_elements): Use it.
* features/gdb-target.dtd: Add #FIXED version attribute for
<target>.
* features/Makefile: Generate regformats for mips-linux and
mips64-linux.
* features/sort-regs.xsl: Correct typo.
* regformats/reg-mips.dat, regformats/reg-mips64.dat: Delete.
* regformats/mips-linux.dat, regformats/mips64-linux.dat: New generated
files.
* Makefile.in (clean): Clean new files instead of deleted ones.
(reg-mips.o, reg-mips.c, reg-mips64.o, reg-mips64.c): Delete.
(mips-linux.o, mips-linux.c, mips64-linux.o, mips64-linux.c): New
rules.
* configure.srv: Specify XML files and new regformats for MIPS and
MIPS64 GNU/Linux.
* linux-mips-low.c (mips_num_regs): Set to only used registers.
(mips_regmap): Do not fetch $0. Remove unused registers. Add
an entry for the restart register.
(mips_cannot_fetch_register, mips_cannot_store_register)
(mips_reinsert_addr, mips_fill_fpregset, mips_store_fpregset): Update
register names to match the XML descriptions.
(mips_fill_gregset, mips_store_gregset): Likewise. Handle the
restart register instead of $0.
* mips-tdep.c (mips_print_register): Remove unused ALL argument.
(print_gp_register_row): Stop before printing a register bigger
than the ABI register size.
(mips_print_registers_info): Update call to mips_print_register.