diff options
author | Sergio Durigan Junior <sergiodj@redhat.com> | 2016-12-22 13:30:42 -0500 |
---|---|---|
committer | Sergio Durigan Junior <sergiodj@redhat.com> | 2017-06-07 19:56:01 -0400 |
commit | 043a49349c713dc329a2dfc413b082c3826ecdb8 (patch) | |
tree | 3c4c07e3fe64b479579a21ae40bd71723639857c /gdb | |
parent | 156525114c1cbbace0dec223494b842ffc60d52e (diff) | |
download | gdb-043a49349c713dc329a2dfc413b082c3826ecdb8.zip gdb-043a49349c713dc329a2dfc413b082c3826ecdb8.tar.gz gdb-043a49349c713dc329a2dfc413b082c3826ecdb8.tar.bz2 |
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 <sergiodj@redhat.com>
* 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 <sergiodj@redhat.com>
* inferiors.c (switch_to_thread): New function.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/Makefile.in | 1 | ||||
-rw-r--r-- | gdb/common/common-gdbthread.h | 25 | ||||
-rw-r--r-- | gdb/gdbserver/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/gdbserver/inferiors.c | 9 | ||||
-rw-r--r-- | gdb/gdbthread.h | 5 |
6 files changed, 48 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4bd70e5..a3c406c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> + * 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 <sergiodj@redhat.com> + * Makefile.in (SFILES): Add "common/job-control.c". (HFILES_NO_SRCDIR): Add "common/job-control.h". (COMMON_OBS): Add "job-control.o". diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 4cefd84..2b47d29 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 0000000..d8635e7 --- /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 <http://www.gnu.org/licenses/>. */ + +#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 ae458e2..840cf79 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,5 +1,9 @@ 2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> + * inferiors.c (switch_to_thread): New function. + +2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com> + * Makefile.in (SFILE): Add "common/job-control.c". (OBS): Add "job-control.o". diff --git a/gdb/gdbserver/inferiors.c b/gdb/gdbserver/inferiors.c index b65a726..5a4a0d1 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 7bf2070..046bf95 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); |