defined.
(regmap): Extend to cover all registers.
(PT_READ_U, PT_WRITE_U, PTRACE_XFER_TYPE,
OLD_CANNOT_FETCH_REGISTERS, OLD_CANNOT_STORE_REGISTERS): Remove
definitions.
(fetch_register, sore_register): Simplify.
(old_fetch_inferior_registers, old_store_inferior_registers):
Remove functions.
(cannot_fetch_register, cannot_store_register): Change
implementation to use regmap array to decide which registers
cannot be fetched/stored. This removes $orig_eax from the
registers that cannot be fetched/stored.
(fetch_inferior_registers): Call fetch_register directly instead
of calling old_fetch_inferior_registers.
(store_inferior_registers): Call store_register directly instead
of calling old_store_inferior_registers.
(i386_linux_dr_get): Replace PT_READ_U with PTRACE_PEEKUSER.
(i386_linux_dr_set): Replace PT_WRITE_U with PTRACE_POKEUSER.
* config/i386/nm-linux.h (U_REGS_OFFSET): Remove definition.
* i387-tdep.c (i387_supply_register): When called with NULL as a
buffer, mark the register as not provided (to mirror the behavior
of supply_register).
(i387_supply_fxsave): Ditto.
(i387_supply_fsave): Ditto (inherits the behavior from
i387_supply_register).
* blockframe.c (sigtramp_saved_pc): Use
builtin_type_void_code_ptr, not builtin_type_void_data_ptr (we are
extracting the PC). Use TYPE_LENGTH (builtin_type_void_code_ptr)
instead of (TARGET_PTR_BIT / TARGET_CHAR_BIT).
* frame.c (get_prev_frame): Cleanups. Eliminate redundant tests
for a NULL NEXT_FRAME. Simplify fromleaf initialization. Add
more comments. Zap dead code.
checks whether the target has any registers and whether there is a
selected frame up, such that it is also used if a target provides
multi-arch definitions of these functions.
* i386-linux-tdep.c: Include "reggroups.h".
(i386_linux_register_reggroup_p): New function.
(i386_linux_init_abi): Set register_reggroup_p to
i386_linux_register_reggroup_p.
* i386-tdep.h (i386_register_reggroup_p): Declare.
* i386-tdep.c: Include "reggroups.h".
(i386_init_reggroups): New function.
(i386_add_reggroups): New function.
(i386_register_reggroup_p): New function.
(i386_sse_reggroup, i386_mmx_reggroup): New variables.
(_initialize_i386_tdep): Call i386_init_reggroups.
(i386_gdbarch_init): Set register_reggroup_p and add in the i386
specific reggroups.
* frame.c (set_unwind_by_pc): Use dummy_frame_register_unwind.
* dummy-frame.c (find_dummy_frame): Rename
generic_find_dummy_frame, make static. Return the dummy frame
instead of the regcache.
(generic_find_dummy_frame): Re-implement using find_dummy_frame,
(cached_find_dummy_frame): New function. Use find_dummy_frame.
(dummy_frame_register_unwind): Rename
generic_call_dummy_register_unwind. Use cached_find_dummy_frame.
* dummy-frame.h (dummy_frame_register_unwind): Rename
generic_call_dummy_register_unwind.
* mi-main.c (mi_command_loop): Initialize raw_stdout and gdb_stdout
only if mi version is <= 1.
(mi_init_ui): Initialize raw_stdout and gdb_stdout if mi version
is > 1 so startup message is treated as console output. This is
part of fix for PR gdb/604.
* lib/mi-support.exp (mi_gdb_start): Verify the startup message
for mi1 and current mi is in correct format. New mi startup message
should be in mi console format. This is part of fix for PR gdb/604.
* hppa-tdep.c: Add new functions replacing macro bodies from
config/pa/tm-hppa.h. These function will be used to initialize
the gdbarch structure. Import some comments from tm-hppa.h,
and place them where appropriate, to avoid loosing them when
we cleanup this file.
(hppa_reg_struct_has_addr): New function.
(hppa_inner_than): New function.
(hppa_stack_align): New function.
(hppa_pc_requires_run_before_use): New function.
(hppa_instruction_nullified): New function.
(hppa_register_byte): New function.
(hppa_register_virtual_type): New function.
(hppa_store_struct_return): New function.
(hppa_cannot_store_register): New function.
(hppa_frame_args_address): New function.
(hppa_frame_locals_address): New function.
(hppa_smash_text_address): New function.
(hppa_coerce_float_to_double): New function. Requires the inclusion
of "language.h".
* Makefile.in (hppa-tdep.o): Add dependency on language.h.
* tm-hppa.h (REG_STRUCT_HAS_ADDR): Change the definition of this
gdbarch-eligible macro to a call to the new associated function
created in hppa-tdep.c.
(INNER_THAN): Likewise.
(STACK_ALIGN): Likewise.
(PC_REQUIRES_RUN_BEFORE_USE): Likewise.
(INSTRUCTION_NULLIFIED): Likewise.
(REGISTER_BYTE): Likewise.
(REGISTER_VIRTUAL_TYPE): Likewise.
(STORE_STRUCT_RETURN): Likewise.
(CANNOT_STORE_REGISTER): Likewise.
(FRAME_ARGS_ADDRESS): Likewise.
(FRAME_LOCALS_ADDRESS): Likewise.
(SMASH_TEXT_ADDRESS): Likewise.
(COERCE_FLOAT_TO_DOUBLE): Likewise.
(ABOUT_TO_RETURN): Delete, as no longer used.
(_initialize_printcmd): Do not create disassemble command here.
* cli/cli-cmds.c (disassemble_command): New function. Implements
disassemble command.
(init_cli_cmds): Create disassemble command here instead.
* gdb.asm/asm-source.exp: Adjust patter to new disassembler routine
which explicitly prints the zero offset as "+0".
* hppa-tdep.c (hppa_gdbarch_init): New function.
(hppa_dump_tdep): New function.
(_initialize_hppa_tdep): Register the hppa gdbarch init function and
tdep structure dumper.
* config/pa/tm-hppa.h (GDB_MULTI_ARCH): New macro, defined to 0
until the multi-arching conversion has partially been completed.
* valops.c (value_assign): Merge lval_register case into
lval_reg_frame_relative. Use frame_register and
regcache_cooked_write instead of get_saved_register and
write_register_bytes. After flushing the register cache, try to
re-select the selected frame.
* infcmd.c: Include "reggroups.h" and <ctype.h>.
(print_float_info): Print registers in float_reggroup.
(print_vector_info): Print registers in vector_reggroup.
(default_print_registers_info): When all, print registers in
all_reggroup. Otherwize, print registers in general_reggroup.
(registers_info): Rewrite. Add support for register groups.
Eliminate a goto.
* mi-cmd-var.c (mi_cmd_var_create): Change the function used to
parse the frame addr from parse_and_eval_address() to
string_to_core_addr(). This is a fix for PR gdb/494.
* symtab.c (methods_info): Delete. It has been ifdeffed out for
ages.
(symtab_symbol_info): Remove eons old ifdeffed out code.
(_initialize_symtab): Remove prehistoric disabled 'info methods'
command.
* f-exp.y: Add missing semi-colons.
* m2-exp.y: Add missing semi-colons.
* p-exp.y: Add missing semi-colons.
Add empty action to start rule to avoid a type clash error when
building with bison >= 1.50.
* varobj.c (child_exists, cplus_number_of_children): Change
STREQ macro references to strcmp.
(cplus_name_of_child): Change code to handle the fact that
fields are not necessarily contiguous with regards to their
access control. This is a fix for PR gdb/792.
* symtab.c (lookup_symbol_aux): Move chunks of code into separate
functions.
(lookup_symbol_aux_local): New function.
(lookup_symbol_aux_symtabs): New function.
(lookup_symbol_aux_psymtabs): New function.
* config/i386/nm-interix.h: New file.
* config/i386/interix.mh: New file.
* config/i386/interix.mt: New file.
* i386-interix-nat.c: New file.
* i386-interix-tdep.c: New file.
* h8300-tdep.c: Include "gdb_assert.h".
(h8300_print_register): Add gdbarch, file and frame parameters.
Use frame_read_unsigned_register to read the register's value.
Use fprintf_filtered to display output.
(h8300_print_registers_info): Replace h8300_do_registers_info.
(h8300_gdbarch_init): Set print_registers_info.
as this is already provided by value.h, and was actually causing
a compilation error because of a conflict in parameter type
declaration due to a missing const keyword.
(low_text_segment_addres): Fix a compilation warning.
regcache_raw_read_unsigned instead of
regcache_cooked_read_unsigned since we know that the register
we're reading isn't a pseudo register. Rename variable 'val' into
the more descriptive 'addr'.
(x86_64_init_abi): Move set_gdbarch_* calls that overlap with the
i386 target back into x86_64_gdbarch_init. Add some comments and
remove meaningless ones.
* mi-var-cmd.exp: Add tests to verify that a -var-assign that changes
a value shows up in the changelist of a -var-update. Part of fix
for gdb/702.
* mi1-var-cmd.exp: Ditto.
* NEWS: add recent mi fixes.
* varobj.c (struct varobj): Add new "updated" flag.
(new_variable): Default "updated" flag to 0.
(varobj_set_value): Set "updated" flag to 1 if value
changes.
(varobj_update): Check varobj "updated" flag before
comparing old and refreshed values. Fix for
PR gdb/702.
* mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin
to make_cleanup_ui_out_tuple_begin_end. Change all remaining
occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end. Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end. This
is a fix for PR gdb/680.
* mi-cmd-stack.c: Ditto.
* mi-main.c: Ditto.
* symtab.c (symbol_demangled_name): New function.
* symtab.h (SYMBOL_DEMANGLED_NAME): Simplify macro, by
turning most of it into a function.
(symbol_demangled_name): Export.
* symtab.c (symbol_init_language_specific): New function.
* symtab.h (SYMBOL_INIT_LANGUAGE_SPECIFIC): Simplify macro, by
turning most of it into a function.
(symbol_init_language_specific): Export.
Elena Zannoni <ezannoni@redhat.com>
* symtab.h (address_class): Re-add LOC_THREAD_LOCAL_STATIC
for thread local storage locations.
(struct symbol): Add objfile field.
(SYMBOL_OBJFILE): Define.
* dwarf2read.c (is_thread_local): New static variable.
(new_symbol): If variable is in thread local fill in address class
and objfile appropriately.
(decode_locdesc): Recognize and handle DW_OP_GNU_push_tls_address
stack operation.
* printcmd.c (address_info): Print the information for thread
local storage variable.
* findvar.c (read_var_value): In case of thread local variable,
defer to the target vector code to compute address.
* config/i386/obsd.mt: New file.
* i386bsd-nat.c (_initialize_i386bsd_nat): Introduce
i386obsd_sc_pc_offset and i386obsd_sc_sp_offset;
* i386obsd-nat.c (_initialize_i386obsd_nat): Set
i386obsd_sigtramp_start and i386obsd_sigtramp_end instead of
i386nbsd_sigtramp_start and i386nbsd_sigtramp_end.
* i386obsd-tdep.c: New file.
* configure.tgt (alpha*-*-freebsd*, i[3456]86-*-freebsd*,
sparc64-*-freebsd*): Combine to make *-*-freebsd* with gdb_target set
to fbsd. Removes need for additional freebsd tupples.
* symtab.h: Delete 'struct source' and 'struct sourcevector'.
(Also, I fixed up a date reference for an earlier ChangeLog entry of
mine; sorry about that.)
* symfile.h: Add opaque declaration for struct obstack.
Declare obsavestring to take a const char *.
* symfile.c (obsavestring): Make first argument a const char *.
* findvar.c (read_memory_typed_address): New function.
* gdbcore.h (read_memory_typed_address): Add prototype.
* blockframe.c (sigtramp_saved_pc): Use read_memory_typed_address
to read a value destined for a CORE_ADDR, not read_memory_integer.
* f-valprint.c (f77_get_dynamic_upperbound): Ditto.
(f77_get_dynamic_lowerbound): Ditto.
* utils.c (string_to_core_addr): After turning string into
a number, convert to a CORE_ADDR using INTEGER_TO_ADDRESS
which will do necessary sign-extension, etc.
Revised and re-submitted by John Wolfe <jlw@caldera.com>
Move the Dwarf 2 abbrev table to a per-compilation-unit structure,
so we can work on more than one compilation unit at a time. This
helps prepare GDB to handle inter-CU die references.
* dwarf2read.c (ABBREV_HASH_SIZE): moved definition forward in
the code to be defined before struct comp_unit_head.
(comp_unit_head): Added new members - offset, cu_head,
begin_die, next and dwarf2_abbrevs.
(dwarf2_abbrevs): Removed single static var; now member of
struct comp_unit_head.
dwarf2_build_psymtabs_hard): Complete new struct comp_unit_head
members.
(psymtab_to_symtab_1): Changed to work with the new
struct comp_unit_head.
(dwarf2_read_abbrevs): Now accepts a cu_header parameter and
constructs the dwarf2_abbrevs[] inside the cu_header.
(dwarf2_empty_abbrev_table): Now expects a ptr to a
dwarf2_abbrev table to clean up.
(dwarf2_lookup_abbrev): Now accepts a cu_header parameter and
handling of dwarf2_abbrevs inside the cu_header.
(read_partial_die): Now supports the call to the new
dwarf2_lookup_abbrev.
(read_full_die): Now supports the call to the new
dwarf2_lookup_abbrev.
* ui-out.h (ui_out_field_fmt_int): New prototype.
* ui-out.c (ui_out_field_fmt_int): New function allowing specification
of field width and alignment.
* stack.c (print_frame_info_base): When printing frame level, use
ui_out_field_fmt_int with a width of 2 and left alignment. Fix for
PR gdb/192
* mi-return.exp: Change expected frame output to remove extraneous
space in level field when frame level is single digit. Part of
fix for PR gdb/192.
* mi-stack.exp: Ditto.
* mi1-return.exp: Ditto.
* mi1-stack.exp: Ditto.
* mi-var-block.exp: Change expected output from -var-update
command to expect list format for "changelist". Fix for
PR gdb/672.
* mi-var-cmd.exp: Ditto.
* mi-var-child: Ditto.
* mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672. For m2,
output list begin and end for "changelist" rather than tuple begin/end.
(varobj_update_one): For m2, add tuple begin and end for varobj
update output.
* infcmd.c (interrupt_target_command_wrapper): Delete.
(interrupt_target_command): Make non static.
(nofp_registers_info): Make static.
* stack.c (return_command_wrapper): Delete.
(return_command): Make non static.
* gdbtypes.c (fill_in_vptr_fieldno): Call check_typedef
before recursing.
* gnu-v3-abi.c (gnuv3_virtual_fn_field): Check return value
of fill_in_vptr_fieldno.
* inferior.h (registers_info, stepi_command, nexti_command,
continue_command, interrupt_target_command): Export from infcmd.c.
* frame.h (args_info, selected_frame_level_changed_hook,
return_command): Export from stack.c.
* v850ice.c (stepi_command, nexti_command, continue_command): use
prototypes from inferior.h.
* tracepoint.c (registers_info, args_info, locals_info): Use
prototypes from frame.h and inferior.h.
* Makefile.in (mi-main.o): Add dependency on frame.h.
2002-10-02 Elena Zannoni <ezannoni@redhat.com>
* mi-main.c (mi_cmd_exec_return): Don't use
return_command_wrapper, use return_command instead.
(mi_cmd_exec_interrupt): Don't use
interrupt_target_command_wrapper, use interrupt_target_command
instead.
(return_command_wrapper, interrupt_target_command_wrapper):
Delete.
Include frame.h.
2002-10-02 Elena Zannoni <ezannoni@redhat.com>
* tui-hooks.c (selected_frame_level_changed_hook): Use the one
exported from frame.h.
* NEWS: Mention that MI syntax, selected by "mi" changed to "mi2"
and that "mi0" syntax has been removed.
2002-10-01 Andrew Cagney <ac131313@redhat.com>
* gdb.texinfo (Mode Options): Update --interpreter option. "mi2"
and "mi1" instead of "mi1" and "mi0".
2002-10-01 Andrew Cagney <ac131313@redhat.com>
* mi-main.c (mi2_command_loop): New function.
(mi0_command_loop): Delete function.
(_initialize_mi_main): Recognize, and default to, "mi2". Do not
recognize "mi0".
* mi-out.c (mi_table_begin): Remove mi0 code.
(mi_table_body, mi_table_end): Ditto.
(mi_table_header, mi_open, mi_close): Ditto.
* mips-tdep.c (mips_frame_saved_pc): When a generic dummy frame,
use frame_unwind_signed_register to obtain the PC.
(mips_frame_chain): Handle a generic dummy frame.
(mips_init_extra_frame_info): When a generic dummy frame, don't
re-compute the frame base.
(mips_pop_frame): Handle generic dummy frames.
(mips_gdbarch_init): When generic dummy frames, set
use_generic_dummy_frames, push_dummy_frame to
generic_push_dummy_frame, pc_in_call_dummy to
generic_pc_in_call_dummy, and save_dummy_frame_top_of_stack to
generic_save_dummy_frame_tos.
* disasm.h: New file.
* mi/mi-cmd-disas.c (gdb_dis_asm_read_memory): Moved to disasm.c.
(compare_lines): Ditto.
(dump_insns): Ditto.
(do_mixed_source_and_assembly): Moved to disasm.c. Added uiout argument. (do_assembly_only): Ditto.
(do_disassembly): Renamed to gdb_disassembly and moved to disasm.c.
Sdded uiout argument.
* Makefile.in: Add new files. Reorder SFILES list. Update dependencies. Include libgdb.a later in the insight executable.
* tui.c (tui_show_source): Don't access current_source_symtab, use
accessor function instead. Include source.h and symtab.h
* tuiDisassem.c (tuiShowDisassemAndUpdateSource,
tuiVerticalDisassemScroll): Use accessor functions for current
source line and symtab. Include source.h.
* tuiLayout.c (_extractDisplayStartAddr): Use accessor functions
for current source line and symtab. Include source.h.
* tuiWin.c (_makeVisibleWithNewHeight): Ditto.
* tuiSourceWin.c (tuiUpdateSourceWindowAsIs,
tuiHorizontalSourceScroll): Ditto.
* tuiSource.c (tuiVerticalSourceScroll): Ditto.
path optional since not all compilers emit this debug information.
* gdb.base/shlib-call.exp (step inside shr2): Don't fail if first
step ends up stepping out of the function instead of stopping on
the epilogue.
* frame.c: Include "gdb_string.h" and "builtin-regs.h".
(frame_map_regnum_to_name): New function.
(frame_map_name_to_regnum): New function.
* frame.h (frame_map_name_to_regnum): Declare.
(frame_map_regnum_to_name): Declare.
* builtin-regs.c (builtin_reg_map_regnum_to_name): New function.
* builtin-regs.h (builtin_reg_map_regnum_to_name): Declare.
* parse.c: Do not include "builtin-regs.h".
(target_map_name_to_register): Delete function.
(write_dollar_variable): Use frame_map_name_to_regnum.
* parser-defs.h (target_map_name_to_register): Delete declaration.
* expprint.c: Include "frame.h".
(print_subexp): Use frame_map_regnum_to_name.
* eval.c (evaluate_subexp_standard): Use frame_map_regnum_to_name.
* infcmd.c (registers_info): Use frame_map_name_to_regnum.
2002-09-25 Andrew Cagney <cagney@redhat.com>
* gdb.base/pc-fp.exp, gdb.base/pc-fp.c: New test.
exists before using it.
(check_mi_and_console_threads): Likewise.
* gdb669.exp (get_mi_thread_list): Likewise.
(check_mi_and_console_threads): Likewise.
* rs6000-tdep.c (rs6000_frame_saved_pc): If the link register
wasn't saved, and the next innermost frame is a dummy, return the
dummy frame's link register.
Check for pthread.h.
* configure: Regenerate.
* config.in: New file.
* pthreads.c: New file.
* mi-pthreads.exp: New file to test thread functionality.
* gdb669.exp: New file.
* gdb.gdb/complaints.exp (test_initial_complaints): Rename
test_isolated_complaints.
(test_empty_complaint): New function.
(test_empty_complaints): New function. Check no output when no
complaints.
function.
(set_default_source_symtab_and_line): New function. Attempts to
determine a source file to list lines from if one is not currently
defined.
(get_current_source_symtab_and_line): Initialize sal.pc and
sal.end fields.
(set_current_source_symtab_and_line): Mark argument as const.
* source.h: Update declarations and comments.
* linespec.c (decode_line_1): Replace call to removed routine above.
* stack.c (print_frame_info_base): Ditto.
* cli/cli-cmds.c (edit_command): Ditto.
(list_command): Ditto.
sal.end fields.
(get_current_or_default_source_symtab_and_line): Ditto.
* breakpoint.c (parse_breakpoint_sals): Use correct accessor function
so we do not cause a new source symtab to be searched for (reverting an
unintentional change from the 2002-09-20 patch).
* scm-lang.c (scm_unpac): Ditto.
* complaints.c (symfile_explanations): Remove new-line from
``isolated_message''.
(vcomplaint): When ISOLATED_MESSAGE, force a line break.
(clear_complaints): When a SUBSEQUENT_MESSAGE, force a line break.
From Eli Zaretskii <eliz@is.elta.co.il>:
* gdb.texinfo (Character Sets): Use @smallexample instead of
@example. Use GNU/Linux instead of Linux.
2002-09-20 Jim Blandy <jimb@redhat.com>
* gdb.texinfo: Add character set documentation.
current_source_line static.
(list_command): Moved to cli/cli-cmds.c.
(ambiguous_line_spec): Moved to cli/cli-cmds.c.
(get_first_line_listed): New accessor function.
(get_lines_to_list): New accessor function.
(get_current_source_symtab_and_line): New function. Retrieves the
position in the source code that we consider current.
(get_current_or_default_source_symtab_and_line): New function.
Like the above but attempts to determine a default position if one
is not currently defined.
(set_current_source_symtab_and_line): New function. Sets the source
code position considered current and returns the previously set one.
(clear_current_source_symtab_and_line): Reset stored information about
a current source line.
(_initialize_source): Remove registration for the "list" command and
its alias.
* source.h: Add declarations for the new functions above.
* symtab.h: Remove declarations for the global variables mentioned
above.
* breakpoint.c (parse_breakpoint_sals): Use accessor functions to
obtain current source line.
* linespec.c (decode_line_1): Ditto.
* macroscope.c (default_macro_scope): Ditto.
* scm-lang.c (scm_unpac): Ditto.
* stack.c (print_frame_info_base): Ditto.
* symfile.c (clear_symtab_users): Ditto.
* symtab.c (decode_line_spec): Ditto.
* cli/cli-cmds.c (list_command): Moved here from source.c.
(ambiguous_line_spec): Moved here from source.c.
(_init_cli_cmds): Add definition for "list" and its alias.
* Makefile.in: Update dependencies.