From 043a49349c713dc329a2dfc413b082c3826ecdb8 Mon Sep 17 00:00:00 2001 From: Sergio Durigan Junior Date: Thu, 22 Dec 2016 13:30:42 -0500 Subject: [PATCH] Share parts of gdb/gdbthread.h with gdbserver GDB and gdbserver now share 'switch_to_thread' because of fork_inferior. To make things clear, I created a new file name common/common-gdbthread.h, and left the implementation specific to each part. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior * Makefile.in (HFILES_NO_SRCDIR): Add "common/common-gdbthread.h". * common/common-gdbthread.h: New file, with parts from "gdb/gdbthread.h". * gdbthread.h: Include "common-gdbthread.h". (switch_to_thread): Moved to "common/common-gdbthread.h". gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior * inferiors.c (switch_to_thread): New function. --- gdb/ChangeLog | 8 ++++++++ gdb/Makefile.in | 1 + gdb/common/common-gdbthread.h | 25 +++++++++++++++++++++++++ gdb/gdbserver/ChangeLog | 4 ++++ gdb/gdbserver/inferiors.c | 9 +++++++++ gdb/gdbthread.h | 5 +---- 6 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 gdb/common/common-gdbthread.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4bd70e516dd..a3c406c121e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2017-06-07 Sergio Durigan Junior + + * Makefile.in (HFILES_NO_SRCDIR): Add "common/common-gdbthread.h". + * common/common-gdbthread.h: New file, with parts from + "gdb/gdbthread.h". + * gdbthread.h: Include "common-gdbthread.h". + (switch_to_thread): Moved to "common/common-gdbthread.h". + 2017-06-07 Sergio Durigan Junior * Makefile.in (SFILES): Add "common/job-control.c". diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 4cefd847fa3..2b47d298217 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1508,6 +1508,7 @@ HFILES_NO_SRCDIR = \ common/common-debug.h \ common/common-defs.h \ common/common-exceptions.h \ + common/common-gdbthread.h \ common/common-regcache.h \ common/common-types.h \ common/common-utils.h \ diff --git a/gdb/common/common-gdbthread.h b/gdb/common/common-gdbthread.h new file mode 100644 index 00000000000..d8635e776e0 --- /dev/null +++ b/gdb/common/common-gdbthread.h @@ -0,0 +1,25 @@ +/* Common multi-process/thread control defs for GDB and gdbserver. + Copyright (C) 1987-2017 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef COMMON_GDBTHREAD_H +#define COMMON_GDBTHREAD_H + +/* Switch from one thread to another. */ +extern void switch_to_thread (ptid_t ptid); + +#endif /* ! COMMON_GDBTHREAD_H */ diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index ae458e22b0e..840cf79b35f 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,7 @@ +2017-06-07 Sergio Durigan Junior + + * inferiors.c (switch_to_thread): New function. + 2017-06-07 Sergio Durigan Junior * Makefile.in (SFILE): Add "common/job-control.c". diff --git a/gdb/gdbserver/inferiors.c b/gdb/gdbserver/inferiors.c index b65a7266e3f..5a4a0d1c23b 100644 --- a/gdb/gdbserver/inferiors.c +++ b/gdb/gdbserver/inferiors.c @@ -468,3 +468,12 @@ make_cleanup_restore_current_thread (void) { return make_cleanup (do_restore_current_thread_cleanup, current_thread); } + +/* See common/common-gdbthread.h. */ + +void +switch_to_thread (ptid_t ptid) +{ + if (!ptid_equal (ptid, minus_one_ptid)) + current_thread = find_thread_ptid (ptid); +} diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index 7bf2070338b..046bf95cf6f 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -32,6 +32,7 @@ struct symtab; #include "target/waitstatus.h" #include "cli/cli-utils.h" #include "common/refcounted-object.h" +#include "common-gdbthread.h" /* Frontend view of the thread state. Possible extensions: stepping, finishing, until(ling),... */ @@ -493,10 +494,6 @@ extern struct thread_info *iterate_over_threads (thread_callback_func, void *); extern int thread_count (void); -/* Switch from one thread to another. Also sets the STOP_PC - global. */ -extern void switch_to_thread (ptid_t ptid); - /* Switch from one thread to another. Does not read registers and sets STOP_PC to -1. */ extern void switch_to_thread_no_regs (struct thread_info *thread); -- 2.30.2