From 39ce68291e9afa7e74fa2daf74237b2296ea8b5c Mon Sep 17 00:00:00 2001 From: Peter Schauer Date: Sun, 28 Apr 1996 10:49:54 +0000 Subject: [PATCH] * breakpoint.c (delete_breakpoint): Fix bpt->val, bpt->exp 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. --- gdb/ChangeLog | 13 +++++++++++++ gdb/breakpoint.c | 14 ++++++++++++++ gdb/infcmd.c | 9 ++++----- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2e34fe66195..a583c241473 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +Sun Apr 28 03:44:30 1996 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * breakpoint.c (delete_breakpoint): Fix bpt->val, bpt->exp + 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. + Sat Apr 27 20:38:32 1996 Fred Fish * Makefile.in (CLIBS): Move $(MMALLOC) past all other libs, diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index bb18f5677b7..a92164660b2 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1972,6 +1972,8 @@ set_raw_breakpoint (sal) static int internal_breakpoint_number = -1; +#ifdef GET_LONGJMP_TARGET + static void create_longjmp_breakpoint (func_name) char *func_name; @@ -2007,6 +2009,8 @@ create_longjmp_breakpoint (func_name) b->number = internal_breakpoint_number--; } +#endif /* #ifdef GET_LONGJMP_TARGET */ + /* Call this routine when stepping and nexting to enable a breakpoint if we do a longjmp(). When we hit that breakpoint, call set_longjmp_resume_breakpoint() to figure out where we are going. */ @@ -3299,8 +3303,12 @@ delete_breakpoint (bpt) free (bpt->cond_string); if (bpt->addr_string != NULL) free (bpt->addr_string); + if (bpt->exp != NULL) + free (bpt->exp); if (bpt->exp_string != NULL) free (bpt->exp_string); + if (bpt->val != NULL) + value_free (bpt->val); if (bpt->source_file != NULL) free (bpt->source_file); @@ -3433,9 +3441,13 @@ breakpoint_re_set_one (bint) particular level, but that's going to be less stable than filenames or functionnames. */ /* So for now, just use a global context. */ + if (b->exp) + free ((PTR)b->exp); b->exp = parse_expression (b->exp_string); b->exp_valid_block = innermost_block; mark = value_mark (); + if (b->val) + value_free (b->val); b->val = evaluate_expression (b->exp); release_value (b->val); if (VALUE_LAZY (b->val)) @@ -3444,6 +3456,8 @@ breakpoint_re_set_one (bint) if (b->cond_string != NULL) { s = b->cond_string; + if (b->cond) + free ((PTR)b->cond); b->cond = parse_exp_1 (&s, (struct block *)0, 0); } if (b->enable == enabled) diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 4aa408ac3c4..5eb749e7117 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -187,7 +187,7 @@ run_command (args, from_tty) dont_repeat (); - if (inferior_pid) + if (inferior_pid && target_has_execution) { if ( !query ("The program being debugged has been started already.\n\ @@ -1164,10 +1164,9 @@ attach_command (args, from_tty) clear_proceed_status (); stop_soon_quietly = 1; -#ifndef MACH - /* Mach 3 does not generate any traps when attaching to inferior, - and to set up frames we can do this. */ - + /* No traps are generated when attaching to inferior under Mach 3 + or GNU hurd. */ +#ifndef ATTACH_NO_WAIT wait_for_inferior (); #endif -- 2.30.2