Add test for user context selection sync
This patch adds a test to verify that events are sent properly to all UIs when the user selection context (inferior, thread, frame) changes. The goal of the C test file is to provide two threads that are stopped with the same predictable backtrace (so that we can test frame switching). The barrier helps us know when the child threads are started. Then, scheduler-locking is used to bring each thread one by one to the position we expect them to be during the test. gdb/testsuite/ChangeLog: YYYY-MM-DD Antoine Tremblay <antoine.tremblay@ericsson.com> YYYY-MM-DD Simon Marchi <simon.marchi@ericsson.com> PR gdb/20487 * gdb.mi/user-selected-context-sync.exp: New file. * gdb.mi/user-selected-context-sync.c: New file.
This commit is contained in:
parent
4034d0ff52
commit
9c36d9544f
@ -1,3 +1,10 @@
|
||||
2016-10-03 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
2016-10-03 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
PR gdb/20487
|
||||
* gdb.mi/user-selected-context-sync.exp: New file.
|
||||
* gdb.mi/user-selected-context-sync.c: New file.
|
||||
|
||||
2016-10-03 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
2016-10-03 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
|
63
gdb/testsuite/gdb.mi/user-selected-context-sync.c
Normal file
63
gdb/testsuite/gdb.mi/user-selected-context-sync.c
Normal file
@ -0,0 +1,63 @@
|
||||
/* This testcase is part of GDB, the GNU debugger.
|
||||
|
||||
Copyright 2016 Free Software Foundation, Inc.
|
||||
|
||||
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/>.
|
||||
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define NUM_THREADS 2
|
||||
|
||||
static pthread_barrier_t barrier;
|
||||
|
||||
static void
|
||||
child_sub_function (void)
|
||||
{
|
||||
while (1); /* thread loop line */
|
||||
}
|
||||
|
||||
static void *
|
||||
child_function (void *args)
|
||||
{
|
||||
pthread_barrier_wait (&barrier);
|
||||
|
||||
child_sub_function (); /* thread caller line */
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
int i = 0;
|
||||
pthread_t threads[NUM_THREADS];
|
||||
|
||||
/* Make the test exit eventually. */
|
||||
alarm (20);
|
||||
|
||||
/* Initialize the barrier, NUM_THREADS plus the main thread. */
|
||||
pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1);
|
||||
|
||||
for (i = 0; i < NUM_THREADS; i++)
|
||||
pthread_create (&threads[i], NULL, child_function, NULL);
|
||||
|
||||
pthread_barrier_wait (&barrier);
|
||||
|
||||
while (1); /* main break line */
|
||||
|
||||
return 0;
|
||||
}
|
1285
gdb/testsuite/gdb.mi/user-selected-context-sync.exp
Normal file
1285
gdb/testsuite/gdb.mi/user-selected-context-sync.exp
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user