mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-02 19:46:09 +08:00
Mon Apr 28 21:25:32 1997 Michael Snyder <msnyder@cleaver.cygnus.com>
* Makefile.in: Add rule for gnu-nat.o and i386gnu-nat.o (Gnu Hurd) * config/i386/i386gnu.mh: remove rules for [i386]gnu-nat.o, now in Makefile.in (as for other targets); add NATDEPFILE corelow.o to satisfy symbol dependancy in solib.c (core_ops). * target.[ch] conditionalize Mach-specific signals so that they won't show up in non-Mach gdb's! * thread.c: add function thread_id_to_pid; change name of static function "thread_switch" to "switch_to_thread", to avoid conflict with Mach global symbol; move thread_cmd_list to global scope so targets can add their own thread commands. * infrun.c: sig_print_info: allow for long signal names. * gnu-nat.[ch]: tidying up comments. * gnu-nat.c: move several functions to static scope, just for tidy; remove calls to prune_threads and renumber_threads; gnu_wait must not return -1 when inferior exits; attach_to_child will modify inferior_pid in a way that allows fork_inferior to remain unchanged; remove extra arg from startup_inferior; move mach-specific thread commands here from thread.c.
This commit is contained in:
31
gdb/thread.c
31
gdb/thread.c
@ -65,7 +65,7 @@ static void
|
||||
prune_threads PARAMS ((void));
|
||||
|
||||
static void
|
||||
thread_switch PARAMS ((int pid));
|
||||
switch_to_thread PARAMS ((int pid));
|
||||
|
||||
static struct thread_info *
|
||||
find_thread_id PARAMS ((int num));
|
||||
@ -164,6 +164,17 @@ pid_to_thread_id (pid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
thread_id_to_pid (num)
|
||||
int num;
|
||||
{
|
||||
struct thread_info *thread = find_thread_id (num);
|
||||
if (thread)
|
||||
return thread->pid;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
in_thread_list (pid)
|
||||
int pid;
|
||||
@ -309,18 +320,18 @@ info_threads_command (arg, from_tty)
|
||||
|
||||
printf_filtered ("%d %s ", tp->num, target_pid_to_str (tp->pid));
|
||||
|
||||
thread_switch (tp->pid);
|
||||
switch_to_thread (tp->pid);
|
||||
print_stack_frame (selected_frame, -1, 0);
|
||||
}
|
||||
|
||||
thread_switch (current_pid);
|
||||
switch_to_thread (current_pid);
|
||||
prune_threads ();
|
||||
}
|
||||
|
||||
/* Switch from one thread to another. */
|
||||
|
||||
static void
|
||||
thread_switch (pid)
|
||||
switch_to_thread (pid)
|
||||
int pid;
|
||||
{
|
||||
if (pid == inferior_pid)
|
||||
@ -338,7 +349,7 @@ restore_current_thread (pid)
|
||||
int pid;
|
||||
{
|
||||
if (pid != inferior_pid)
|
||||
thread_switch (pid);
|
||||
switch_to_thread (pid);
|
||||
}
|
||||
|
||||
/* Apply a GDB command to a list of threads. List syntax is a whitespace
|
||||
@ -365,7 +376,7 @@ thread_apply_all_command (cmd, from_tty)
|
||||
|
||||
for (tp = thread_list; tp; tp = tp->next)
|
||||
{
|
||||
thread_switch (tp->pid);
|
||||
switch_to_thread (tp->pid);
|
||||
printf_filtered ("\nThread %d (%s):\n", tp->num,
|
||||
target_pid_to_str (inferior_pid));
|
||||
execute_command (cmd, from_tty);
|
||||
@ -428,7 +439,7 @@ thread_apply_command (tidlist, from_tty)
|
||||
continue;
|
||||
}
|
||||
|
||||
thread_switch (tp->pid);
|
||||
switch_to_thread (tp->pid);
|
||||
printf_filtered ("\nThread %d (%s):\n", tp->num,
|
||||
target_pid_to_str (inferior_pid));
|
||||
execute_command (cmd, from_tty);
|
||||
@ -459,16 +470,18 @@ see the IDs of currently known threads.");
|
||||
error ("Thread ID %d not known. Use the \"info threads\" command to\n\
|
||||
see the IDs of currently known threads.", num);
|
||||
|
||||
thread_switch (tp->pid);
|
||||
switch_to_thread (tp->pid);
|
||||
|
||||
printf_filtered ("[Switching to %s]\n", target_pid_to_str (inferior_pid));
|
||||
print_stack_frame (selected_frame, selected_frame_level, 1);
|
||||
}
|
||||
|
||||
/* Commands with a prefix of `thread'. */
|
||||
struct cmd_list_element *thread_cmd_list = NULL;
|
||||
|
||||
void
|
||||
_initialize_thread ()
|
||||
{
|
||||
static struct cmd_list_element *thread_cmd_list = NULL;
|
||||
static struct cmd_list_element *thread_apply_list = NULL;
|
||||
extern struct cmd_list_element *cmdlist;
|
||||
|
||||
|
Reference in New Issue
Block a user