diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-26 19:09:34 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-26 19:09:34 +0000 |
commit | 1c3134475762978047d32e51f5a8e374b49d930e (patch) | |
tree | abb1aee47636db60c94a657d1b7a9ae3c209a11a /gdb/testsuite/gdb.python | |
parent | 4493af582fb58919e55906e881a5665c2c8bd849 (diff) | |
download | gdb-1c3134475762978047d32e51f5a8e374b49d930e.tar.gz |
gdb/
* python/py-inferior.c (infpy_threads): Call update_thread_list ().
gdb/testsuite/
* gdb.python/py-inferior.c (thread): New function.
(check_threads): New function.
(test_threads): New function.
* gdb.python/py-inferior.exp: Added test.
Replaced runto with continue to breakpoint.
Diffstat (limited to 'gdb/testsuite/gdb.python')
-rw-r--r-- | gdb/testsuite/gdb.python/py-inferior.c | 41 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-inferior.exp | 15 |
2 files changed, 53 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.python/py-inferior.c b/gdb/testsuite/gdb.python/py-inferior.c index 04ec4769263..3ee9a462060 100644 --- a/gdb/testsuite/gdb.python/py-inferior.c +++ b/gdb/testsuite/gdb.python/py-inferior.c @@ -2,9 +2,11 @@ #include <stdlib.h> #include <stdint.h> #include <string.h> +#include <pthread.h> #define CHUNK_SIZE 16000 /* same as findcmd.c's */ #define BUF_SIZE (2 * CHUNK_SIZE) /* at least two chunks */ +#define NUMTH 8 int8_t int8_search_buf[100]; int16_t int16_search_buf[100]; @@ -43,8 +45,47 @@ init_bufs () memset (search_buf, 'x', search_buf_size); } +static void * +thread (void *param) +{ + pthread_barrier_t *barrier = (pthread_barrier_t *) param; + + pthread_barrier_wait (barrier); + + return param; +} + +static void +check_threads (pthread_barrier_t *barrier) +{ + pthread_barrier_wait (barrier); +} + +extern int +test_threads (void) +{ + pthread_t threads[NUMTH]; + pthread_barrier_t barrier; + int i; + + pthread_barrier_init (&barrier, NULL, NUMTH + 1); + + for (i = 0; i < NUMTH; ++i) + pthread_create (&threads[i], NULL, thread, &barrier); + + check_threads (&barrier); + + for (i = 0; i < NUMTH; ++i) + pthread_join (threads[i], NULL); + + pthread_barrier_destroy (&barrier); + + return 0; +} + int main (int argc, char *argv[]) { + test_threads (); init_bufs (); return f1 (1, 2); diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp index b40a5143965..15e684aa226 100644 --- a/gdb/testsuite/gdb.python/py-inferior.exp +++ b/gdb/testsuite/gdb.python/py-inferior.exp @@ -20,7 +20,7 @@ load_lib gdb-python.exp standard_testfile -if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { +if { [gdb_compile_pthreads ${srcdir}/${subdir}/${srcfile} ${binfile} executable {debug}] != "" } { return -1 } @@ -48,8 +48,6 @@ if ![runto_main] then { return 0 } -runto [gdb_get_line_number "Break here."] - # Test basic gdb.Inferior attributes and methods. gdb_py_test_silent_cmd "python inferiors = gdb.inferiors ()" "get inferiors list" 1 @@ -62,6 +60,17 @@ gdb_test "python print 'result =', i0.pid" " = \[0-9\]+" "test Inferior.pid" gdb_test "python print 'result =', i0.was_attached" " = False" "test Inferior.was_attached" gdb_test "python print i0.threads ()" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads" +# Test the number of inferior threads. + +gdb_breakpoint check_threads +gdb_continue_to_breakpoint "cont to check_threads" ".*pthread_barrier_wait.*" +gdb_test "python print len (i0.threads ())" "\r\n9" "test Inferior.threads 2" + +# Proceed to the next test. + +gdb_breakpoint [gdb_get_line_number "Break here."] +gdb_continue_to_breakpoint "cont to Break here." ".*Break here\..*" + # Test memory read and write operations. gdb_py_test_silent_cmd "python addr = gdb.selected_frame ().read_var ('str')" \ |