* Makefile.in (gnu-v3-abi.o): Delete special rule.
(eval.o, gnu-v3-abi.o, ia64-tdep.o): Update.
* ada-valprint.c (ada_print_scalar): Update for new type codes.
* c-typeprint.c (c_print_type): Update for new type codes.
(c_type_print_varspec_prefix, c_type_print_varspec_suffix)
(c_type_print_base): Likewise.
(c_type_print_args): Rewrite.
* c-valprint.c (c_val_print): Update for new type codes. Remove
support for references to members. Treat methods like functions.
* cp-abi.c (cplus_print_method_ptr, cplus_method_ptr_size)
(cplus_make_method_ptr, cplus_method_ptr_to_value): New.
* cp-abi.h (cplus_print_method_ptr, cplus_method_ptr_size)
(cplus_make_method_ptr, cplus_method_ptr_to_value): New prototypes.
(struct cp_abi_ops): Add corresponding members.
* cp-valprint.c (cp_print_class_method): Delete.
(cp_find_class_member): New function.
(cp_print_class_member): Use it. Simplify support for bogus
member pointers.
* dwarf2read.c (quirk_gcc_member_function_pointer): Use
lookup_methodptr_type.
(read_tag_ptr_to_member_type): Likewise, and lookup_memberptr_type.
* eval.c (evaluate_subexp_standard): Implement EVAL_SKIP for
OP_SCOPE. Update call to value_aggregate_elt. Rewrite member
pointer support.
(evaluate_subexp_for_address): Handle OP_SCOPE explicitly. Handle
references returned by user defined operators.
* f-typeprint.c (f_print_type, f_type_print_varspec_prefix)
(f_type_print_varspec_suffix): Remove support for member pointers.
* gdbtypes.c (lookup_memberptr_type): Renamed from lookup_member_type
and adjusted.
(smash_to_memberptr_type): Likewise, from smash_to_member_type.
(lookup_methodptr_type): New.
(rank_one_type): Adjust for TYPE_CODE_MEMBERPTR.
(recursive_dump_type): Update for new types.
* gdbtypes.h (enum type_code): Replace TYPE_CODE_MEMBER with
TYPE_CODE_MEMBERPTR and TYPE_CODE_METHODPTR.
(lookup_memberptr_type, lookup_methodptr_type)
(smash_to_memberptr_type): New prototypes.
(smash_to_method_type): Formatting fix.
(lookup_member_type, smash_to_member_type): Delete prototypes.
* gnu-v3-abi.c (gnuv3_get_vtable, gnuv3_get_virtual_fn): New.
Do not rely on debug information for the vptr or the method's
enclosing type. Handle function descriptors for IA64.
(gnuv3_virtual_fn_field): Rewrite using the new functions.
(gnuv3_find_method_in, gnuv3_print_method_ptr)
(gnuv3_method_ptr_size, gnuv3_make_method_ptr)
(gnuv3_method_ptr_to_value): New.
(init_gnuv3_ops): Set new members of gnu_v3_abi_ops.
* hpread.c (hpread_type_lookup): Update for new types.
* infcall.c (value_arg_coerce): Likewise.
* m2-typeprint.c (m2_print_type): Remove explicit support
for member pointers.
* m2-valprint.c (m2_val_print): Likewise.
* p-typeprint.c (pascal_type_print_varspec_prefix)
(pascal_type_print_varspec_suffix, pascal_type_print_base): Likewise.
* p-valprint.c (pascal_val_print): Likewise.
(pascal_object_print_class_method, pascal_object_print_class_member):
Delete.
* p-lang.h (pascal_object_print_class_method)
(pascal_object_print_class_member): Delete prototypes.
* stabsread.c (read_type): Update for new types.
* typeprint.c (print_type_scalar): Likewise.
* valops.c (value_struct_elt_for_reference, value_namespace_elt)
(value_maybe_namespace_elt, value_aggregate_elt): Add want_address
argument. Construct a pointer to member if the address of a
function or data member is requested.
(value_cast_pointers): Don't modify the input value.
(value_cast): Adjust pointer to member handling for new types.
Allow null pointer to member constants. Don't modify the input
value.
(value_ind): Remove pointer to member check. Handle function
descriptors for function pointers.
(value_struct_elt, value_find_oload_method_list, check_field):
Remove pointer to member checks.
* value.c (unpack_long): Allow pointers to data members.
(value_from_longest): Allow member pointers.
* value.h (value_aggregate_elt): Add want_address.
* varobj.c (c_variable_editable): Remove check for members.
* gdbarch.sh: Add vtable_function_descriptors and vbit_in_delta.
* ia64-tdep.c (ia64_convert_from_func_ptr_addr): Handle descriptors
in virtual tables.
(ia64_gdbarch_init): Call set_gdbarch_vtable_function_descriptors.
* c-lang.h (cp_print_class_method): Delete prototype.
* arm-tdep.c (arm_gdbarch_init): Call set_gdbarch_vbit_in_delta.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* gdbarch.c, gdbarch.h: Regenerated.
* gdb.cp/classes.exp (test_pointers_to_class_members): Update expected
output. Test the types of members and member pointers.
* gdb.cp/inherit.exp (test_print_mi_member_types): Remove KFAILs for
gdb/2092.
* gdb.cp/member-ptr.exp: Search for a comment instead of a
statement. Enable for GCC. Update expected output for some tests
and add new tests. Remove obsolete GCC KFAILs. Allow GCC's class
layout.
* gdb.cp/member-ptr.cc (Padding, Padding::vspacer, Base, Base::get_x)
(Base::vget_base, Left, Left::vget, Right, Right::vget, Diamond)
(Diamond::vget_base): New.
(main): Add new tests.
* gdb.cp/printmethod.exp: Update expected output for member functions.
* gdb.cp/virtfunc.exp (test_virtual_calls): Add a KFAIL for
print pEe->D::vg().
libunwind_frame_prev_register to use a gdb_byte buffer and
extract_unsigned_integer.
(ia64_libunwind_sigtramp_frame_prev_register): Likewise.
* libunwind-frame.c (libunwind_frame_prev_register): Change type
of last argument to `gdb_byte *'
* libunwind-frame.h: Adjust declaration.
(alpha-linux-nat.o, sparc-linux-nat.o): New rules.
(amd64-linux-nat.o, arm-linux-nat.o, hppa-linux-nat.o)
(i386-linux-nat.o, ia64-linux-nat.o, linux-nat.o, m32r-linux-nat.o)
(m68klinux-nat.o, mips-linux-nat.o, ppc-linux-nat.o, s390-nat.o)
(sparc64-linux-nat.o): Update dependencies.
* alpha-linux-nat.c, sparc-linux-nat.c: New files.
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(amd64_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(amd64_linux_child_post_start_inferior): Renamed from
child_post_startup_inferior and made static. Call
super_post_startup_inferior.
(super_post_startup_inferior): New.
(_initialize_amd64_linux_nat): Set it. Call linux_target and
add_target.
* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(arm_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_arm_linux_nat): Add a prototype. Use linux_target and
add_target.
* hppa-linux-nat.c (hppa_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(hppa_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_hppa_linux_nat): New function.
* i386-linux-nat.c (i386_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(i386_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(i386_linux_resume): Renamed from child_resume and made static.
(i386_linux_child_post_start_inferior): Renamed from
child_post_startup_inferior and made static. Call
super_post_startup_inferior.
(super_post_startup_inferior): New.
(_initialize_i386_linux_nat): New function.
* i386-nat.c: Remove LINUX_CHILD_POST_STARTUP_INFERIOR #ifndef.
* ia64-linux-nat.c (ia64_linux_xfer_unwind_table): Remove.
(super_xfer_partial): New.
(ia64_linux_xfer_partial): New function. Use it.
(_initialize_ia64_linux_nat): New function.
* ia64-tdep.c (getunwind_table): Revert 2005-06-08 change; use
target_read_partial and document the problem.
* inf-ptrace.c (inf_ptrace_fetch_register): Use
CANNOT_FETCH_REGISTER. Fix some comments.
(inf_ptrace_store_register): Use CANNOT_STORE_REGISTER. Fix some
comments.
* linux-nat.c: Include "inf-ptrace.h" and "auxv.h".
(linux_ops, super_xfer_partial): New variables.
(linux_child_post_startup_inferior): Make static.
(child_post_startup_inferior): Delete.
(linux_nat_attach, linux_nat_detach, resume_callback)
(linux_nat_resume, linux_nat_wait, linux_nat_create_inferior)
(linux_nat_mourn_inferior): Use linux_ops instead of
deprecated_child_ops.
(child_wait): Do not depend on CHILD_WAIT.
(linux_nat_xfer_memory): Remove, replace by ...
(linux_nat_xfer_partial): ... this. Use linux_ops->to_xfer_partial
instead of linux_proc_xfer_memory and child_xfer_memory.
(linux_nat_fetch_registers, linux_nat_store_registers)
(linux_nat_child_post_startup_inferior): New functions.
(init_linux_nat_ops): Use the new functions.
(linux_proc_xfer_memory): Remove, replace by ...
(linux_proc_xfer_partial): ... this. Make static.
(linux_xfer_partial, linux_register_u_offset, linux_target): New
functions.
(_initialize_linux_nat): Do not modify deprecated_child_ops.
* linux-nat.h (linux_proc_xfer_memory): Remove prototype.
(struct mem_attrib, struct target_ops): Remove forward declarations.
(linux_child_post_startup_inferior): Remove prototype.
(linux_target): Add prototype.
* linux-thread-db.c (thread_db_xfer_memory): Remove, replace by ...
(thread_db_xfer_partial): ... this.
(init_thread_db_ops): Set to_xfer_partial instead of
deprecated_xfer_memory.
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(m32r_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_m32r_linux_nat): New function.
* m68klinux-nat.c (m68k_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(m68k_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(old_fetch_inferior_registers, old_store_inferior_registers): Made
static.
(_initialize_m68k_linux_nat): Use linux_target and add_target.
* mips-linux-nat.c (_initialize_mips_linux_nat): New function.
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(ppc_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_ppc_linux_nat): New function.
* s390-nat.c (s390_linux_fetch_inferior_registers): Renamed
from fetch_inferior_registers and made static.
(s390_linux_store_inferior_registers): Renamed from
store_inferior_registers and made static.
(_initialize_s390_nat): New function.
* sparc64-linux-nat.c (_initialize_sparc64_linux_nat): Use
linux_target and add_target.
* config/nm-linux.h: Don't include "auxv.h".
(struct target_waitstatus, child_wait, CHILD_WAIT)
(CHILD_PID_TO_EXEC_FILE, CHILD_INSERT_FORK_CATCHPOINT)
(CHILD_INSERT_VFORK_CATCHPOINT, CHILD_INSERT_EXEC_CATCHPOINT)
(CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH, CHILD_FOLLOW_FORK)
(DEPRECATED_KILL_INFERIOR, NATIVE_XFER_AUXV): Delete.
* config/alpha/alpha-linux.mh (NATDEPFILES): Replace infptrace.o
and inftarg.o with inf-ptrace.o and alpha-linux-nat.o.
* config/sparc/linux.mh (NATDEPFILES): Replace infptrace.o and
inftarg.o with sparc-linux-nat.o.
* config/sparc/linux64.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o.
* config/arm/linux.mh (NATDEPFILES): Replace infptrace.o and
inftarg.o with inf-ptrace.o.
* config/i386/linux.mh (NATDEPFILES): Likewise.
* config/i386/linux64.mh (NATDEPFILES): Likewise.
* config/ia64/linux.mh (NATDEPFILES): Likewise.
* config/m32r/linux.mh (NATDEPFILES): Likewise.
* config/m68k/linux.mh (NATDEPFILES): Likewise.
* config/mips/linux.mh (NATDEPFILES): Likewise.
* config/pa/linux.mh (NATDEPFILES): Likewise.
* config/powerpc/linux.mh (NATDEPFILES): Likewise.
* config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise.
* config/s390/s390.mh (NATDEPFILES): Likewise.
* config/i386/nm-linux.h (DEPRECATED_CHILD_RESUME): Don't define.
(LINUX_CHILD_POST_STARTUP_INFERIOR): Don't define.
* config/i386/nm-linux64.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
Don't define.
* config/ia64/nm-linux.h: Don't include "target.h".
(NATIVE_XFER_UNWIND_TABLE, ia64_linux_xfer_unwind_table): Remove.
* config/djgpp/fnchange.lst: Add alpha-linux-tdep.c,
alpha-linux-nat.c, sparc-linux-tdep.c, and sparc-linux-nat.c.
David Mosberger <davidm@hpl.hp.com>
* ia64-tdep.c (KERNEL_START): New macro.
(ia64_pseudo_register_read): Fix code to use libunwind to properly
get the rse registers.
(ia64_frame_this_id): Mark outermost frame with null frame id.
(ia64_sigtramp_frame_prev_register): Fix up debug output.
(ia64_access_rse_reg): New accessor function.
(ia64_access_mem): Add special logic for accessing the
kernel's unwind table.
(getunwind_table): Fix for corefiles.
(get_kernel_table): Fix to handle vDSO.
(ia64_libunwind_frame_this_id): Check for null frame id and
don't unwind past pc value of 0. Fix debugging output.
(ia64_libunwind_sigtramp_frame_this_id): New function.
(ia64_libunwind_sigtramp_frame_prev_register): Ditto.
(ia64_libunwind_sigtramp_frame_sniffer): Ditto.
(ia64_libunwind_sigtramp_frame_unwind): New unwinder.
(ia64_unw_rse_accessors): New libunwind accessors.
(ia64_libunwind_descr): Add ia64_unw_rse_accessors.
(ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Use
ia64_libunwind_sigtramp_frame_sniffer instead of
ia64_sigtramp_frame_sniffer.
* libunwind-frame.c (libunwind_frame_set_descr): Add
special register accessors.
(libunwind_frame_cache): Add special logic to check for
0 pc value. Check for a signal trampoline frame.
(libunwind_frame_this_id): Check if libunwind_frame_cache
returns NULL.
(libunwind_frame_prev_register): Check for NULL cache.
(libunwind_frame_base_address): Ditto.
(libunwind_sigtramp_frame_sniffer): New function.
(libunwind_get_reg_special): Ditto.
(libunwind_load): Add unw_is_signal_frame support.
* libunwind-frame.h (struct libunwind_descr): Add special_accessors
field.
(libunwind_sigtramp_frame_sniffer): New prototype.
(libunwind_get_reg_special): Ditto.
Committed by Kevin Buettner <kevinb@redhat.com>.
* ia64-tdep.h (ia64_write_pc, ia64_linux_write_pc): Declare.
* ia64-tdep.c (ia64_write_pc): Make it a global function.
(ia64_gdbarch_init): For Linux targets, use ia64_linux_write_pc()
instead of ia64_write_pc().
* ia64-linux-tdep.c (regcache.h): Include.
(ia64_linux_write_pc): New function.
* libunwind-frame.h (struct frame_id): Add opaque declaration,
move to start of file.
* i386-tdep.h (struct regcache): Add opaque declaration.
* config/ia64/nm-linux.h (struct target_ops): Add opaque
declaration.
* ia64-tdep.c (ia64_find_proc_info_x): Do not use __FUNCTION__.
(ia64_gdbarch_init): Use "GNU/Linux" in comment.
* win32-nat.c (fake_create_process): Use ISO C style definition.
* stabsread.c (define_symbol): Delete #ifndef
DEPRECATED_USE_REGISTER_NOT_ARG wrapper around
stabs_argument_has_addr call, macro never defined.
* libunwind-frame.c (unw_find_dyn_list_p): Replace most arguments
with a single unw_dyn_info_t pointer.
(libunwind_find_dyn_list): Likewise.
* libunwind-frame.h: Likewise.
* ia64-tdep.c (ia64_find_unwind_table): Switch to using
UNW_INFO_FORMAT_REMOTE_TABLE so we can avoid having to read in the
entire unwind-table at once. Support for this table format has
been added to libunwind v0.95.
(ia64_find_proc_info_x): Adjust for remote-unwind-table changes.
(ia64_get_dyn_info_list): Adjust for interface change for
libunwind_find_dyn_list().
* ia64-tdep.c (ia64_gdbarch_init): Set up the gdbarch long double
format to be the i387 extended float format which is used for
long doubles stored in memory.
* ia64-tdep.c (struct gdbarch_tdep): Remove os_ident field.
(ia64_gdbarch_init): Don't bother calculating the os.
Instead use the gdbarch_info struct and look at the osabi field.
Also use gdbarch_list_lookup_by_info() to look for a
candidate gdbarch.
* ia64-tdep.c: (ia64_frame_cache): Add new prev_cfm field.
(pseudo_regs): Add comment regarding register stack registers.
(ia64_alloc_frame_cache): Initialize new prev_cfm field to 0.
(floatformat_valid): New static routine.
(floatformat_ia64_ext): Add name field and set up is_valid routine
to floatformat_valid().
(examine_prologue): For the previous cfm, use
frame_unwind_register()
if the cfm is not stored in a register-stack register. Save the
previous cfm value in the prev_cfm field. Add debug output.
(ia64_frame_this_id): Use frame_id_build_special() to also register
the bsp. Add debug output.
(ia64_sigtramp_frame_this_id): Ditto.
(ia64_frame_prev_register): Look at cache saved_regs for a few more
registers and also add some checks for framelessness before accepting
current register values for fields such as return address. For cfm,
use the cached prev_cfm field if available. Add comment to explain
PSR logic. Add debug output.
(ia64_sigtramp_frame_init_saved_regs): Save the bsp and sp addresses
as part of initialization.
(ia64_sigtramp_frame_cache): Hard-code stack size as it can't be
calculated. Cache the bsp and cfm values.
(ia64_sigtramp_frame_prev_register): Add logic to this routine out
instead of using ia64_frame_prev_register() which doesn't expect most
registers to be saved. The saved values for bsp and sp
can be taken from the cache. Add debug output.
(ia64_push_dummy_call): Use frame_id_build_special() to also register
the bsp.
* ia64-tdep.c: Change all occurrences of
DEPRECATED_REGISTER_RAW_SIZE to use register_size() instead.
(ia64_frame_prev_register): Minor whitespace change.
* ia64-tdep.c (pseudo_regs): New enum that lists gr32-gr127, p0-p63,
bof, and nat0-nat127 as pseudo-registers.
(ia64_frame_cache): New struct used to cache frame info.
(ia64_register_reggroup_p): New routine used to override default
register grouping so registers without names are still saved and
restored.
(ia64_dwarf_reg_to_regnum): New routine to map gr32-gr127 to their
pseudo values.
(ia64_pseudo_register_read): New routine to read pseudo-registers.
(ia64_pseudo_register_write): New routine to write pseudo-registers.
(ia64_alloc_frame_cache): New routine to create a new
ia64_frame_cache.
(examine_prologue): Change prototype to add next_frame pointer.
Assume frameless until otherwise proven. Verify that the cfm for
current frame matches the cfm that should occur for the prologues
alloc insn and if equal, mark as not frameless. At end of routine,
if not frameless, calculate registers for the previous frame and store
in the cache, if a cache is provided.
(ia64_skip_prologue): Use new prototype when calling examine_prologue
and pass 0 for next_frame.
(ia64_store_return_value): Change to use convert_typed_floating()
instead of calling ia64_convert_to_raw().
(ia64_extract_return_value): Change to use convert_typed_floating()
instead of calling ia64_convert_to_virtual().
(ia64_frame_cache): New routine to support new frame model.
(ia64_frame_this_id, ia64_frame_prev_register): Ditto.
(ia64_frame_sniffer): Ditto.
(ia64_sigtramp_frame_init_saved_regs): Ditto.
(ia64_sigtramp_frame_cache, ia64_sigtramp_frame_this_id): Ditto.
(ia64_sigtramp_frame_prev_register): Ditto.
(ia64_sigtramp_frame_sniffer): Ditto.
(ia64_frame_base_address): Ditto.
(ia64_extract_struct_value_address): Change to issue error message.
(ia64_frame_align): New routine to align sp.
(ia64_push_dummy_call): New routine based on ia64_push_arguments().
(ia64_push_arguments): Removed. Logic moved to
ia64_push_dummy_call().
(ia64_push_return_address): Ditto.
(ia64_unwind_dummy_id): New function.
(ia64_unwind_pc): Ditto.
(ia64_convert_register_p): Ditto.
(ia64_register_to_value): Ditto.
(ia64_value_to_register): Ditto.
(ia64_pop_frame, ia64_pop_frame_regular): Removed.
(ia64_register_byte, ia64_register_raw_size): Ditto.
(ia64_register_virtual_size, ia64_register_virtual_byte): Ditto.
(ia64_saved_pc_after_call): Ditto.
(ia64_frame_chain, ia64_frame_saved_pc): Ditto.
(ia64_frame_init_saved_regs, ia64_get_saved_register): Ditto.
(ia64_register_convertible, ia64_register_convert_to_virtual): Ditto.
(ia64_register_convert_to_raw): Ditto.
(ia64_store_struct_return, ia64_call_dummy_words): Ditto.
(ia64_init_extra_frame_info): Ditto.
(ia64_frame_args_address, ia64_frame_locals_address): Ditto.
(ia64_gdbarch_init): Remove registering of deprecated functions that
are no longer used. Add registration of new gdbarch functions.
Remove registering deprecated_write_sp. Replace
set_gdbarch_register_virtual_type() with set_gdbarch_register_type().
Delete set_gdbarch_deprecated_register_convertible(),
set_gdbarch_deprecated_register_convert_to_virtual(), and
set_gdbarch_deprecated_register_convert_to_raw() calls. Remove
set_gdbarch_deprecated_register_size(),
set_gdbarch_deprecated_register_bytes(),
set_gdbarch_pcregnum(),
set_gdbarch_deprecated_register_byte(),
set_gdbarch_deprecated_register_raw_size(),
set_gdbarch_deprecated_max_register_raw_size(),
set_gdbarch_deprecated_register_virtual_size(),
and set_gdbarch_deprecated_max_register_virtual_size() calls.
Replace set_gdbarch_deprecated_extract_return_value() with
set_gdbarch_extract_return_value(). Remove calls to:
set_gdbarch_deprecated_saved_pc_after_call();
set_gdbarch_deprecated_frame_chain(),
set_gdbarch_deprecated_frame_saved_pc(),
set_gdbarch_deprecated_frame_init_saved_regs(),
set_gdbarch_deprecated_get_saved_register(),
set_gdbarch_deprecated_call_dummy_words(),
set_gdbarch_deprecated_sizeof_call_dummy_words(),
set_gdbarch_deprecated_init_extra_frame_info(),
set_gdbarch_deprecated_frame_args_address(),
set_gdbarch_deprecated_frame_locals_address(),
and set_gdbarch_deprecated_dummy_write_sp().
Add set_gdbarch_convert_register_p(),
set_gdbarch_register_to_value(),
set_gdbarch_value_to_register(),
set_gdbarch_push_dummy_call(),
set_gdbarch_frame_align(),
set_gdbarch_unwind_dummy_id(),
set_gdbarch_unwind_pc(),
frame_unwind_append_sniffer(),
frame_unwind_append_sniffer(),
and frame_base_set_default().