OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [gdb/] [testsuite/] [gdb.threads/] [pthread_cond_wait.exp] - Blame information for rev 25

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 25 jlechner
# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
2
 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 3 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program.  If not, see .
15
 
16
# Please email any bugs, comments, and/or additions to this file to:
17
# bug-gdb@gnu.org
18
 
19
# This file verifies that GDB is able to compute a backtrace for a thread
20
# being blocked on a call to pthread_cond_wait().
21
 
22
if $tracelevel then {
23
        strace $tracelevel
24
}
25
 
26
set testfile "pthread_cond_wait"
27
set srcfile ${testfile}.c
28
set binfile ${objdir}/${subdir}/${testfile}
29
 
30
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}"]] != "" } {
31
    return -1
32
}
33
 
34
gdb_exit
35
gdb_start
36
gdb_reinitialize_dir $srcdir/$subdir
37
gdb_load ${binfile}
38
runto_main
39
 
40
gdb_test "break break_me" \
41
    "Breakpoint 2 at .*: file .*${srcfile}, line .*" \
42
         "breakpoint on break_me"
43
 
44
gdb_test "continue" \
45
         ".*Breakpoint 2, break_me ().*" \
46
         "run to break_me"
47
 
48
#
49
# Backtrace all threads, find the one running noreturn, and
50
# verify that we are able to get a sensible backtrace, including
51
# the frame for the pthread_cond_wait() call.
52
#
53
# The string below will only match if the functions named
54
# occur in a single thread's backtrace, in the given order.
55
#
56
 
57
global hex
58
global decimal
59
 
60
#
61
# This is a "backtrace break" ("btb"):
62
#
63
set btb "\[^\r\n\]+\[\r\n\]+\#${decimal}\[ \t\]+${hex} in "
64
 
65
# One of the threads is blocked on a call to pthread_cond_wait, and
66
# we want to verify that we are able to get a sensible backtrace for
67
# that thread.  Because we don't know its thread ID, we can't switch
68
# to it before doing the backtrace. So we get a backtrace for all
69
# threads, and verify that one them returns the expected backtrace.
70
gdb_test "thread apply all backtrace" \
71
    "pthread_cond_wait${btb}cond_wait${btb}noreturn${btb}forever_pthread.*" \
72
    "backtrace in blocked thread"
73
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.