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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-6.8/] [gdb/] [testsuite/] [gdb.ada/] [catch_ex.exp] - Diff between revs 816 and 827

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 816 Rev 827
# Copyright 2007, 2008 Free Software Foundation, Inc.
# Copyright 2007, 2008 Free Software Foundation, Inc.
#
#
# This program is free software; you can redistribute it and/or modify
# 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
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# (at your option) any later version.
#
#
# This program is distributed in the hope that it will be useful,
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# GNU General Public License for more details.
#
#
# You should have received a copy of the GNU General Public License
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see .
# along with this program.  If not, see .
if $tracelevel then {
if $tracelevel then {
    strace $tracelevel
    strace $tracelevel
}
}
load_lib "ada.exp"
load_lib "ada.exp"
set testdir "catch_ex"
set testdir "catch_ex"
set testfile "${testdir}/foo"
set testfile "${testdir}/foo"
set srcfile ${srcdir}/${subdir}/${testfile}.adb
set srcfile ${srcdir}/${subdir}/${testfile}.adb
set binfile ${objdir}/${subdir}/${testfile}
set binfile ${objdir}/${subdir}/${testfile}
file mkdir ${objdir}/${subdir}/${testdir}
file mkdir ${objdir}/${subdir}/${testdir}
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
  return -1
  return -1
}
}
gdb_exit
gdb_exit
gdb_start
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_load ${binfile}
# Some global variables used to simplify the maintenance of some of
# Some global variables used to simplify the maintenance of some of
# the regular expressions below.
# the regular expressions below.
set any_nb "\[0-9\]+"
set any_nb "\[0-9\]+"
set any_addr "0x\[0-9a-zA-Z\]+"
set any_addr "0x\[0-9a-zA-Z\]+"
set eol "\[\r\n\]+"
set eol "\[\r\n\]+"
set sp "\[ \t\]*"
set sp "\[ \t\]*"
set info_break_header "Num${sp}Type${sp}Disp${sp}Enb${sp}Address${sp}What"
set info_break_header "Num${sp}Type${sp}Disp${sp}Enb${sp}Address${sp}What"
set catch_exception_info \
set catch_exception_info \
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}all Ada exceptions"
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}all Ada exceptions"
####################################
####################################
# 1. Try catching all exceptions.  #
# 1. Try catching all exceptions.  #
####################################
####################################
if ![runto_main] then {
if ![runto_main] then {
   fail "Cannot run to main, testcase aborted"
   fail "Cannot run to main, testcase aborted"
   return 0
   return 0
}
}
set msg "insert catchpoint on all Ada exceptions"
set msg "insert catchpoint on all Ada exceptions"
gdb_test_multiple "catch exception" $msg {
gdb_test_multiple "catch exception" $msg {
    -re "Catchpoint $any_nb: all Ada exceptions$eol$gdb_prompt $" {
    -re "Catchpoint $any_nb: all Ada exceptions$eol$gdb_prompt $" {
        pass $msg
        pass $msg
    }
    }
    -re "Cannot break on __gnat_raise_nodefer_with_msg in this configuration\.$eol$gdb_prompt $" {
    -re "Cannot break on __gnat_raise_nodefer_with_msg in this configuration\.$eol$gdb_prompt $" {
        # If the runtime was not built with enough debug information,
        # If the runtime was not built with enough debug information,
        # or if it was stripped, we can not test exception
        # or if it was stripped, we can not test exception
        # catchpoints.
        # catchpoints.
        unsupported $msg
        unsupported $msg
        return -1
        return -1
    }
    }
}
}
gdb_test "info break" \
gdb_test "info break" \
         "$info_break_header$eol.*$catch_exception_info" \
         "$info_break_header$eol.*$catch_exception_info" \
         "info break, catch all Ada exceptions"
         "info break, catch all Ada exceptions"
set catchpoint_msg \
set catchpoint_msg \
  "Catchpoint $any_nb, CONSTRAINT_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
  "Catchpoint $any_nb, CONSTRAINT_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT1" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT1" \
         "continuing to first exception"
         "continuing to first exception"
set catchpoint_msg \
set catchpoint_msg \
  "Catchpoint $any_nb, PROGRAM_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
  "Catchpoint $any_nb, PROGRAM_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT2" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT2" \
         "continuing to second exception"
         "continuing to second exception"
################################################
################################################
# 2. Try catching only some of the exceptions. #
# 2. Try catching only some of the exceptions. #
################################################
################################################
# Here is the scenario:
# Here is the scenario:
#  - Restart the debugger from scratch, runto_main
#  - Restart the debugger from scratch, runto_main
#  - We'll catch only "Program_Error"
#  - We'll catch only "Program_Error"
#    We'll catch assertions
#    We'll catch assertions
#    We'll catch unhandled exceptions
#    We'll catch unhandled exceptions
#  - continue, we should see the first Program_Error exception
#  - continue, we should see the first Program_Error exception
#  - continue, we should see the failed assertion
#  - continue, we should see the failed assertion
#  - continue, we should see the unhandled Constrait_Error exception
#  - continue, we should see the unhandled Constrait_Error exception
#  - continue, the program exits.
#  - continue, the program exits.
if ![runto_main] then {
if ![runto_main] then {
   fail "Cannot run to main, testcase aborted"
   fail "Cannot run to main, testcase aborted"
   return 0
   return 0
}
}
gdb_test "catch exception Program_Error" \
gdb_test "catch exception Program_Error" \
         "Catchpoint $any_nb: \`Program_Error' Ada exception" \
         "Catchpoint $any_nb: \`Program_Error' Ada exception" \
         "insert catchpoint on Program_Error"
         "insert catchpoint on Program_Error"
gdb_test "catch assert" \
gdb_test "catch assert" \
         "Catchpoint $any_nb: failed Ada assertions" \
         "Catchpoint $any_nb: failed Ada assertions" \
         "insert catchpoint on failed assertions"
         "insert catchpoint on failed assertions"
gdb_test "catch exception unhandled" \
gdb_test "catch exception unhandled" \
         "Catchpoint $any_nb: unhandled Ada exceptions" \
         "Catchpoint $any_nb: unhandled Ada exceptions" \
         "insert catchpoint on unhandled exceptions"
         "insert catchpoint on unhandled exceptions"
set catch_exception_entry \
set catch_exception_entry \
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}\`Program_Error' Ada exception"
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}\`Program_Error' Ada exception"
set catch_assert_entry \
set catch_assert_entry \
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}failed Ada assertions"
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}failed Ada assertions"
set catch_unhandled_entry \
set catch_unhandled_entry \
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}unhandled Ada exceptions"
  "$any_nb${sp}breakpoint${sp}keep${sp}y${sp}$any_addr${sp}unhandled Ada exceptions"
gdb_test "info break" \
gdb_test "info break" \
         "$info_break_header$eol.*$catch_exception_entry$eol$catch_assert_entry$eol$catch_unhandled_entry" \
         "$info_break_header$eol.*$catch_exception_entry$eol$catch_assert_entry$eol$catch_unhandled_entry" \
         "info break, second run"
         "info break, second run"
set catchpoint_msg \
set catchpoint_msg \
  "Catchpoint $any_nb, PROGRAM_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
  "Catchpoint $any_nb, PROGRAM_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT2" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT2" \
         "continuing to Program_Error exception"
         "continuing to Program_Error exception"
set catchpoint_msg \
set catchpoint_msg \
  "Catchpoint $any_nb, failed assertion at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
  "Catchpoint $any_nb, failed assertion at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT3" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT3" \
         "continuing to failed assertion"
         "continuing to failed assertion"
set catchpoint_msg \
set catchpoint_msg \
  "Catchpoint $any_nb, unhandled CONSTRAINT_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
  "Catchpoint $any_nb, unhandled CONSTRAINT_ERROR at $any_addr in foo \\\(\\\).*at .*foo.adb:$any_nb"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT4" \
         "Continuing\.$eol$catchpoint_msg$eol.*SPOT4" \
         "continuing to unhandled exception"
         "continuing to unhandled exception"
gdb_test "continue" \
gdb_test "continue" \
         "Continuing\..*Program exited.*" \
         "Continuing\..*Program exited.*" \
         "continuing to program completion"
         "continuing to program completion"
 
 

powered by: WebSVN 2.1.0

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