* blockframe.c (find_pc_sect_partial_function): Add braces to avoid
possible nested-if confusion.
* breakpoint.c (breakpoint_here_p): Ditto.
(breakpoint_inserted_here_p): Ditto.
(breakpoint_thread_match): Ditto.
* gnu-regex.c: Define _REGEX_RE_COMP only if it isn't already defined.
* gnu-regex.h: Define _REGEX_RE_COMP to pick up old compatability
prototypes.
* symtab.h: Add prototype for _initialize_source.
* value.h: Add prototype for _initialize_value.
* defs.h: Include sys/types.h or stddef.h to get size_t.
(make_cleanup): Add make_cleanup_func typedef and switch to using
a prototype for this function.
(mfree): Add prototypes for mmalloc, mrealloc, mfree if we aren't
using mmalloc.
* ax-gdb.c breakpoint.c coffread.c corelow.c dbxread.c dwarf2read.c
dwarfread.c elfread.c eval.c exec.c gdbtk-cmds.c gdbtk.c infcmd.c
infrun.c mipsread.c nlmread.c os9kread.c parse.c printcmd.c symfile.c
symmisc.c symtab.c thread.c top.c tracepoint.c typeprint.c valops.c:
Cast parameters passed to make_cleanup to use the new
make_cleanup_func typedef.
More warning cleanups. There are still a bunch of places where the first
argument to make_cleanup is not cast to (make_cleanup_func); these are
either due to the function fitting the make_cleanup_func specification
already (e.g. free()) or they are in files that weren't compiled when
I did my make on a Linux native system. Bwahahaha. You can see them
like this:
grep make_cleanup\ * | grep -v make_cleanup_func
I'll surely go back and clean up the remaining suspicious calls in
GDB one of these days. :-)
Thu Oct 1 15:39:27 EDT 1998 Frank Ch. Eigler <fche@cygnus.com>
* breakpoint.c (bpstat_stop_status): Do not consider an
untripped watchpoint as a "hit".
(readline_begin_hook, readline_hook, readline_end_hook): Declare.
* breakpoint.c (commands_command): Build message in temporary buffer
and pass that, as well as tty control flag, to read_command_lines.
* top.c (readline_begin_hook, readline_hook, readline_end_hook):
Define here.
(command_loop): Check for non-NULL instream before looping.
(command_line_input): Use readline_hook when appropriate, to get
user input from a GUI window.
(read_next_line): Also build prompt if getting user input from a GUI.
(recurse_read_control_structure): Fix typo in comment.
(read_command_lines): Use passed in prompt and tty flag to decide how
to build message. Use readline_begin_hook when appropriate, to set
up a GUI interaction window. Just return head, whether NULL or not,
after using readline_end_hook to complete GUI interaction.
(define_command, document_command): Build message in a temporary
buffer and pass it to read_command_lines, along with tty flag.
* gdbtk.c (gdbtk_readline_begin, gdbtk_readline, gdbtk_readline_end):
New functions.
(tk_command_loop): Set instream to NULL to enable Tk user interaction.
(gdbtk_init): Set readline_begin_hook, readline_hook,
and readline_end_hook.
* gdbtk.tcl (gdbtk_tcl_readline_begin, gdbtk_tcl_readline,
gdbtk_tcl_readline_end): New functions.
(tclsh): Pack scroll bar on right side of window, not left.
PR 9385
infrun.c, mac-nat.c, procfs.c, remote.c, sol-thread.c, thread.c,
win32-nat.c, config/nm-lynx.h: Rename thread.h to gdbthread.h to
avoid conflict with Solaris /usr/include/thread.h.
that is referenced nowhere else.
(set_breakpoint): Ditto.
(do_enable_breakpoint): Created from enable_once_breakpoint
with a couple of changes.
(enable_breakpoint): Call do_enable_breakpoint with an appropriate
bpdisp enum value to set disposition of breakpoint.
(enable_once_breakpoint): Ditto.
(enable_delete_breakpoint): Ditto.
* breakpoint.h (clear_momentary_breakpoints): Remove prototype.
* symtab.c (find_pc_line): Improve comments.
* gdbtk.c: Fix a couple of misspellings.
* xcoffread.c: Ditto.
* breakpoint.h (enum bpdisp): Add del_at_next_stop.
* breakpoint.c (insert_breakpoints, watchpoint_check,
bpstat_stop_status): Avoid bad references to memory freed via
delete_breakpoint on watchpoints going out of scope.
Do not delete these watchpoints, disable them and change their
disposition to del_at_next_stop instead.
(breakpoint_auto_delete): Delete all breakpoints whose disposition
is del_at_next_stop.
(breakpoint_init_inferior): Use switch to avoid reference to
already deleted breakpoint.
Fixes dangling pointer problems with watchpoints.
storage leaks.
(breakpoint_re_set_one): Fix b->exp, b->val, b->cond storage leaks.
* infcmd.c (run_command), solib.c (locate_base): Check for
target_has_execution in addition to inferior_pid, a core file
from a threaded program is yielding a non-zero inferior_pid.
* sparc-tdep.c (get_saved_register): Handle window registers
in a dummy frame correctly.
* breakpoint.c (breakpoint_re_set_one): Keep temporary
breakpoints bp_until, bp_finish, bp_watchpoint_cope, bp_call_dummy
and bp_step_resume in case breakpoint_re_set_one is called due
to a step over a dlopen call.
* infrun.c (wait_for_inferior): Always remove breakpoints from
inferior in BPSTAT_WHAT_CHECK_SHLIBS case.
that hardware watchpoint removal problems won't leave breakpoint
traps in the target.
* configure configure.in: Make --enable-gdbtk be the default.
* remote-e7000.c (e7000_insert_breakpoint,
e7000_remove_breakpoint): Use e7000 based breakpoints, not memory
breakpoints.
* (e7000_wait): Adjust PC back by two when we see a breakpoint to
compensate for e7000 maladjustment.
* sparcl-tdep.c (sparclite_check_watch_resources): Fix logic bug
which prevented hardware watchpoints from working.
around calls to create_longjmp_breakpoint. Why install the
breakpoints if we can't find the longjmp target?
* infrun.c (wait_for_inferior): Cleanup comments near call test.
* remote-mips.c: Fixed a bunch of prototypes to avoid char/int
complaint from picky compilers. Add comment to mips_expect.
Replace all instances of sr_get_debug with remote_debug.
* (mips_readchar): Don't jam init string to monitor.
mips_initialize() handles that.
* (mips_receive_header): Print better message when we get too
much garbage.
* (mips_request): Allow caller to pass in buff to allow them to
analyze the returned message.
* (mips_initialize): Re-do initialization to try sending a BREAK,
a ^C, and then a download escape sequence. Cleanup protocol
startup. Eliminate sleeps. Clear breakpoints (if using monitor
breakpoints). Re-init frame.
* (mips_detach): Close down target.
start-sanitize-gm
* (mips_resume): Pass signal down to target.
* (mips_create_inferior): Start target with TARGET_SIGNAL_PWR.
end-sanitize-gm
* (mips_wait): Handle return status with registers, or breakpoint stuff.
* (mips_kill): Add ^C handling.
* (mips_insert_breakpoint mips_remove_breakpoint): Call new
breakpoint stuff if enabled.
* (calculate_mask remote_mips_set_watchpoint
remote_mips_remove_watchpoint remote_mips_stopped_by_watchpoint):
Hardware watchpoint/breakpoint stuff.
* (common_breakpoint): Common code for new monitor breakpoint commands.
* (mips_load): Don't use `prompt'. It's a global variable.
* top.c (dont_repeat_command): New command for use in
user-defined commands to suppress auto-repeat (by hittin return key).
start-sanitize-gm
* utils.c (request_quit): Call target_kill here. Good idea.
Needs a better implementation.
end-sanitize-gm
* valops.c: Add start of auto function-call abandonment capability.
start-sanitize-gm
* c-exp.y: Add code (currently disabled) to handle GM dynamic
structures (it conflicts with @!).
* eval.c (evaluate_subexp_standard): ditto.
* expprint.c (print_subexp dump_expression): ditto.
* expression.h (enum exp_opcode): ditto.
* parse.c (length_of_subexp): ditto.
* configure, configure.in: Add mip*-*-magic* target.
* magic.c magic.h: Special routines to handle GM stuff (like
stepping through dispatcher).
end-sanitize-gm
commands.
* top.c (struct user_args): Structure for holding arguments to
user defined commands.
(print_command_line): Delete unused "tmp_chain" variable. Clean
up flow control by having cases exit in the same manner.
Before executing a command or evaluating an expression, substitute
the current $arg0..$arg9 values if the command/expression uses them.
(arg_cleanup): New function.
(setup_user_args, locate_arg, insert_args): Likewise.
(execute_user_command): Allow arguments to user defined commands.
* Allow if/while commands to be used within a breakpoint command
list.
* breakpoint.c (bpstat_do_actions): Call execute_control_command
rather than execute_command (passes entire command structure rather
than just the command line text).
(breakpoint_1): Use "print_command_line" to print a breakpoint
command line (including control structures).
* gdbcmd.h (execute_control_command): Provide extern decl.
(print_command_line): Likewise.
* top.c (execute_control_command): No longer static.
(print_command_line): New function to recursively print a command
line, including control structures.
and stack pointer during stepping, to speed things up.
A. Changes to not select a frame until we need a selected frame:
* blockframe.c (flush_cached_frames): Call select_frame (NULL, -1).
* infrun.c (wait_for_inferior): Move call to select_frame back to
normal_stop. This reverts a change of 13 Apr 94 (it says Jeff
Law, but the change was my idea); the only reason for that change
was so we could save and restore the selected frame in
wait_for_inferior, and now that flush_cached frames clears the
selected frame, that should work OK now.
B. Changes to not create a current_frame until we need one:
* blockframe.c (get_current_frame): If current_frame is NULL, try
to create an innermost frame.
* sparc-tdep.c (sparc_pop_frame), infcmd.c (run-stack_dummy),
infrun.c (wait_for_inferior), thread.c (thread_switch),
convex-tdep.c (set_thread_command), a29k-tdep.c (pop_frame),
alpha-tdep.c (alpha_pop_frame), convex-xdep.c (core_file_command),
h8300-tdep.c (h8300_pop_frame), h8500-tdep.c (h8300_pop_frame),
hppa-tdep.c (hppa_pop_frame), i386-tdep.c (i386_pop_frame),
i960-tdep.c (pop_frame), m68k-tdep.c
(m68k_pop_frame), mips-tdep.c (mips_pop_frame), rs6000-tdep.c
(push_dummy_frame, pop_dummy_frame, pop_frame), sh-tdep.c
(pop_frame), config/arm/tm-arm.h (POP_FRAME),
config/convex/tm-convex.h (POP_FRAME), config/gould/tm-pn.h
(POP_FRAME), config/ns32k/tm-merlin.h (POP_FRAME),
config/ns32k/tm-umax.h (POP_FRAME), config/tahoe/tm-tahoe.h
(POP_FRAME), config/vax/tm-vax.h (POP_FRAME): Don't
call create_new_frame.
* corelow.c (core_open), altos-xdep.c (core_file_command),
arm-xdep.c (core_file_command), gould-xdep.c (core_file_command),
m3-nat.c (select_thread), sun386-nat.c (core_file_command),
umax-xdep.c (core_file_command): Don't call create_new_frame; do
call flush_cached_frames.
* blockframe.c (reinit_frame_cache): Don't call create_new_frame
or select_frame.
C. Changes to get rid of stop_frame_address and instead only
fetch the frame pointer when we need it.
* breakpoint.c (bpstat_stop_status): Remove argument
frame_address; use FRAME_FP (get_current_frame ()).
* infrun.c (wait_for_inferior): Don't pass frame pointer to
bpstat_stop_status.
* infrun.c (wait_for_inferior): Use FRAME_FP (get_current_frame
()) instead of stop_frame_address.
* infrun.c (save_inferior_status, restore_inferior_status),
inferior.h (struct inferior_status): Don't save and restore
stop_frame_address.
* inferior.h, infcmd.c, thread.c (thread_switch), m3-nat.c
(select_thread): Remove stop_frame_address and uses thereof.
D. Same thing for the stack pointer.
* infrun.c (wait_for_inferior): Remove stop_sp and replace
uses thereof with read_sp ().
E. Change to eliminate one nasty little spot where we were
wanting to know the frame pointer from before the current step
(idea from GDB 3.5, which saved my ass, because my other ideas of
how to fix it were very baroque).
* infrun.c: Remove prev_frame_address.
* infrun.c (wait_for_inferior, step_over_function): Use
step_frame_address instead of prev_frame_address.
F. Same basic idea for the stack pointer.
* inferior.h, infcmd.c: New variable step_sp.
* infcmd.c (step_1, until_next_command): Set it.
* infrun.c: Remove prev_sp and replace uses by step_sp.
* infrun.c (wait_for_inferior): If we get out of the step
range, then set step_sp to the current stack pointer before we
start going again.
* breakpoint.c (delete_breakpoint, enable_breakpoint,
disable_breakpoint): Don't call breakpoints_changed; it is now
called via the *_breakpoint_hook functions.
* annotate.c (_initialize_annotate, breakpoint_changed): New functions.
--enable-xxx configure option by adding ENABLE_{CLIBS DEPFILES}
where appropriate.
* General hackery to support alternate user-interface.
* breakpoint.c (mention, delete_breakpoint, enable_breakpoint,
disable_breakpoint): Call hooks for alternate user-interface.
* defs.h: Add declarations for alternate user-interface hooks.
* main.c (main): Add --nw (and --nowindows) options to disable
the GUI.
* (near call to command_loop): Call command_loop_hook if set.
* (fputs_unfiltered): Call fputs_unfiltered_hook if set.
* stack.c: Call print_frame_info_listing_hook if set.
* top.c (gdb_init): Initialize targets.c and utils.c prior to
other files to make sure that calls to error and warning will
work. Call init_ui_hook after everything else.
* utils.c (query): Call query_hook if set.
* (gdb_flush): Call flush_hook if set.
* Change _initialize_utils to initialize_utils cuz we don't use
automatic initialization of utils.c anymore.
* Support for TK GUI.
* Makefile.in: Add rule for gdbtk.o.
* configure.in: Add support for --enable-gdbtk.
* gdbtk.c: New file. Contains support routines for TK interface.
* gdbtk.tcl: New file. Implements GUI policy.
* remote.c: Get rid of #ifdef DONT_USE_REMOTE. It's no longer
necessary.
* breakpoint.h (hit_count): New breakpoint field.
* breakpoint.c (show_breakpoint_hit_counts): New variable.
(clear_breakpoint_hit_counts): New function.
(bpstat_stop_status): Increment the hit count.
(breakpoint_1): Display the hit count.
* infcmd.c (run_command): Reset breakpoint hit counts.
* target.c (generic_mourn_inferior): Don't clear ignore counts if
displaying hit counts.
target null pointer.
* blockframe.c (find_frame_addr_in_frame_chain): Likewise.
* printcmd.c (output_command): Annotate things we print here too.
* Move declaration of print_value_flags from defs.h to value.h.
* main.c (command_line_input): Call wrap_here as well as gdb_flush.
the same as --annotate=1.
(command_line_input): Print annotatation before and after prompt.
* blockframe.c (flush_cached_frames): Print annotation.
* Rename frame_file_full_name to annotation_level and move it from
symtab.h to defs.h.
* source.c (identify_source_line): If annotation_level > 1,
change output format.
* breakpoint.c: Print annotation whenever a breakpoint changes.
* main.c: New variable server_command.
(command_line_input): Parse "server " and set server_command.
(dont_repeat): Check server_command.
bp_watchpoint_scope breakpoints.
(struct breakpoint): Add val_chain and related_breakpoint fields
for use by watchpoints.
* breakpoint.c (within_scope): Delete. No longer used.
(TARGET_CAN_USE_HARDWARE_WATCHPOINT): Provide default definition.
(target_{remove,insert}_watchpoint): Likewise.
(can_use_hardware_watchpoint): New function.
(remove_breakpoint): New function to remove a single breakpoint
or hardware watchpoint.
(insert_breakpoints): Handle insertion of hardware watchpoints.
Store a copy of the value chain derived from the watchpoint
expression.
(remove_breakpoints): Simplify by using remove_breakpoint.
(delete_breakpoint): Likewise.
(watchpoint_check): Delete the watchpoint and watchpoint scope
breakpoints when the watchpoint goes out of scope. Save & restore
the current frame after checking watchpoints.
(breakpoint_init_inferior): Likewise (restarting the program
makes all local watchpoints go out of scope).
(bpstat_stop_status): Handle hardware watchpoints much like normal
watchpoints. Delete the watchpoint and watchpoint scope breakpoint
when the watchpoint goes out of scope. Remove and reinsert all
breakpoints before returning if we stopped when a hardware watchpoint
fired.
(watch_command): Use a hardware watchpoint when possible. If
watching a local expression, build a scope breakpoint too.
(map_breakpoint_numbers): Also call given function for any
related breakpoints.
(disable_breakpoint): Never disable a scope breakpoint.
(enable_breakpoint): Handle hardware breakpoints much like normal
breakpoints, but recompute the watchpoint_scope breakpoint's
frame and address (if we have an associated scope breakpoint).
(read_memory_nobpt): Handle hardware watchpoints like normal
watchpoints. When necessary handle watchpoint_scope breakpoints.
(print_it_normal, bpstat_what, breakpoint_1, mention): Likewise.
(clear_command, breakpoint_re_set_one, enable_command): Likewise.
(disable_command): Likewise.
* blockframe.c (find_frame_addr_in_frame_chain): New function.
Extern prototype added to frame.h
* infrun.c (wait_for_inferior): Set current_frame and select
a frame before checking if we stopped due to a hardare watchpoint
firing. Handle stepping over hardware watchpoints.
(normal_stop): Remove unnecessary call to select_frame.
* value.h (value_release_to_mark): Declare.
* values.c (value_release_to_mark): New function.
* procfs.c (procfs_wait): Add cases for hardware watchpoints.
(procfs_set_watchpoint, procfs_stopped_by_watchpoint): New functions.
* hppab-nat.c (hppa_set_watchpoint): New function.
* config/pa/nm-hppab.h (STOPPED_BY_WATCHPOINT): Define.
(HAVE_STEPPABLE_WATCHPOINT): Define.
(TARGET_CAN_USE_HARDWARE_WATCHPOINT): Define.
(target_{insert,delete}_watchpoint): Define.