diff options
Diffstat (limited to 'gdb/testsuite/gdb.threads')
-rw-r--r-- | gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c | 23 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/info-threads-cur-sal.c | 33 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/info-threads-cur-sal.exp | 57 |
3 files changed, 113 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c b/gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c new file mode 100644 index 0000000..2c29686 --- /dev/null +++ b/gdb/testsuite/gdb.threads/info-threads-cur-sal-2.c @@ -0,0 +1,23 @@ +/* Copyright 2013 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 <stddef.h> + +void * +start (void *arg) +{ + /* "list" should show this line. */ + return NULL; +} diff --git a/gdb/testsuite/gdb.threads/info-threads-cur-sal.c b/gdb/testsuite/gdb.threads/info-threads-cur-sal.c new file mode 100644 index 0000000..8a8c8b9 --- /dev/null +++ b/gdb/testsuite/gdb.threads/info-threads-cur-sal.c @@ -0,0 +1,33 @@ +/* Copyright 2007-2013 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 <assert.h> +#include <unistd.h> + +extern void *start (void *arg); + +int +main (void) +{ + pthread_t thread; + int i; + + i = pthread_create (&thread, NULL, start, NULL); + assert (i == 0); + pthread_join (thread, NULL); + + return 0; +} diff --git a/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp b/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp new file mode 100644 index 0000000..f18ae0c --- /dev/null +++ b/gdb/testsuite/gdb.threads/info-threads-cur-sal.exp @@ -0,0 +1,57 @@ +# Copyright (C) 2013 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/>. + +standard_testfile info-threads-cur-sal.c info-threads-cur-sal-2.c + +set executable ${testfile} + +if {[gdb_compile_pthreads \ + "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile2}" \ + "${binfile}" executable {debug}] != "" } { + return -1 +} + +clean_restart ${executable} + +if ![runto_main] { + return -1 +} + +gdb_breakpoint "start" +gdb_continue_to_breakpoint "start" + +set line [gdb_get_line_number "should show this line" "${srcfile2}"] + +gdb_test "list $line" \ + "\"list\" should show this line.*" \ + "list before info threads" + +# There used to be a bug where "info threads" would set the current +# SAL to the location of the last thread displayed. +gdb_test "info threads" \ + "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*\r\n 1 *Thread \[^\r\n\]* .* \[^\r\n\]*" \ + "info threads before break" + +# Check that "break" is still operating on the same file by default. +gdb_test "break $line" ".*${srcfile2}.*" "break on line" + +gdb_test "info threads" \ + "\r\n\[ \t\]*Id\[ \t\]+Target\[ \t\]+Id\[ \t\]+Frame\[ \t\]*\r\n\\* 2 *Thread \[^\r\n\]* at \[^\r\n\]*\r\n 1 *Thread \[^\r\n\]* .* \[^\r\n\]*" \ + "info threads before list" + +# And that so is "list". +gdb_test "list $line" \ + "\"list\" should show this line.*" \ + "list after info threads" |