Consolidate save_inferior_ptid/restore_inferior_ptid implementation to
one source file.
This commit is contained in:
parent
a7c92daeed
commit
ce696e0556
12 changed files with 64 additions and 239 deletions
|
@ -1,3 +1,26 @@
|
||||||
|
2001-05-06 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
|
* inferior.h (save_inferior_ptid): Declare.
|
||||||
|
* infrun.c (save_inferior_ptid, restore_inferior_ptid): Define.
|
||||||
|
|
||||||
|
* hpux-thread.c (save_inferior_ptid, restore_inferior_ptid):
|
||||||
|
Delete these functions.
|
||||||
|
* lin-lwp.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
|
||||||
|
* lin-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
|
||||||
|
* linux-thread.c (save_inferior_ptid, restore_inferior_ptid):
|
||||||
|
Likewise.
|
||||||
|
* proc-service.c (save_inferior_ptid, restore_inferior_ptid):
|
||||||
|
Likewise.
|
||||||
|
* sol-thread.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
|
||||||
|
* thread-db.c (save_inferior_ptid, restore_inferior_ptid): Likewise.
|
||||||
|
|
||||||
|
* somsolib.c (reset_inferior_ptid): Delete.
|
||||||
|
(som_solib_remove_inferior_hook): Use save_inferior_ptid() to
|
||||||
|
build the cleanup struct.
|
||||||
|
|
||||||
|
* breakpoint.c (reattach_breakpoints, detach_breakpoints): Use
|
||||||
|
a cleanup to save/restore inferior_ptid.
|
||||||
|
|
||||||
2001-05-06 Mark Kettenis <kettenis@gnu.org>
|
2001-05-06 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
Implement attach/detach for multi-threaded programs on Linux.
|
Implement attach/detach for multi-threaded programs on Linux.
|
||||||
|
|
|
@ -1061,10 +1061,10 @@ reattach_breakpoints (int pid)
|
||||||
{
|
{
|
||||||
register struct breakpoint *b;
|
register struct breakpoint *b;
|
||||||
int val;
|
int val;
|
||||||
ptid_t saved_inferior_ptid = inferior_ptid;
|
struct cleanup *old_chain = save_inferior_ptid ();
|
||||||
|
|
||||||
/* FIXME: use a cleanup, to insure that inferior_ptid gets replaced! */
|
/* Set inferior_ptid; remove_breakpoint uses this global. */
|
||||||
inferior_ptid = pid_to_ptid (pid); /* Because remove_breakpoint will use this global. */
|
inferior_ptid = pid_to_ptid (pid);
|
||||||
ALL_BREAKPOINTS (b)
|
ALL_BREAKPOINTS (b)
|
||||||
{
|
{
|
||||||
if (b->inserted)
|
if (b->inserted)
|
||||||
|
@ -1076,12 +1076,12 @@ reattach_breakpoints (int pid)
|
||||||
val = target_insert_breakpoint (b->address, b->shadow_contents);
|
val = target_insert_breakpoint (b->address, b->shadow_contents);
|
||||||
if (val != 0)
|
if (val != 0)
|
||||||
{
|
{
|
||||||
inferior_ptid = saved_inferior_ptid;
|
do_cleanups (old_chain);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inferior_ptid = saved_inferior_ptid;
|
do_cleanups (old_chain);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1221,13 +1221,13 @@ detach_breakpoints (int pid)
|
||||||
{
|
{
|
||||||
register struct breakpoint *b;
|
register struct breakpoint *b;
|
||||||
int val;
|
int val;
|
||||||
ptid_t saved_inferior_ptid = inferior_ptid;
|
struct cleanup *old_chain = save_inferior_ptid ();
|
||||||
|
|
||||||
if (pid == PIDGET (inferior_ptid))
|
if (pid == PIDGET (inferior_ptid))
|
||||||
error ("Cannot detach breakpoints of inferior_ptid");
|
error ("Cannot detach breakpoints of inferior_ptid");
|
||||||
|
|
||||||
/* FIXME: use a cleanup, to insure that inferior_ptid gets replaced! */
|
/* Set inferior_ptid; remove_breakpoint uses this global. */
|
||||||
inferior_ptid = pid_to_ptid (pid); /* Because remove_breakpoint will use this global. */
|
inferior_ptid = pid_to_ptid (pid);
|
||||||
ALL_BREAKPOINTS (b)
|
ALL_BREAKPOINTS (b)
|
||||||
{
|
{
|
||||||
if (b->inserted)
|
if (b->inserted)
|
||||||
|
@ -1235,12 +1235,12 @@ detach_breakpoints (int pid)
|
||||||
val = remove_breakpoint (b, mark_inserted);
|
val = remove_breakpoint (b, mark_inserted);
|
||||||
if (val != 0)
|
if (val != 0)
|
||||||
{
|
{
|
||||||
inferior_ptid = saved_inferior_ptid;
|
do_cleanups (old_chain);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inferior_ptid = saved_inferior_ptid;
|
do_cleanups (old_chain);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,10 +62,6 @@ static ptid_t main_ptid; /* Real process ID */
|
||||||
static CORE_ADDR P_cma__g_known_threads;
|
static CORE_ADDR P_cma__g_known_threads;
|
||||||
static CORE_ADDR P_cma__g_current_thread;
|
static CORE_ADDR P_cma__g_current_thread;
|
||||||
|
|
||||||
static struct cleanup *save_inferior_ptid (void);
|
|
||||||
|
|
||||||
static void restore_inferior_ptid (ptid_t pid);
|
|
||||||
|
|
||||||
static void hpux_thread_resume (ptid_t ptid, int step,
|
static void hpux_thread_resume (ptid_t ptid, int step,
|
||||||
enum target_signal signo);
|
enum target_signal signo);
|
||||||
|
|
||||||
|
@ -73,46 +69,6 @@ static void init_hpux_thread_ops (void);
|
||||||
|
|
||||||
static struct target_ops hpux_thread_ops;
|
static struct target_ops hpux_thread_ops;
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
LOCAL FUNCTION
|
|
||||||
|
|
||||||
save_inferior_ptid - Save inferior_ptid on the cleanup list
|
|
||||||
restore_inferior_ptid - Restore inferior_ptid from the cleanup list
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
|
|
||||||
struct cleanup *save_inferior_ptid ()
|
|
||||||
void restore_inferior_ptid (int pid)
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
|
|
||||||
These two functions act in unison to restore inferior_ptid in
|
|
||||||
case of an error.
|
|
||||||
|
|
||||||
NOTES
|
|
||||||
|
|
||||||
inferior_ptid is a global variable that needs to be changed by many of
|
|
||||||
these routines before calling functions in procfs.c. In order to
|
|
||||||
guarantee that inferior_ptid gets restored (in case of errors), you
|
|
||||||
need to call save_inferior_ptid before changing it. At the end of the
|
|
||||||
function, you should invoke do_cleanups to restore it.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
return make_cleanup (restore_inferior_ptid, inferior_ptid);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (ptid_t ptid)
|
|
||||||
{
|
|
||||||
inferior_ptid = ptid;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int find_active_thread (void);
|
static int find_active_thread (void);
|
||||||
|
|
||||||
static int cached_thread;
|
static int cached_thread;
|
||||||
|
|
|
@ -51,6 +51,11 @@ extern void write_inferior_status_register (struct inferior_status
|
||||||
*inf_status, int regno,
|
*inf_status, int regno,
|
||||||
LONGEST val);
|
LONGEST val);
|
||||||
|
|
||||||
|
/* Save value of inferior_ptid so that it may be restored by
|
||||||
|
a later call to do_cleanups(). Returns the struct cleanup
|
||||||
|
pointer needed for later doing the cleanup. */
|
||||||
|
extern struct cleanup * save_inferior_ptid (void);
|
||||||
|
|
||||||
extern void set_sigint_trap (void);
|
extern void set_sigint_trap (void);
|
||||||
|
|
||||||
extern void clear_sigint_trap (void);
|
extern void clear_sigint_trap (void);
|
||||||
|
|
24
gdb/infrun.c
24
gdb/infrun.c
|
@ -4192,6 +4192,30 @@ discard_inferior_status (struct inferior_status *inf_status)
|
||||||
free_inferior_status (inf_status);
|
free_inferior_status (inf_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper function for save_inferior_ptid */
|
||||||
|
|
||||||
|
static void
|
||||||
|
restore_inferior_ptid (void *arg)
|
||||||
|
{
|
||||||
|
ptid_t *saved_ptid_ptr = arg;
|
||||||
|
inferior_ptid = *saved_ptid_ptr;
|
||||||
|
xfree (arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Save the value of inferior_ptid so that it may be restored by a
|
||||||
|
later call to do_cleanups(). Returns the struct cleanup pointer
|
||||||
|
needed for later doing the cleanup. */
|
||||||
|
|
||||||
|
struct cleanup *
|
||||||
|
save_inferior_ptid (void)
|
||||||
|
{
|
||||||
|
ptid_t *saved_ptid_ptr;
|
||||||
|
|
||||||
|
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
||||||
|
*saved_ptid_ptr = inferior_ptid;
|
||||||
|
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_infrun (void)
|
build_infrun (void)
|
||||||
|
|
|
@ -267,27 +267,6 @@ iterate_over_lwps (int (*callback) (struct lwp_info *, void *), void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Helper functions. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *arg)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr = arg;
|
|
||||||
inferior_ptid = *saved_ptid_ptr;
|
|
||||||
xfree (arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr;
|
|
||||||
|
|
||||||
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid_ptr = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Implementation of the PREPARE_TO_PROCEED hook for the Linux LWP
|
/* Implementation of the PREPARE_TO_PROCEED hook for the Linux LWP
|
||||||
layer.
|
layer.
|
||||||
|
|
||||||
|
@ -722,7 +701,7 @@ lin_lwp_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
|
||||||
if (debug_lin_lwp)
|
if (debug_lin_lwp)
|
||||||
fprintf_unfiltered (gdb_stdlog,
|
fprintf_unfiltered (gdb_stdlog,
|
||||||
"Waiting for specific LWP %d.\n",
|
"Waiting for specific LWP %d.\n",
|
||||||
(int) GET_LWP (ptid));
|
GET_LWP (ptid));
|
||||||
|
|
||||||
/* We have a specific LWP to check. */
|
/* We have a specific LWP to check. */
|
||||||
lp = find_lwp_pid (ptid);
|
lp = find_lwp_pid (ptid);
|
||||||
|
|
|
@ -304,8 +304,6 @@ ps_ptwrite (gdb_ps_prochandle_t ph, /* write to text segment */
|
||||||
return rw_common (ph, addr, (char *) buf, size, PS_WRITE);
|
return rw_common (ph, addr, (char *) buf, size, PS_WRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct cleanup *save_inferior_ptid (void);
|
|
||||||
static void restore_inferior_ptid (void *saved_pid);
|
|
||||||
static char *thr_err_string (td_err_e);
|
static char *thr_err_string (td_err_e);
|
||||||
static char *thr_state_string (td_thr_state_e);
|
static char *thr_state_string (td_thr_state_e);
|
||||||
|
|
||||||
|
@ -623,52 +621,6 @@ init_thread_db_library (void)
|
||||||
* Local utility functions:
|
* Local utility functions:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
LOCAL FUNCTION
|
|
||||||
|
|
||||||
save_inferior_ptid - Save inferior_ptid on the cleanup list
|
|
||||||
restore_inferior_ptid - Restore inferior_ptid from the cleanup list
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
|
|
||||||
struct cleanup *save_inferior_ptid (void);
|
|
||||||
void restore_inferior_ptid (void *saved_pid);
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
|
|
||||||
These two functions act in unison to restore inferior_ptid in
|
|
||||||
case of an error.
|
|
||||||
|
|
||||||
NOTES
|
|
||||||
|
|
||||||
inferior_ptid is a global variable that needs to be changed by many
|
|
||||||
of these routines before calling functions in procfs.c. In order
|
|
||||||
to guarantee that inferior_ptid gets restored (in case of errors),
|
|
||||||
you need to call save_inferior_ptid before changing it. At the end
|
|
||||||
of the function, you should invoke do_cleanups to restore it.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr;
|
|
||||||
|
|
||||||
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid_ptr = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *arg)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr = arg;
|
|
||||||
inferior_ptid = *saved_ptid_ptr;
|
|
||||||
xfree (arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
LOCAL FUNCTION
|
LOCAL FUNCTION
|
||||||
|
|
|
@ -374,26 +374,6 @@ linuxthreads_find_trap (int pid, int stop)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cleanup stub for save_inferior_ptid. */
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *arg)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr = arg;
|
|
||||||
inferior_ptid = *saved_ptid_ptr;
|
|
||||||
xfree (arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Register a cleanup to restore the value of inferior_ptid. */
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr;
|
|
||||||
|
|
||||||
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid_ptr = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sigchld_handler (int signo)
|
sigchld_handler (int signo)
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,24 +60,6 @@ typedef size_t gdb_ps_size_t;
|
||||||
|
|
||||||
/* Helper functions. */
|
/* Helper functions. */
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *arg)
|
|
||||||
{
|
|
||||||
ptid_t *saved_pid_ptr = arg;
|
|
||||||
inferior_ptid = *saved_pid_ptr;
|
|
||||||
xfree (arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr;
|
|
||||||
|
|
||||||
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid_ptr = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Transfer LEN bytes of memory between BUF and address ADDR in the
|
/* Transfer LEN bytes of memory between BUF and address ADDR in the
|
||||||
process specified by PH. If WRITE, transfer them to the process,
|
process specified by PH. If WRITE, transfer them to the process,
|
||||||
else transfer them from the process. Returns PS_OK for success,
|
else transfer them from the process. Returns PS_OK for success,
|
||||||
|
|
|
@ -97,8 +97,6 @@ static struct ps_prochandle main_ph;
|
||||||
static td_thragent_t *main_ta;
|
static td_thragent_t *main_ta;
|
||||||
static int sol_thread_active = 0;
|
static int sol_thread_active = 0;
|
||||||
|
|
||||||
static struct cleanup *save_inferior_ptid (void);
|
|
||||||
static void restore_inferior_ptid (void *pid);
|
|
||||||
static char *td_err_string (td_err_e errcode);
|
static char *td_err_string (td_err_e errcode);
|
||||||
static char *td_state_string (td_thr_state_e statecode);
|
static char *td_state_string (td_thr_state_e statecode);
|
||||||
static ptid_t thread_to_lwp (ptid_t thread_id, int default_lwp);
|
static ptid_t thread_to_lwp (ptid_t thread_id, int default_lwp);
|
||||||
|
@ -395,50 +393,6 @@ lwp_to_thread (ptid_t lwp)
|
||||||
return BUILD_THREAD (ti.ti_tid, PIDGET (lwp));
|
return BUILD_THREAD (ti.ti_tid, PIDGET (lwp));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
LOCAL FUNCTION
|
|
||||||
|
|
||||||
save_inferior_ptid - Save inferior_ptid on the cleanup list
|
|
||||||
restore_inferior_ptid - Restore inferior_ptid from the cleanup list
|
|
||||||
|
|
||||||
SYNOPSIS
|
|
||||||
|
|
||||||
struct cleanup *save_inferior_ptid ()
|
|
||||||
void restore_inferior_ptid (int pid)
|
|
||||||
|
|
||||||
DESCRIPTION
|
|
||||||
|
|
||||||
These two functions act in unison to restore inferior_ptid in
|
|
||||||
case of an error.
|
|
||||||
|
|
||||||
NOTES
|
|
||||||
|
|
||||||
inferior_ptid is a global variable that needs to be changed by many of
|
|
||||||
these routines before calling functions in procfs.c. In order to
|
|
||||||
guarantee that inferior_ptid gets restored (in case of errors), you
|
|
||||||
need to call save_inferior_ptid before changing it. At the end of the
|
|
||||||
function, you should invoke do_cleanups to restore it.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *data)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid = data;
|
|
||||||
inferior_ptid = *saved_ptid;
|
|
||||||
xfree (saved_ptid);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Most target vector functions from here on actually just pass through to
|
/* Most target vector functions from here on actually just pass through to
|
||||||
procfs.c, as they don't need to do anything specific for threads. */
|
procfs.c, as they don't need to do anything specific for threads. */
|
||||||
|
|
|
@ -1031,14 +1031,6 @@ keep_going:
|
||||||
clear_symtab_users ();
|
clear_symtab_users ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
reset_inferior_ptid (int saved_inferior_ptid)
|
|
||||||
{
|
|
||||||
inferior_ptid = saved_inferior_ptid;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* This operation removes the "hook" between GDB and the dynamic linker,
|
/* This operation removes the "hook" between GDB and the dynamic linker,
|
||||||
which causes the dld to notify GDB of shared library events.
|
which causes the dld to notify GDB of shared library events.
|
||||||
|
|
||||||
|
@ -1057,8 +1049,7 @@ som_solib_remove_inferior_hook (int pid)
|
||||||
int status;
|
int status;
|
||||||
char dld_flags_buffer[TARGET_INT_BIT / TARGET_CHAR_BIT];
|
char dld_flags_buffer[TARGET_INT_BIT / TARGET_CHAR_BIT];
|
||||||
unsigned int dld_flags_value;
|
unsigned int dld_flags_value;
|
||||||
int saved_inferior_ptid = inferior_ptid;
|
struct cleanup *old_cleanups = save_inferior_ptid ();
|
||||||
struct cleanup *old_cleanups = make_cleanup (reset_inferior_ptid, saved_inferior_ptid);
|
|
||||||
|
|
||||||
/* Ensure that we're really operating on the specified process. */
|
/* Ensure that we're really operating on the specified process. */
|
||||||
inferior_ptid = pid_to_ptid (pid);
|
inferior_ptid = pid_to_ptid (pid);
|
||||||
|
|
|
@ -150,27 +150,6 @@ struct private_thread_info
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Helper functions. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_inferior_ptid (void *arg)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr = arg;
|
|
||||||
inferior_ptid = *saved_ptid_ptr;
|
|
||||||
xfree (arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct cleanup *
|
|
||||||
save_inferior_ptid (void)
|
|
||||||
{
|
|
||||||
ptid_t *saved_ptid_ptr;
|
|
||||||
|
|
||||||
saved_ptid_ptr = xmalloc (sizeof (ptid_t));
|
|
||||||
*saved_ptid_ptr = inferior_ptid;
|
|
||||||
return make_cleanup (restore_inferior_ptid, saved_ptid_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
thread_db_err_str (td_err_e err)
|
thread_db_err_str (td_err_e err)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue