diff options
author | Michael Snyder <msnyder@vmware.com> | 2005-11-26 04:27:17 +0000 |
---|---|---|
committer | Michael Snyder <msnyder@vmware.com> | 2005-11-26 04:27:17 +0000 |
commit | 1ca28148e23cea60192a22f3613a262f6d4468ad (patch) | |
tree | 12c0df697a759265538dcd2095f719c1937f5761 | |
parent | 338e2996f0ad15ca425cd2b5d9e1f13cd2ef3a86 (diff) | |
download | gdb-1ca28148e23cea60192a22f3613a262f6d4468ad.zip gdb-1ca28148e23cea60192a22f3613a262f6d4468ad.tar.gz gdb-1ca28148e23cea60192a22f3613a262f6d4468ad.tar.bz2 |
2005-11-25 Michael Snyder <msnyder@redhat.com>
* infrun.c (set_last_target_status): Remove, replace with following.
(nullify_last_target_wait_ptid): New function. Now we don't need
to save this bit of state in linux-nat.
* linux-nat.c (struct fork_info): Get rid of last_target_ptid,
last_target_waitstatus, and inferior status.
(fork_load_infrun_state): Forget about infrun status and target
wait ptid. Call nullify_last_target_wait_ptid instead.
(fork_save_infrun_state): Forget about infrun status and target
wait ptid.
(free_fork): Forget about infrun status.
(detach_fork_command): Output cleanup.
* linux-nat.c (child_follow_fork): Add verbose messages when
detaching from parent or child (to match HPUX tests in testsuite).
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/infrun.c | 5 | ||||
-rw-r--r-- | gdb/linux-nat.c | 31 |
3 files changed, 20 insertions, 29 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7068961..32e5f5a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,18 @@ 2005-11-25 Michael Snyder <msnyder@redhat.com> + * infrun.c (set_last_target_status): Remove, replace with following. + (nullify_last_target_wait_ptid): New function. Now we don't need + to save this bit of state in linux-nat. + + * linux-nat.c (struct fork_info): Get rid of last_target_ptid, + last_target_waitstatus, and inferior status. + (fork_load_infrun_state): Forget about infrun status and target + wait ptid. Call nullify_last_target_wait_ptid instead. + (fork_save_infrun_state): Forget about infrun status and target + wait ptid. + (free_fork): Forget about infrun status. + (detach_fork_command): Output cleanup. + * linux-nat.c (child_follow_fork): Add verbose messages when detaching from parent or child (to match HPUX tests in testsuite). diff --git a/gdb/infrun.c b/gdb/infrun.c index cd8bf1d..94cd0c7 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1103,10 +1103,9 @@ get_last_target_status (ptid_t *ptidp, struct target_waitstatus *status) } void -set_last_target_status (ptid_t ptid, struct target_waitstatus status) +nullify_last_target_wait_ptid (void) { - target_last_wait_ptid = ptid; - target_last_waitstatus = status; + target_last_wait_ptid = minus_one_ptid; } /* Switch thread contexts, maintaining "infrun state". */ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index c79e693..bc33f2d 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -510,10 +510,6 @@ child_follow_fork (struct target_ops *ops, int follow_child) /* Reinstall ourselves, since we might have been removed in target_detach (which does other necessary cleanup). */ - /* FIXME: As written, we may do a push_target WITHOUT doing - a target_detach (if has_vforked). I'm going to momentarily - assume that that means it's OK to do the same if we've - forked but not detached. */ push_target (ops); @@ -3367,12 +3363,8 @@ struct fork_info In fact, this may be overloaded with kernel thread id, etc. */ int num; /* Convenient handle (GDB fork id) */ - struct inferior_status *status; struct regcache *savedregs; int clobber_regs; /* True if we should restore saved regs. */ - - ptid_t last_target_ptid; - struct target_waitstatus last_target_waitstatus; }; /* Load infrun state for the fork PTID. */ @@ -3380,17 +3372,12 @@ struct fork_info static void fork_load_infrun_state (struct fork_info *fp) { - extern void set_last_target_status (ptid_t, struct target_waitstatus); + extern void nullify_last_target_wait_ptid (); - if (fp->status) - { - restore_inferior_status (fp->status); - fp->status = NULL; - } if (fp->savedregs && fp->clobber_regs) regcache_cpy (current_regcache, fp->savedregs); - set_last_target_status (fp->ptid, fp->last_target_waitstatus); + nullify_last_target_wait_ptid (); } /* Save infrun state for the fork PTID. */ @@ -3398,16 +3385,10 @@ fork_load_infrun_state (struct fork_info *fp) static void fork_save_infrun_state (struct fork_info *fp, int clobber_regs) { -#if 0 - /* I claim that I no longer need any infrun status. */ - fp->status = save_inferior_status (0); -#endif if (fp->savedregs) regcache_xfree (fp->savedregs); fp->savedregs = regcache_dup (current_regcache); - get_last_target_status (&fp->last_target_ptid, - &fp->last_target_waitstatus); fp->clobber_regs = clobber_regs; } @@ -3433,8 +3414,6 @@ free_fork (struct fork_info *fp) /* FIXME: take care of any left-over step_resume breakpoints. */ if (fp) { - if (fp->status) - xfree (fp->status); if (fp->savedregs) regcache_xfree (fp->savedregs); xfree (fp); @@ -3600,11 +3579,11 @@ detach_fork_command (char *args, int from_tty) error ("Please switch to another fork before detaching the current fork"); if (ptrace (PTRACE_DETACH, ptid, 0, 0)) - error ("Unable to detach pid %s", target_tid_to_str (ptid)); + error ("Unable to detach %s", target_tid_to_str (ptid)); if (from_tty) - printf_filtered ("Detached process %s\n", - target_pid_or_tid_to_str (inferior_ptid)); + printf_filtered ("Detached %s\n", target_pid_or_tid_to_str (ptid)); + delete_fork (ptid); } |