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.
* gdb.base/store.exp: Test longest and doublest. Test all
parameters. Weaken return statement match.
* gdb.base/store.c: Add longest and doublest - aka long long and
long double functions. Put all parameters into local register
variables. Use negative values.
(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.
* gdb.base/fileio.c: Include <errno.h>, and <sys/wait.h>. Gag
-Wformat errors. Add lost line. Use WEXITSTATUS to get system
exit status.
* gdb.base/fileio.exp: Disable target when nointerrupts and
noinferiorio, instead of limiting it to remote. Use remote_exec
instead of system.
* 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.
* config/powerpc/tm-linux.h (SKIP_TRAMPOLINE_CODE): Remove the
other #definition of this.
(ppc_linux_skip_trampoline_code): Remove declaration.
* ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Make this
static.
(ppc_linux_init_abi): Register it as the skip_trampoline_code
method for GDBARCH.
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.
* dwarf2-frame.c (dwarf2_frame_cache): Add comments on PC_REGNUM.
Assert that PC_REGNUM is valid.
(dwarf2_frame_prev_register): Add comments on SP_REGNUM.
* gdbarch.sh (TARGET_READ_SP): Add predicate, delete default.
* gdbarch.h, gdbarch.c: Regenerate.
* mn10300-tdep.c: Include "gdb_assert.h".
(mn10300_read_fp): New function.
(mn10300_gdbarch_init): Set deprecated_target_read_fp to
mn10300_read_fp. Do not set read_sp to generic_target_read_sp.
* ia64-tdep.c: Include "gdb_assert.h".
(ia64_read_fp): New function.
(ia64_gdbarch_init): Set deprecated_target_read_fp to
ia64_read_sp. Do not set read_sp to generic_target_read_sp.
* regcache.c (generic_target_read_sp): Delete function.
(read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register.
* inferior.h (generic_target_read_sp): Delete declaration.
* frv-tdep.c (frv_gdbarch_init): Do not set read_sp to
generic_target_read_sp.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
* sparc-tdep.c (sparc_gdbarch_init): Ditto
* sh-tdep.c (sh_gdbarch_init): Ditto.
* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
* Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies.
* elfread.c (elf_symtab_read): Replace "special_local_sym_p" and
"index" with "special_local_sect". Use strcmp instead of STREQ.
Append period to coments.
pc_in_sigtramp multiarch method.
(hppa_hpux_som_init_abi): Use it.
(hppa_hpux_elf_init_abi): Likewise.
* config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Remove, now that this
macro has been multiarched.
* config/pa/tm-hppa64.h (PC_IN_SIGTRAMP): Temporarily set this
macro here, as hppa64 isn't multiarched yet.
* thread-db.c (check_event): For create/death event breakpoints,
loop through all messages to ensure that we read the message
corresponding to the breakpoint we are at.
(read_encoded_value): Handle DW_EH_PE_datarel encoding.
(dwarf2_build_frame_info): Set base for DW_EH_PE_datarel encodings
when handling .eh_frame sections.
* acconfig.h: Add HAVE_TKILL_SYSCALL definition check.
* config.in: Regenerated.
* configure.in: Add test for syscall function and check for
__NR_tkill macro in <syscall.h> to set HAVE_TKILL_SYSCALL.
* configure: Regenerated.
* lin-lwp.c [HAVE_TKILL_SYSCALL]: Include <unistd.h> and
<sys/syscall.h>.
(kill_lwp): New function that uses tkill syscall or
uses kill, depending on whether threading model is nptl or not.
All callers of kill() changed to use kill_lwp().
(lin_lwp_wait): Make special check when WIFEXITED occurs to
see if all threads have already exited in the nptl model.
(stop_and_resume_callback): New callback function used by the
lin_lwp_wait thread exit handling code.
(stop_wait_callback): Check for threads already having exited and
delete such threads fromt the lwp list when discovered.
(stop_callback): Don't assert retcode of kill call.
Roland McGrath <roland@redhat.com>
* i386-linux-nat.c (ps_get_thread_area): New function needed by
nptl libthread_db.
* sparc-tdep.c (sparc_convert_to_virtual): Delete function.
(sparc_convert_to_raw): Delete function.
(sparc_gdbarch_init): Do not set register_convert_to_raw or
register_convert_to_virtual.
elements of gregset_t are 64 bits each, but access registers
are still 32 bits, so they're packed two per gregset_t
element. Unpack/pack them properly.
(alpha_convert_flt_dbl, alpha_convert_dbl_flt): Remove.
(alpha_lds, alpha_sts): New.
(alpha_convert_register_p): Change from _register_convertible.
(alpha_register_to_value): Change from _convert_to_virtual;
restructure and fail for type sizes other than 4 or 8.
(alpha_value_to_register): Similarly.
(alpha_extract_return_value): Use alpha_sts.
(alpha_store_return_value): Use alpha_lds.
(alpha_gdbarch_init): Update hooks.
deprecated interfaces; use ALPHA_REGISTER_SIZE instead of gdbarch
macros where appropriate.
(alpha_register_convert_to_raw): Similarly. Use unpack_long.
(alpha_convert_flt_dbl, alpha_convert_dbl_flt): New.
* main.c (captured_main): Set it.
* top.c (lim_at_start): Define.
(command_loop): Use it instead of &environ.
* event-top.c (command_handler): Likewise.
* gdb.base/selftest.exp: Next over lim_at_start initialization.
* gdbarch.[ch]: Regenerate.
* hppa-tdep.c (hppa_fetch_pointer_argument): New function.
(hppa_gdbarch_init): Set it in the gdbarch vector.
* i386-tdep.c (i386_fetch_pointer_argument): New
(i386_gdbarch_init): Set it into gdbarch.
* rs6000-tdep.c (rs6000_fetch_pointer_argument): New.
(rs6000_gdbarch_init): Set it in gdbarch.
* sparc-tdep.c (sparc_fetch_pointer_argument): New
(sparc_gdbarch_init): Set it in gdbarch.
* infcall.c (call_function_by_hand): Update comment on
DEPRECATED_DUMMY_WRITE_SP.
* mips-tdep.c (mips_gdbarch_init): Do not set
deprecated_dummy_write_sp.
(mips_eabi_push_dummy_call): Set the SP register.
(mips_o64_push_dummy_call): Set the SP register.
(mips_o32_push_dummy_call): Set the SP register.
(mips_n32n64_push_dummy_call): Set the SP register.
* infcall.c (call_function_by_hand): Update comment on
DEPRECATED_DUMMY_WRITE_SP.
* mips-tdep.c (mips_gdbarch_init): Do not set
deprecated_dummy_write_sp.
(mips_eabi_push_dummy_call): Set the SP register.
(mips_o64_push_dummy_call): Set the SP register.
(mips_o32_push_dummy_call): Set the SP register.
(mips_n32n64_push_dummy_call): Set the SP register.
alpha_push_arguments. Don't dump argument register data to
the target stack. Fix float and 128-bit long double semantics.
Store $t12 and $ra as specified by the ABI. Use regcache everywhere.
(alpha_fix_call_dummy): Remove.
(alpha_call_dummy_words): Remove.
(alpha_gdbarch_init): Kill deprecated call hooks; add push_dummy_call.
(x86_64_sigtramp_frame_cache): Use `sc_reg_offset' to find saved
registers.
* x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): New variable.
(x86_64_linux_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
* i386-tdep.h (struct gdbarch_tdep): Add members `sc_reg_offset'
and `sc_num_regs'.
(I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM,
I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM,
I386_ST0_REGNUM): Move here from...
* i386-tdep.c: ... here.
(I386_NUM_SAVED_REGS): Define to I386_NUM_REGS.
(i386_sigtramp_frame_cache): Use `sc_reg_offset' to find saved
registers if possible.
(i386_gdbarch_init): Initialize TDEP->sc_reg_offset.
* i386bsd-tdep.c (i386bsd_sc_pc_offset, i386bsd_sc_sp_offset):
Remove variables.
(i386bsd_sc_reg_offset): New variable.
(i386bsd_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
(i386fbsd_sc_reg_offset): New variable.
(i386fbsdaout_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs.
(i386fbsd4_sc_pc_offset, i386fbsd4_sc_sp_offset): Remove
variables.
(i386fbsd4_sc_reg_offset): New variable.
(i3864bsd4_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
* i386-linux-tdep.c (i386_linux_sc_reg_offset): New variable.
(i386_linux_init_abi): Set TDEP->sc_reg_offset and TDEP->sc_num_regs.
* i386nbsd-tdep.c (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset):
Remove variables.
(i386nbsd_sc_reg_offset): New variable.
(i386nbsd_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
* i386obsd-tdep.c (i386obsd_sc_pc_offset, i386obsd_sc_sp_offset):
Remove variables.
(i386obsd_sc_reg_offset): New variable.
(i386obsd_init_abi): Initialize TDEP->sc_reg_offset and
TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
* i386bsd-nat.c (_initialize_i386bsd_nat): Adjust for changes in
i386bsd-tdep.c, i386nbsd-tdep.c and i386obsd-tdep.c. Add check
for frame pointer offset in `struct sigcontext'.
* mips-tdep.c (mips_gdbarch_init): Do not set the deprecated
architecture methods call_dummy_words, sizeof_call_dummy_words,
push_return_address, store_struct_return, and fix_call_dummy. Set
push_dummy_call instead of deprecated_push_arguments.
(mips_store_struct_return): Delete function.
(mips_fix_call_dummy): Delete function.
(mips_push_return_address): Delete function.
(mips_eabi_push_dummy_call): Replace mips_eabi_push_arguments, set
RA_REGNUM and T9_REGNUM.
(mips_n32n64_push_dummy_call): Ditto for
mips_n32n64_push_arguments.
(mips_o32_push_dummy_call): Ditto for mips_o32_push_arguments.
(mips_o64_push_dummy_call): Ditto for mips_o64_push_arguments.
(I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS): Remove
defenitions.
(IS_FP_REGNUM, IS_SSE_REGNUM): Remove definitions.
* i386-tdep.c: Mark functions that are 64-bit safe as such.
(I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM,
I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM,
I386_ST0_REGNUM): New defines.
(CODESTREAM_BUFSIZ, codestream_tell, codestream_peek,
codestream_get): Remove define.
(codestream_next_addr, condestream_addr, condestream_buf,
codestream_off, codestream_cnt): Remove variables.
(codestream_fill, codestream_seek, codestream_read): Remove
functions.
(i386_follow_jump): Rewrite to avoid usage of removed codestream
functionality.
(i386_get_frame_setup, i386_frameless_signal_p, i386_frame_chain,
i386_sigtramp_saved_pc, i386_sigtramp_saved_sp,
i386_frame_saved_pc, i386_saved_pc_after_call,
i386_frame_num_args, i386_frame_init_saved_regs,
i386_push_return_address, i386_do_pop_frame, i386_pop_frame,
i386_push_arguments): Remove functions.
(i386_skip_prologue): Rewrite to avoid usage of removed codestream
functionality. Use i386_analyze_prologue instead of
i386_get_frame_setup.
(I386_NUM_SAVED_REGS): New define.
(struct i386_frame_cache): New structure.
(i386_alloc_frame_cache, i386_analyze_struct_return,
i386_skip_probe, i386_analyze_frame_setup,
i386_analyze_register_saves, i386_analyze_prologue,
i386_unwind_pc, i386_frame_cache, i386_frame_this_id,
i386_frame_prev_register, i386_sigtramp_frame_cache,
i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register,
i386_frame_p, i386_sigtramp_frame_p, i386_frame_base_address,
i386_unwind_dummy_id, i386_save_dummy_tos, i386_push_dummy_call):
New functions.
(i386_frame_unwind, i386_sigtramp_frame_unwind, i386_frame_base):
New variables.
(LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): Define in terms of
I386_EAX_REGNUM and I386_EDX_REGNUM.
(i386_extract_return_value, i386_store_return_value): Use
I386_ST0_REGNUM where appropriate.
(i386_extract_struct_value_address): Rewrite to use extract_address.
(i386_svr4_pc_in_sigtramp): Add comment.
(i386_svr4_sigcontext_addr): Rewrite.
(i386_svr4_init_abi): Adjust TDEP->sc_pc_offset and
TDEP->sc_sp_offset.
(i386_gdbarch_init): Don't set deprecated_init_frame_pc. Set
sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum in terms
of new defines. Set push_dummy_call, don't set
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame. Don't set parm_boundary. Don't set
deprecated_frame_chain, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call. Set unwind_dummy_id,
save_dummy_frame_tos, unwind_pc. Call
frame_unwind_append_predicate and frame_base_set_default. Don't
set deprecated_dummy_write_pc. Don't set deprecated_fp_regnum.
Don't set frameless_function_invocation. Don't set
deprecated_register_bytes, deprecated_register_size,
deprecated_call_dummy_words and deprecated_sizeof_call_dummy.
* i386-linux-tdep.c: Fix formatting in some comments.
(LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0,
LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1,
LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2,
LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0,
LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1): Drop
redundant parentheses.
(I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): New define.
(i386_linux_sigcontext_addr): Use it. Rewrite.
(find_minsym_and_objfile): Change name of second argument.
(skip_gnu_resolver): Renamed from skip_hurd_resolver. All callers
changed. Use frame_pc_unwind instead of
DEPRECATED_SAVED_PC_AFTER_CALL.
(i386_linux_init_abi): Don't set deprecated_register_bytes.
* i386bsd-tdep.c (i386bsd_sigcontext_addr): Rewrite.
* i386-nto-tdep.c (i386nto_sigcontext_addr): Adapt for new frame
unwinder.
* i386-cygwin-tdep.c: Don't include "gdbcore.h", "frame.h" and
"dummy-frame.h".
(i386_cygwin_frame_chain_valid, i386_cygwin_frame_chain): Removed.
(_initialize_i386_cygwin_tdep): New prototype.
(i386_cygwin_init_abi): Don't set deprecated_frame_chain and
deprecated_frame_chain_valid.
* i386-sol2-tdep.c (i386_sol2_init_abi): Don't set
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
Rely on the SVR4 defaults.
* config/i386/i386sol2.mt (TDEPFILES): Remove i386bsd-tdep.o.
* Makefile.in (i386-tdep.o, i386-cygwin-tdep.o): Update dependencies.
* config/powerpc/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE,
SKIP_TRAMPOLINE_CODE): #undef these, so the gdbarch methods will
show through.
* ppc-linux-tdep.c (ppc_linux_init_abi): Register
IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE methods here,
giving the same effect as the #definitions above.
PTRACE_XFER_TYPE-sized chunks, not int-sized chunks. Otherwise,
if 'int' is smaller than PTRACE_XFER_TYPE, you end up throwing
away part of the register's value.
* gdb_assert.h (gdb_assert_fail): Provide different definitions
dependant on the availability of ASSERT_FUNCTION.
(ASSERT_FUNCTION): Do not define when there is no function name.
SPARC_O1_REGNUM): New defines.
(sparc32_extract_return_value): Rewrite to operate on a regcache.
(sparc32_store_return_value): New function.
(sparc_extract_struct_value_address): Rewrite to operate on a
regcache.
(sparc_gdbarch_init): Don't set
deprecated_extract_struct_value_address. Set
extract_struct_value_address instead. Don't set
deprecated_extract_return_value and deprecated_store_return_value
for 32-bit targets. Set extract_return_value and
store_return_value instead.
* config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE,
DEPRECTAED_EXTRACT_RETURN_VALUE,
DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Don't define these.
(STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE,
EXTRACT_STRUCT_VALUE_ADDRESS): Define these instead.
(sparc_store_return_value): Remove prototype.
(sparc32_store_return_value): New prototype.
(sparc32_extract_return_value, sparc_extract_struct_value_address):
Adjust prototypes.
Committed by Elena Zannoni <ezannoni@redhat.com>.
* coffread.c(coff_symtab_read): Do relocate static symbols from PE
files, don't relocate absolute symbols (and do use mst_abs).
* infptrace.c (detach): Call print_sys_errmsg rather than
perror_with_name to issue warning message when errno is non-zero
after calling ptrace detach.