* NEWS: Mention that m32r is multi-arch.
From 2003-07-28 Kei Sakamoto <sakamoto.kei@renesas.com>:
* configure.tgt: Recognize m32r-*-*.
* config/m32r/tm-m32r.h: Delete file.
* config/m32r/m32r.mt: New file.
* m32r-rom.c (m32r_upload_command): Use hostent only when
gethostname succeeds, in order to avoid a compilation
warning.
* m32r-tdep.c (m32r_store_return_value): Add a cast to remove a
compiler warning.
* user-regs.c (struct user_reg): Add "next" link.
(struct user_regs): Replace "user" with "first" and "last" links.
(append_user_reg): Add pre-allocated "reg" parameter.
(builtin_user_regs): Provide initial value for "last".
(user_reg_add_builtin): XMALLOC memory for append_user_reg.
(user_regs_init): Allocate memory from the gdbarch obstack.
(user_reg_add): GDBARCH_OBSTACK_ZALLOC memory for append_user_reg.
(user_reg_map_name_to_regnum): Rewrite to search the user_reg
linked list.
(usernum_to_user_reg): New function.
(user_reg_map_regnum_to_name): Use usernum_to_user_reg.
(value_of_user_reg): Use usernum_to_user_reg.
(user_regs_free): Delete function.
(_initialize_user_regs): Update register_gdbarch_data call.
* structs.h (value_being_returned): Add a struct_addr argument.
* infcall.c (call_function_by_hand): Pass struct_addr to
value_being_returned.
* infcmd.c (print_return_value): Pass zero as struct_addr.
* values.c (value_being_returned): If struct_addr is passed,
use it instead of trying to recover it from the inferior.
the prologue analyzer won't need to attempt to extract the pc
value from the woefully incomplete dummy frame.
(mn10300_analyze_prologue): Avoid calls to get_frame_pc() when
possible. Disable code which modifies the frame.
* regcache.c (struct regcache_descr): Update comments on
nr_raw_registers.
(init_legacy_regcache_descr): Don't set nr_raw_registers or
sizeof_raw_register_valid_p.
(init_regcache_descr): Set nr_raw_registers and
sizeof_raw_register_valid_p before calling
init_legacy_regcache_descr.
frame unwind information.
(m68hc11_scan_prologue): New function from m68hc11_guess_from_prologue
and adapted for frame unwinding.
(m68hc11_skip_prologue): Update to scan prologue in temporary object.
(m68hc11_unwind_pc): New function.
(m68hc11_frame_unwind_cache): New function to analyze frames.
(m68hc11_frame_this_id): New function to create new frame struct.
(m68hc11_frame_prev_register): New function to unwind a register from
the frame.
(m68hc11_frame_unwind): Default 68hc11/68hc12 unwinder.
(m68hc11_frame_p): New function for the above.
(m68hc11_frame_base_address): New function to return fp of frame.
(m68hc11_frame_args_address): Update for frame.
(m68hc11_frame_base): Default 68hc11/68hc12 frame.
(m68hc11_unwind_sp): New function.
(m68hc11_unwind_dummy_id): New function.
(m68hc11_gdbarch_init): Install the above frames; remove deprecated
calls.
* config/pa/tm-hppa.h (init_frame_pc_default): Declare.
* infcall.c (legacy_push_dummy_code) [GDB_TARGET_IS_HPPA]: Update
REAL_PC and not the pointer.
* hppa-hpux-tdep.c: Include frame.h
Patch from 2003-07-22 Kei Sakamoto <sakamoto.kei@renesas.com>:
* m32r-tdep.c (m32r_memory_insert_breakpoint): Fix code style -
operator at start and not end of line.
(decode_prologue): Ditto.
(m32r_frame_unwind_cache, m32r_unwind_sp, m32r_unwind_pc): Use
frame_unwind_register_unsigned instead of
frame_unwind_unsigned_register.
(m32r_read_pc): Use regcache_cooked_read_unsigned instead of
read_register.
(m32r_push_dummy_call): Use register_size instead of
REGISTER_RAW_SIZE.
(m32r_frame_sniffer): Replace m32r_frame_p.
(m32r_gdbarch_init): Call frame_unwind_append_sniffer.
* m32r-rom.c (report_transfer_performance): Delete extern
declaration.
(m32r_load, m32r_upload_command): Use print_transfer_performance
instead of report_transfer_performance.
(_initialize_m32r_rom): Use add_setshow_cmd instead of add_set_cmd
/ add_show_from_set.
* m68hc11-tdep.c (_initialize_m68hc11_tdep): Deprecate "regs" command.
(m68hc11_print_register): New function to print out one register.
(m68hc11_print_registers_info): New function to print registers.
(show_regs): Deprecate and use the above.
(m68hc11_gdbarch_init): Install the print_registers_info.
* h8300-tdep.c (h8300_extract_return_value): Teach it how to
handle 8-bit returns (long long).
(h8300h_extract_return_value): Ditto.
(h8300_gdbarch_init): Long long is 8 bytes, char is unsigned.
* gdbarch.c Include "gdb_obstack.h".
(struct gdbarch): Add an "obstack".
(alloc_gdbarch_data): Allocate the gdbarch data using
GDBARCH_OBSTACK_CALLOC.
(free_gdbarch_data): Delete function.
(gdbarch_obstack_zalloc): New function.
(gdbarch_free): Free the obstack, do not call free_gdbarch_data.
Assert that the architecture is not initialized.
(gdbarch_alloc): Allocate an obstack, allocate the architecture
vector from the obstack.
(alloc_gdbarch_data, init_gdbarch_swap): Allocate memory using the
architecture obstack.
(GDBARCH_OBSTACK_CALLOC, GDBARCH_OBSTACK_ZALLOC): Define.
(set_gdbarch_data): Assert that the data is not initialized.
(struct gdbarch_data): Delete member "free".
(register_gdbarch_data): Do not initialize "free".
* gdbarch.h, gdbarch.c: Re-generate.
* findvar.c (read_var_value): Remove case for thread local storage
variables. It is now entirely handled by the dwarf2 location
expression code.
* printcmd.c (address_info): Ditto.
* symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC
enumeration value.
(struct symbol): Remove objfile field, which was used by
LOC_THREAD_LOCAL_STATIC only.
* dwarf2read.c (decode_locdesc): Remove is_thread_local variable.
* dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about
usage of objfile pointer.
* dwarf2loc.c (locexpr_describe_location): Add case to handle
thread local variables.
Add include of objfiles.h.
* dwarf2expr.c (execute_stack_op): Add comments about thread local
storage variables.
* Makefile.in (dwarf2loc.o): Update dependencies.
regcache_cooked_read_unsigned instead of read_register.
(m68hc11_saved_pc_after_call): Likewise.
(m68hc11_pseudo_register_write): Use regcache_cooked_write_unsigned
instead of write_register.
(m68hc11_register_type): New function.
(m68hc11_register_virtual_type): Remove.
(m68hc11_store_return_value): Convert to use the regcache.
(m68hc11_extract_struct_value_address): Likewise.
(m68hc11_gdbarch_init): Remove deprecated ops for register to use
m68hc11_register_type; undeprecate store_return_value and
extract_struct_value_address.
* gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Delete method.
* gdbarch.h, gdbarch.c: Re-generate.
* i386-tdep.c (i386_gdbarch_init): Do not set
DWARF2_BUILD_FRAME_INFO.
* elfread.c (elf_symfile_read): Call dwarf2_build_frame_info
unconditionally.
* alpha-tdep.c (alpha_dwarf2_init_abi): Do not set
DWARF2_BUILD_FRAME_INFO.
* Makefile.in (x86-64-linux-nat.o): Update dependencies.
* x86-64-linux-nat.c (ps_get_thread_area): New function. Add
include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h.
(avr_frame_unwind_cache): Don't unwind FP for main.
Update a comment.
Save the computed prev_sp.
(avr_saved_regs_unwinder): Remove function.
(avr_frame_prev_register): Use PC unwind logic from
avr_saved_regs_unwinder, otherwise use trad_frame_prev_register.
should go thru sh_dsp_register_sim_regno, else the dsp regs
will not get the right values.
* sh-tdep.c (sh_sh4_register_convert_to_virtual): Substitute call to
deprecated_store_floating by call to store_typed_floating.
(sh_sh4_register_convert_to_raw): Substitute call to
deprecated_extract_floating by call to extract_typed_floating.
* sh-tdep.c (sh_gdbarch_init): Set double to 4 byte on sh2e and sh3e.
* sh-tdep.c: Substitute calls to REGISTER_RAW_SIZE by calls to
register_size and calls to REGISTER_VIRTUAL_TYPE by calls to
gdbarch_register_type in 32 bit code throughout. Avoid current_gdbarch
as possible.
(do_pseudo_register): Remove.
(sh_push_dummy_code): New function.
(sh64_store_struct_return): Rename from sh_store_struct_return.
Only called for sh64 now.
(sh_extract_struct_value_address): Regcache'ify.
(sh_push_dummy_call): Rename from sh_push_arguments. Regcache'ify
and accomodate new tasks.
(sh64_push_return_address): Rename from sh_push_return_address.
Only called for sh64 now.
(sh_default_extract_return_value): Rename from sh_extract_return_value.
Regcache'ify.
(sh3e_sh4_extract_return_value): Regcache'ify.
(sh_default_store_return_value): Ditto.
(sh3e_sh4_store_return_value): Ditto.
(sh_default_register_byte): Remove.
(sh_sh4_register_byte): Remove.
(sh_default_register_raw_size): Remove.
(sh_sh4_register_raw_size): Remove.
(sh_register_virtual_size): Remove.
(sh_sh3e_register_virtual_type): Remove.
(sh_sh3e_register_type): New function.
(sh_sh4_register_virtual_type): Remove.
(sh_sh4_register_type): New function.
(sh_default_register_virtual_type): Remove.
(sh_default_register_type): New function.
(do_fv_register_info): Add parameters to accomodate call from
sh_print_registers_info.
(do_dr_register_info): Ditto.
(sh_print_pseudo_register): Rename from sh_do_pseudo_register.
Add parameters to accomodate call from sh_print_registers_info.
(sh_do_fp_register): Ditto.
(sh64_do_pseudo_register): Call do_dr_register_info,
do_fv_register_info and sh_do_fp_register with default parameters.
(sh_do_register): Add parameters to accomodate call from
sh_print_registers_info.
(sh_print_register): Ditto.
(sh_print_registers_info): Rename from sh_do_registers_info.
Add parameters to be used as gdbarch_print_registers_info
implementation. Accomodate removed do_pseudo_register function
pointer.
(sh_compact_do_registers_info): Accomodate removed do_pseudo_register
function pointer. Call sh_print_register with default parameters.
(sh64_do_registers_info): Call sh_print_registers_info instead of
sh_do_registers_info.
(sh_gdbarch_init): Rearrange to cleanup and to allow easier
detection of deprecated vs. non-deprecated functionality.
Rename sh_call_dummy_words to sh64_call_dummy_words. Remove
function pointer assignments by direct function calls.
* frame.c (get_prev_frame): Move disabled inside_entry_func to
before code inhibiting repeated unwind attempts. Add to
commentary on that test's problems.
* blockframe.c (inside_main_func): Look for "main" in the minimal
symbol table.
* d10v-tdep.c (d10v_frame_this_id): Delete check that frames are
identical.
Index: testsuite/ChangeLog
2003-07-15 Andrew Cagney <cagney@redhat.com>
* gdb.asm/asm-source.exp: Do not allow "start" in the backtrace.
* complaints.c (struct explanation): Define.
(struct complaints): Change type of "explanation" to "struct
explanation".
(symfile_explanations): Convert to a "struct explanation" table.
(vcomplaint): Update.
* configure.tgt: Add x86_64-*-freebsd*.
* Makefile.in (amd64fbsd-nat.o, amd64fbsd-tdep.o): New targets.
* amd64fbsd-nat.c: New file.
* amd64fbsd-tdep.c: New file.
* config/i386/nm-fbsd64.h: New file.
* config/i386/fbsd64.mh: New file.
* config/i386/fbsd64.mt: New file.
`sc_regs_offset' and `sc_fpregs_offset'.
* alpha-tdep.c (SIGFRAME_PC_OFF, SIGFRAME_REGSAVE_OFF,
SIGFRAME_FPREGSAVE_OFF): Remove defines.
(alpha_sigtramp_register_address): Rewrite to use new members of
`struct gdbarch_tdep'.
(alpha_gdbarch_init): Initialize new members of struct
gdbarch_tdep'.
* alphafbsd-tdep.c (alphafbsd_use_struct_convention): Use
ALPHA_REGISTER_SIZE instead of DEPRECATED_REGISTER_SIZE.
(alphafbsd_sigtramp_start, alphafbsd_sigtramp_end): Nre variables.
(alphafbsd_pc_in_sigtramp): Implement.
(alphafbsd_sigtramp_offset): New function.
(alphafbsd_sigcontext_addr): New function.
(alphafbsd_init_abi): Initialize signal trampoline related members
of `struct gdbarch_tdep'.
(_initialize_alphafbsd_tdep): Add prototype.
* coff-solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Default to a
null string instead of a null pointer.
* solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Ditto.
(Also updated copyrights)
(struct gdbarch_tdep): Add struct_return.
* m68k-tdep.c (m68k_push_dummy_call): Non-scalars bigger than 4
bytes are padded to the right, not to the left. Pass struct value
address in register %a1, not on stack.
(m68k_use_struct_convention): New function.
(m68k_gdbarch_init): Set use_struct_convention. Initialize
struct_return in tdep to pcc_struct_return.
* m68klinux-tdep.c (m68k_linux_init_abi): Set struct_return to
reg_struct_return.
* gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Add
predicate.
* gdbarch.h, gdbarch.c: Re-generate.
* regcache.c (init_regcache_descr): Use legacy code when either
REGISTER_BYTE or REGISTER_RAW_SIZE is set.
'stack_bought_valid'.
(s390_get_frame_info): Set fextra_info->stack_bought_valid if we
initialize fextra_info->stack_bought.
(s390_frameless_function_invocation): Don't trust the value of
fextra_info_ptr->stack_bought unless
fextra_info->stack_bought_valid is set.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
former ia64_push_arguments and ia64_push_return_address, and use
regcache functions instead of read/write_register.
(ia64_gdbarch_init): Set push_dummy_call instead of
deprecated_push_arguments and deprecated_push_return_address.
* trad-frame.h: Update comments, a -1 .addr is reserved.
(trad_frame_value_p, trad_frame_addr_p): Declare.
(trad_frame_reg_p): Declare.
(trad_frame_set_value): Rename trad_frame_register_value.
(trad_frame_set_unknown): Declare.
* trad-frame.c (trad_frame_realreg_p): New function.
(trad_frame_addr_p, trad_frame_value_p): New function.
(trad_frame_set_unknown): New function.
(trad_frame_alloc_saved_regs): Initialize .addr to -1, not zero.
(trad_frame_prev_register): Use trad_frame_realreg_p,
trad_frame_addr_p and trad_frame_value_p.
(trad_frame_set_value): Rename trad_frame_register_value.
* d10v-tdep.c (d10v_frame_unwind_cache): Use trad_frame_addr_p
and trad_frame_set_value.
Gerhard Tonn) for argument passing on the S/390 and S/390x:
* s390-tdep.c (S390_STACK_FRAME_OVERHEAD): This is always space
for 16 registers, and then 32 more bytes.
(S390_STACK_PARAMETER_ALIGNMENT, S390_NUM_FP_PARAMETER_REGISTERS):
New macros.
(is_double_arg): The s390x doesn't handle DOUBLE_ARGS specially.
Move up in the file, since it's now used by is_simple_arg.
(is_simple_arg): Don't assume registers are four bytes long.
Exclude all double arguments. Extended floats are not simple
args.
(is_power_of_two): New function.
(pass_by_copy_ref): Call is_power_of_two, and check that the
length fits in a register, rather than listing all the acceptable
sizes. Extended floats are not passed by reference.
(s390_push_arguments): Don't assume registers are four bytes long.
Reserve an argument register to point to the buffer for structures
returned by value. Use S390_NUM_FP_PARAMETER_REGISTERS and
S390_STACK_FRAME_OVERHEAD.
* remote.c (remote_write_bytes): Explicitly compute and then use
the payload size. Update comments to reflect. Fixes problem of
GDB not sending small packets as found by Fred Fish.
* m68hc11-tdep.c (m68hc11_call_dummy_address): Delete function.
(m68hc11_gdbarch_init): Do not set call_dummy_address.
* avr-tdep.c (avr_call_dummy_address): Delete function.
(avr_gdbarch_init): Do not set call_dummy_address.
* symfile.c (syms_from_objfile): Move variables to inner block.
Move the checks for the non-mainline case a bit earlier to avoid
doing some useless computations.
* utils.c (internal_vproblem): Print the problem to a reason
buffer and then pass to query. Make the msg variable more local.
VS: ----------------------------------------------------------------------
of SSE registers so that varargs functions work. Rework handling
of passing arguments on the stack.
(x86_64_store_return_value): Return double and float values in SSE
register.
argument of val_print.
* cp-valprint.c (cp_print_value): Don't add the offset parameter
to the address argument of baseclass_offset or target_read_memory.
Do add it to the argument of cp_print_value_fields.
* mips-tdep.c: Include "reggroups.h" and "sim-regno.h".
(mips_register_name): Return names for NUM_REGS..2*NUM_REGS
instead of 0..NUM_REGS.
(mips_register_reggroup_p): New function.
(mips_pseudo_register_write): New function.
(mips_pseudo_register_read): New function.
(mips_register_raw_size): For NUM_REGS..2*NUM_REGS return the size
based on the register's type.
(read_next_frame_reg): Simplify. Assert that REGNO is a pseudo /
cooked.
(mips_get_saved_register): Simplify. Assert that REGNO is a
pseudo / cooked.
(mips_register_byte): New function. Use MIPS_REGISTER_BYTE.
(mips_register_type): Replace mips_register_virtual_type. Map
NUM_REGS..2*NUM_REGS onto 0..NUM_REGS. Use MIPS_REGISTER_TYPE
when available.
(read_next_frame_reg): Simplify, but handle SP_REGNUM. Assert
that the register is cooked / virtual.
(mips_frame_saved_pc): Fetch the cooked PC, and not the raw PC.
Only get the extra info when needed.
(set_reg_offset): Save the offset in NUM_REGS..2*NUM_REGS as well.
(mips32_heuristic_proc_desc): Fetch the cooked register.
(heuristic_proc_desc, mips_pop_frame, get_frame_pointer): Ditto.
(mips_init_extra_frame_info, get_frame_pointer): Ditto.
(mips_print_register): Use gdbarch_register_type, instead of
REGISTER_VIRTUAL_TYPE.
(print_gp_register_row): Use gdbarch_register_type, instead of
REGISTER_VIRTUAL_TYPE. Allow for a pseudo / cooked REGNUM.
(mips_print_registers_info): Assert REGNO is pseodo / cooked.
Print the pseudo / cooked registers.
(mips_print_registers_info): Assert REGNO is pseodo / cooked.
Print the pseudo / cooked registers.
(mips_xfer_register): Use regcache_cooked_read_part. Assert that
REG_NUM is pseudo / cooked.
(mips_o32_xfer_return_value): Xfer the pseudo / cooked register.
(mips_n32n64_xfer_return_value): Ditto.
(mips_stab_reg_to_regnum): Map onto NUM_REGS..2*NUM_REGS.
(mips_dwarf_dwarf2_ecoff_reg_to_regnum): Ditto.
(mips_register_sim_regno): New function.
(mips_gdbarch_init): Set deprecated_register_byte,
register_group_p, pseudo_register_write, pseudo_register_read,
register_sim_regno, and num_pseudo_regs. Set register_type,
instead of register_virtual_type.
* Makefile.in (mips-tdep.o): Update dependencies.
* config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Rename
REGISTER_VIRTUAL_TYPE.
* config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Ditto.
* config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Ditto.
* config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Rename REGISTER_BYTE.
* config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Ditto.
* config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Ditto.
* linux-nat.h: New file.
* linux-nat.c: Include linux-nat.h.
* lin-lwp.c: Include linux-nat.h.
Move struct lwp_info def to linux-nat.h.
* linux-proc.c: Include linux-nat.h.
(linux_make_note_section): Iterate over lwps instead of threads.
(linux_do_thread_registers): Use lwp instead of merged pid.
* config/nm-linux.h: Move miscelaneous def'ns to linux-nat.h.
* Makefile.in (lin-lwp.o, linux-proc.o, linux-nat.o):
Add dependency on linux_nat_h.
* frame.h (deprecated_get_next_frame_hack): Declare.
* frame.c (legacy_saved_regs_prev_register): Only require
DEPRECATED_FRAME_INIT_SAVED_REGS when it is needed. Assert that
there are always saved regs.
(deprecated_generic_get_saved_register): Do not require
DEPRECATED_FRAME_INIT_SAVED_REGS.
(legacy_get_prev_frame): Do not require DEPRECATED_FRAME_CHAIN,
use frame ID unwind instead.
(deprecated_get_next_frame_hack): New function.
(h8300_push_dummy_call): ...this function. Some minor optimization.
(h8300_push_return_address): Remove.
(h8300_gdbarch_init): Remove calls to
set_gdbarch_deprecated_dummy_write_sp,
set_gdbarch_deprecated_push_arguments and
set_gdbarch_deprecated_push_return_address.
Add call to set_gdbarch_push_dummy_call.
(E_PSEUDO_EXR_REGNUM): Ditto.
(h8300_is_argument_spill): Check for instructions moving argument
registers into safe registers.
(h8300_skip_prologue): Check for stm instruction to push registers
used for register variables onto stack.
(gdb_print_insn_h8300): Remove.
(h8300_examine_prologue): Add a comment.
(h8300_register_name): Take pseudo registers into account.
(h8300s_register_name): Ditto.
(h8300sx_register_name): Ditto.
(h8300_print_register): Ditto.
(h8300_print_registers_info): Define "nice" printing order.
(h8300_saved_pc_after_call): Take pseudo registers into account.
(h8300_register_type): Ditto. Return type used for remote connection
when requesting real CCR or EXR register, return actual type when
requesting pseudo CCR or EXR.
(h8300_pseudo_register_read): New function.
(h8300_pseudo_register_write): Ditto.
(h8300_dbg_reg_to_regnum): Ditto.
(h8300s_dbg_reg_to_regnum): Ditto.
(h8300_gdbarch_init): Call set_gdbarch_num_pseudo_regs,
set_gdbarch_ecoff_reg_to_regnum, set_gdbarch_dwarf_reg_to_regnum,
set_gdbarch_dwarf2_reg_to_regnum, set_gdbarch_stab_reg_to_regnum and
set_gdbarch_print_insn architecture dependent.
Call set_gdbarch_pseudo_register_read and
set_gdbarch_pseudo_register_write.
(_initialize_h8300_tdep): Remove assignment to deprecated_tm_print_insn.
(avr_register_raw_size): Delete function.
(avr_register_virtual_size): Delete function.
(avr_register_virtual_type): Delete function.
(avr_register_type): New function.
(avr_address_to_pointer): Remove unused code.
(avr_read_fp): Need to read FP as two separate bytes due to change to
avr_register_type() usage.
(avr_gdbarch_init): Don't set deprecated_register_size.
Don't set deprecated_register_bytes.
Don't set deprecated_register_byte.
Don't set deprecated_register_raw_size.
Don't set deprecated_max_register_raw_size.
Don't set deprecated_register_virtual_size.
Don't set deprecated_max_register_virtual_size.
Don't set deprecated_register_virtual_type.
Set register_type method.
Move floating-point code to new function in i387-tdep.c.
* i387-tdep.c (i387_register_to_value, i387_value_to_register):
New functions containing code moved here from i386-tdep.c.
* i387-tdep.h: Add opaque declaration for `struct type'.
(i387_register_to_value, i387_value_to_register): New prototypes.
* x86-64-tdep.c (x86_64_convert_register_p): New function.
(x86_64_init_abi): Set convert_register_p, register_to_value and
value_to_register here.
Mark Kettenis <kettenis@gnu.org>
* gdbarch.sh (CONVERT_REGISTER_P): Add "type" parameter.
(REGISTER_TO_VALUE, VALUE_TO_REGISTER): Replace raw buffer
parameter with "frame".
* gdbarch.h, gdbarch.c: Re-generate.
* frame.h (put_frame_register): Declare.
* frame.c (put_frame_register): New function.
* arch-utils.c (legacy_convert_register_p): Add "type" parameter.
(legacy_register_to_value): Rewrite, use "frame" to get the
register value.
(legacy_value_to_register): Rewrite, use "frame" to find the
register's location before storing.
* arch-utils.h (legacy_convert_register_p): Update.
(legacy_register_to_value, legacy_value_to_register): Update.
* findvar.c (value_from_register): Rewrite, eliminate use of
REGISTER_CONVERT_TO_TYPE, pass "type" to CONVERT_REGISTER_P, pass
"frame" to REGISTER_TO_VALUE.
* valops.c (value_assign): Move the CONVERT_REGISTER code to the
lval_reg_frame_relative + lval_register branch of the switch. Do
not use REGISTER_CONVERT_FROM_TYPE. Use put_frame_register.
* i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM,
I386_EDI_REGNUM): New defines.
(i386_next_regnum, i386_convert_register_p,
i386_register_to_value, i386_value_to_register): New functions.
(i386_register_convertible, i386_register_convert_to_virtual,
i386_convert_to_raw): Remove functions.
(i386_gdbarch_init): Set convert_register_p, register_to_value and
value_to_register instead of register_convertible,
register_convert_to_virtual and register_convert_to_raw.
* mips-tdep.c (mips_convert_register_p): New function.
(mips_value_to_register): Replace mips_register_convert_from_type.
(mips_register_to_value): Replace mips_register_convert_to_type.
(mips_gdbarch_init): Set conver_register_p, value_to_register and
register_to_value.
* alpha-tdep.c (alpha_convert_register_p): Update.
(alpha_value_to_register): Update, store the register.
(alpha_register_to_value): Update, fetch the register.
(avr_gdbarch_init): Remove avr_call_dummy_words variable.
Don't set deprecated_call_dummy_words.
Remove commented out set_gdbarch_believe_pcc_promotion() call.
Don't set remote_translate_xfer_address.
(avr_io_reg_read_command): Remove commented out debug printf.
Wrap a long line.
* infcall.c (call_function_by_hand): When UNWIND_DUMMY_ID is
available, do not use the FP register, and always save the TOS.
* dummy-frame.c (dummy_frame_this_id): Do not assert
SAVE_DUMMY_FRAME_TOS.
* i386-tdep.c (i386_save_dummy_frame_tos): Delete function.
(i386_gdbarch_init): Do not set save_dummy_frame_tos.
(i386_push_dummy_call): Add 8 to the returned SP.
* frame.c (legacy_frame_p): Do not require SAVE_DUMMY_FRAME_TOS.
* d10v-tdep.c (d10v_unwind_dummy_id): Use d10v_unwind_sp.
(d10v_gdbarch_init): Do not set save_dummy_frame_tos.
* x86-64-tdep.c (x86_64_save_dummy_frame_tos): Delete function.
(x86_64_push_dummy_call): Return "sp + 16".
(x86_64_init_abi): Do not set save_dummy_frame_tos.
* alpha-tdep.c (alpha_gdbarch_init): Do not set
save_dummy_frame_tos.
(avr_pointer_to_address): Shift code addrs left 1 bit.
(avr_convert_from_func_ptr_addr): Delete function since operation is
better handled by avr_address_to_pointer and avr_pointer_to_address.
(avr_gdbarch_init): Don't set convert_from_func_ptr_add method.
indicate registers used for return values.
(struct frame_extra_info): Drop args_pointer and locals_pointer.
(h8300_examine_prologue): Remove initializing dropped frame_extra_info
members.
(h8300_init_extra_frame_info): Ditto.
(h8300_frame_locals_address): Removed.
(h8300_frame_args_address): Removed.
(h8300_extract_return_value): Use new regcache structure. Only care
for 16 bit CPUs.
(h8300h_extract_return_value): Same function for 32 bit CPUs.
(h8300_store_return_value): Use new regcache structure. Only care
for 16 bit CPUs.
(h8300h_store_return_value): Same function for 32 bit CPUs.
(h8300_store_struct_return): Removed.
(h8300_extract_struct_value_address): Use new regcache structure.
(h8300h_extract_struct_value_address): Removed.
(h8300_push_dummy_code): New function.
(h8300_gdbarch_init): Slightly rearranged to stress deprecated calls.
Remove call_dummy_words. Call set_gdbarch_extract_return_value and
set_gdbarch_store_return_value architecture dependent.
Call set_gdbarch_push_dummy_code and
set_gdbarch_extract_struct_value_address.
Remove calls to set_gdbarch_frame_args_address,
set_gdbarch_frame_locals_address,
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_extract_struct_value_address,
set_gdbarch_deprecated_call_dummy_words and
set_gdbarch_deprecated_sizeof_call_dummy_words.
(h8300h_register_byte): Remove.
(h8300_register_virtual_type): Remove. Substitute by...
(h8300_register_type): New function.
(h8300_extract_struct_value_address): Drop usage of h8300_register_byte.
(h8300h_extract_struct_value_address): Ditto.
(h8300_gdbarch_init): Drop calls to
set_gdbarch_deprecated_register_byte and
set_gdbarch_deprecated_register_virtual_type.
Add call to set_gdbarch_register_type.
* ppc-linux-tdep.c (insn_d, insn_ds, insn_xfx, read_insn, struct
insn_pattern, insns_match_pattern, d_field, ds_field): New
functions, macros, and types for working with PPC instructions.
(ppc64_standard_linkage, PPC64_STANDARD_LINKAGE_LEN,
ppc64_in_solib_call_trampoline, ppc64_standard_linkage_target,
ppc64_skip_trampoline_code): New functions, variables, and macros
for recognizing and skipping linkage functions.
(ppc_linux_init_abi): Use ppc64_in_solib_call_trampoline and
ppc64_skip_trampoline_code for the 64-bit PowerPC Linux ABI.
powerpc64-*-linux, selecting powerpc/ppc64-linux.mh and
powerpc/linux.mt.
* config/powerpc/ppc64-linux.mh, config/powerpc/nm-ppc64-linux.mh:
New files.
* wince.c: Include "mips-tdep.h".
* mips-tdep.h (mips_next_pc): Declare.
* mcore-tdep.c: Make more local functions static.
* Makefile.in (wince.o): Update dependencies.
substitute by NUM_REGS throughout.
(h8300_register_name): Only care for H8/300 and H8/300H registers.
(h8300s_register_name): New function for H8S registers.
(h8300sx_register_name): Ditto for H8SX registers.
(h8300_print_register): Revise register printing, avoid depending
on 32 bit long.
(h8300_register_byte); Only care for H8/300 registers.
(h8300h_register_byte): New function for any other architecture.
(h8300_register_raw_size): Remove.
(h8300_register_virtual_type): Revise to return actually useful
type.
(h8300_extract_struct_value_address): Only care for H8/300 registers.
(h8300h_extract_struct_value_address): New function for any other
architecture.
(h8300_gdbarch_init): Add h8300sxn. Call set_gdbarch_num_regs,
set_gdbarch_register_name, set_gdbarch_register_byte,
set_gdbarch_ptr_bit and set_gdbarch_addr_bit architecture dependent.
Remove calls to set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_bytes, set_gdbarch_register_raw_size,
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_register_virtual_size and
set_gdbarch_deprecated_max_register_virtual_size entirely.
Call set_gdbarch_long_long_bit, set_gdbarch_double_bit and
set_gdbarch_long_double_bit.
* doublest.c (convert_doublest_to_floatformat): When dealing
with the implied integer bit, only alter mant_bits if we are
processing a full 32 bits of mantissa.
* dictionary.h: New.
* dictionary.c: New.
* block.h: Add opaque declaration for struct dictionary.
(struct block): Add 'dict' member; delete 'hashtable', 'nsyms',
'sym' members.
(BLOCK_DICT): New macro.
Delete macros BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM,
BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE,
BLOCK_SHOULD_SORT.
(ALL_BLOCK_SYMBOLS): Update definition.
* Makefile.in (SFILES): Add dictionary.c.
(dictionary_h): New.
(COMMON_OBS): Add dictionary.o.
(dictionary.o): New.
(ada-lang.o): Depend on dictionary_h.
(buildsym.o, coffread.o, jv-lang.o, mdebugread.o, objfiles.o)
(stack.o, symmisc.o, symtab.o, tracepoint.o, valops.o)
(mi-cmd-stack.o): Ditto.
(gdbtk-cmds.o): Update dependencies.
(gdbtk-stack.o): Ditto.
* ada-lang.c: Include dictionary.h.
(symtab_for_sym): Update uses of ALL_BLOCK_SYMBOLS.
(fill_in_ada_prototype, debug_print_block): Ditto.
(ada_add_block_symbols): Update uses of ALL_BLOCK_SYMBOLS; replace
explicit iteration by use of ALL_BLOCK_SYMBOLS. Delete variable
'is_sorted'.
* mdebugread.c: Include dictionary.h.
(struct parse_stack): Delete 'maxsyms' member.
(parse_symbol): Update calls to new_block. Delete calls to
shrink_block. Use dictionary methods.
(psymtab_to_symtab_1): Delete calls to sort_symtab_syms.
Update calls to new_symtab. Don't maintain maxsyms data.
(mylookup_symbol): Update use of ALL_BLOCK_SYMBOLS.
(add_symbol): Just call dict_add_symbol.
(new_symtab): Delete 'maxsyms' argument.
(new_symtab): Update calls to new_block.
(new_block): Delete 'maxsyms' argument; add 'function' argument.
(shrink_block): Delete function.
(fixup_sigtramp): Update call to new_block. Add symbol via
dict_add_symbol.
* jv-lang.c: Include dictionary.h.
(get_java_class_symtab): Set the BLOCK_DICT of the blocks
appropriately. Set class_symtab->free_func. Make sure the
blockvector is big enough to hold two blocks.
(add_class_symtab_symbol): Use dictionary methods.
(free_class_block): New function.
(type_from_class): Replace explicit iteration by
ALL_BLOCK_SYMBOLS.
* symtab.h (struct symtab): Replace 'free_ptr' method by
'free_func'.
* dwarf2read.c (psymtab_to_symtab_1): Delete call to
sort_symtab_syms.
* dwarfread.c (psymtab_to_symtab_1): Delete call to
sort_symtab_syms.
* coffread.c (coff_symfile_read): Delete call to sort_symtab_syms.
Include dictionary.h.
(patch_opaque_types): Update use of ALL_BLOCK_SYMBOLS.
* dbxread.c (dbx_psymtab_to_symtab_1): Delete call to
sort_symtab_syms.
* objfiles.c: Include dictionary.h.
(objfile_relocate): Update use of ALL_BLOCK_SYMBOLS.
* buildsym.c: Include dictionary.h.
(finish_block): Use dictionary methods.
(end_symtab): Set free_func to NULL, not free_ptr.
* tracepoint.c: Include dictionary.h.
(add_local_symbols): Update use of ALL_BLOCK_SYMBOLS.
(scope_info): Ditto.
* stack.c: Include dictionary.h.
(print_block_frame_locals): Update use of ALL_BLOCK_SYMBOLS.
(print_block_frame_labels, print_frame_arg_vars)
(print_frame_args): Ditto.
* symmisc.c (free_symtab_block): Use dictionary methods.
(dump_symtab): Ditto.
(free_symtab): Replace use of 'free_ptr' by 'free_func'.
Include dictionary.h.
* symfile.h: Delete declarations of sort_block_syms,
sort_symtab_syms.
* symfile.c (sort_block_syms): Delete.
(sort_symtab_syms): Delete.
* symtab.c: Include dictionary.h.
(lookup_block_symbol): Use dictionary iterators.
(find_pc_sect_symtab): Update use of ALL_BLOCK_SYMBOLS.
(search_symbols, make_symbol_completion_list): Ditto.
(make_symbol_overload_list): Ditto.
* valops.c (value_of_local): Use dict_empty.
Include dictionary.h.
2003-06-11 David Carlton <carlton@bactrian.org>
* generic/gdbtk-stack.c: Include dictionary.h.
(gdb_block_vars): Update use of ALL_BLOCK_SYMBOLS.
(gdb_get_blocks, gdb_get_vars_command): Ditto.
* generic/gdbtk-cmds.c: Include dictionary.h.
(gdb_listfuncs): Update use of ALL_BLOCK_SYMBOLS.
2003-06-11 David Carlton <carlton@bactrian.org>
* mi-cmd-stack.c: Include dictionary.h.
(list_args_or_locals): Update use of ALL_BLOCK_SYMBOLS.
* remote-fileio.h (REMOTE_FILEIO_H): Replace FILEIO_H.
* Makefile.in (remote-fileio.o): Update dependencies.
* remote-fileio.c: Include "gdb_wait.h" and "gdb_stat.h". Do not
include <setjmp.h>, or <sys/types.h> conditional on USG.
(remote_fio_jmp_buf): Delete global variable.
* remote-fileio.c: New file implementing the remote File-I/O protocol.
* remote-fileio.h: New header file defining remote File-I/O interface.
* remote.c (remote_write_bytes, remote_read_bytes): Remove
static storage class.
(remote_wait, remote_async_wait): Call remote_fileio_request() on
'F' packet.
(_initialize_remote): Call initialize_remote_fileio().
* remote.h: Declare remote_write_bytes() and remote_read_bytes().
* Makefile.in (REMOTE_OBS): Add remote-fileio.o
(SFILES): Add remote-fileio.c.
Add dependencies for building remote-fileio.o. Add remote-fileio.h to
dependencies for building remote.o.
* defs.h: Declare gdb_stdin, gdb_stdtargerr and gdb_stdtargin.
* main.c: New ui_file gdb_stdin, gdb_stdtargerr and gdb_stdtargin.
(captured_main): Initialize new ui_files.
* ui-file.c: Add read and fgets input functions.
(ui_file_new): set ui_file_fputs and ui_file_read to null functions.
(null_file_read): New function.
(ui_file_read): New function.
(set_ui_file_read): New function.
(stdio_file_read): New function.
* ui-file.h: New type ui_file_read_ftype.
(set_ui_file_read): Declare.
(ui_file_read): Declare.
* vax-tdep.c (vax_frame_locals_address): Delete function.
(vax_gdbarch_init): Do not set frame_locals_address.
* m68hc11-tdep.c (m68hc11_frame_locals_address): Delete function.
(m68hc11_gdbarch_init): Do not set frame_locals_address.
* s390-tdep.c (s390_frame_args_address): Delete function.
(s390_gdbarch_init): Do not set frame_args_address or
frame_locals_address.
* ns32k-tdep.c (ns32k_frame_locals_address): Delete.
(ns32k_gdbarch_init): Do not set frame_locals_address.
* hppa-tdep.c (hppa_frame_args_address): Delete function.
(hppa_frame_locals_address): Delete function.
(hppa_gdbarch_init): Do not set frame_args_address, or
frame_locals_address.
* arm-tdep.c (arm_frame_args_address): Delete.
(arm_frame_locals_address): Delete.
(arm_gdbarch_init): Do not set frame_args_address, or
frame_locals_address.
* printcmd.c (print_frame_nameless_args): Moved to "stack.c".
(print_frame_args): Moved to "stack.c".
* stack.c: Include "gdb_assert.h".
(print_frame_nameless_args): Moved from "printcmd.c", made static.
(print_frame_args): Moved from "printcmd.c".
* frame.h (print_frame_args): Delete declaration.
* Makefile.in (stack.o): Update dependencies.
(OBJC_FETCH_POINTER_ARGUMENT): Shorthand macro for
using FETCH_POINTER_ARGUMENT with Objective-C method arguments.
(find_implementation, resolve_msgsend, resolve_msgsend_stret,
resolve_msgsend_super, resolve_msgsend_super_stret):
Use it.