URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.ada/] [tasks.exp] - Rev 227
Compare with Previous | Blame | View Log
# Copyright 2009, 2010 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/>.if $tracelevel then {strace $tracelevel}load_lib "ada.exp"set testdir "tasks"set testfile "${testdir}/foo"set srcfile ${srcdir}/${subdir}/${testfile}.adbset binfile ${objdir}/${subdir}/${testfile}file mkdir ${objdir}/${subdir}/${testdir}if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {return -1}gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}set bp_location [gdb_get_line_number "STOP_HERE" ${testdir}/foo.adb]runto "foo.adb:$bp_location"# Make sure that all tasks appear in the "info tasks" listing, and# that the active task is the environment task.gdb_test "info tasks" \[join {" ID TID P-ID Pri State Name" \"\\* 1 .* main_task" \" 2 .* task_list\\(1\\)" \" 3 .* task_list\\(2\\)" \" 4 .* task_list\\(3\\)"} \"\r\n"] \"info tasks before inserting breakpoint"# Now, insert a breakpoint that should stop only if task 3 stops.gdb_test "break break_me task 3" "Breakpoint .* at .*"# Continue to that breakpoint. Task 2 should hit it first, and GDB# is expected to ignore that hit and resume the execution. Only then# task 3 will hit our breakpoint, and GDB is expected to stop at that# point.gdb_test "continue" \".*Breakpoint.*, foo.break_me \\(\\).*" \"continue to breakpoint"# Check that it is indeed task 3 that hit the breakpoint by checking# which is the active task.gdb_test "info tasks" \[join {" ID TID P-ID Pri State Name" \" 1 .* main_task" \" 2 .* task_list\\(1\\)" \"\\* 3 .* task_list\\(2\\)" \" 4 .* task_list\\(3\\)"} \"\r\n"] \"info tasks after hitting breakpoint"# Now, resume the execution and make sure that GDB does not stop when# task 4 hits the breakpoint. Continuing thus results in our program# running to completion.gdb_test "continue" \".*Program exited normally\..*" \"continue until end of program"
