diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f85af9c2d4..2f14e5cf0b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-11-08 Djordje Todorovic + + * gdb.threads/tls-core.c: New file. + * gdb.threads/tls-core.exp: Likewise. + 2017-11-08 Pedro Alves * gdb.ada/complete.exp (p ): New test. diff --git a/gdb/testsuite/gdb.threads/tls-core.c b/gdb/testsuite/gdb.threads/tls-core.c new file mode 100644 index 0000000000..a92f7d8339 --- /dev/null +++ b/gdb/testsuite/gdb.threads/tls-core.c @@ -0,0 +1,37 @@ +/* This test is part of GDB, the GNU debugger. + + Copyright 2017 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 . */ + +#include + +int __thread foo = 0xdeadbeef; + +static void * +thread_proc (void *arg) +{ + return arg; +} + +int +main (void) +{ + pthread_t thread; + + pthread_create (&thread, NULL, thread_proc, NULL); + pthread_join (thread, NULL); + + return 0; +} diff --git a/gdb/testsuite/gdb.threads/tls-core.exp b/gdb/testsuite/gdb.threads/tls-core.exp new file mode 100644 index 0000000000..896676ba52 --- /dev/null +++ b/gdb/testsuite/gdb.threads/tls-core.exp @@ -0,0 +1,56 @@ +# Copyright 2017 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 . + +standard_testfile + +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ + executable { debug }] != "" } { + return -1 +} + + +clean_restart ${binfile} + +runto thread_proc + +# +# Generate corefile. +# +set corefile [standard_output_file gcore.test] +set core_supported [gdb_gcore_cmd "$corefile" "save a corefile"] +if {!$core_supported} { + return 0 +} + +# +# Restart gdb and load generated corefile. +# +clean_restart ${binfile} + +set core_loaded [gdb_core_cmd "$corefile" "load generated corefile"] +if { $core_loaded != 1 } { + # No use proceeding from here. + return 0 +} + +# This fails in cross-debugging due to the use of native `libthread_db'. +if {![string match $host_triplet $target_triplet]} { + setup_kfail "threads/22381" "*-*-*" +} +gdb_test "p/x foo" \ + "\\$\[0-9]+ = 0xdeadbeef" \ + "print thread-local storage variable" + +gdb_exit