diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb | 80 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-reverse.exp | 346 |
3 files changed, 219 insertions, 213 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e993c49..5bd7853 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-07-04 Pedro Alves <palves@redhat.com> + + * gdb.ada/packed_tagged/comp_bug.adb: Convert to unix text line + endings. + * gdb.mi/mi-reverse.exp: Convert to unix text line endings. + 2012-07-03 Stan Shebs <stan@codesourcery.com> * gdb.base/info-os.c (main): Retry resource acquisition until an diff --git a/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb b/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb index 64bcbfb..5899b09 100644 --- a/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb +++ b/gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb @@ -1,40 +1,40 @@ --- Copyright 2008-2012 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/>.
-
-procedure Comp_Bug is
-
- type Number_T (Exists : Boolean := False) is
- record
- case Exists is
- when True =>
- Value : Natural range 0 .. 255;
- when False =>
- null;
- end case;
- end record;
- pragma Pack (Number_T);
-
- X : Number_T;
- -- brobecker/2007-09-06: At the time when this issue (G904-017) was
- -- reported, the problem only reproduced if the variable was declared
- -- inside a function (in other words, stored on stack). Although
- -- the issue probably still existed when I tried moving this variable
- -- to a package spec, the symptoms inside GDB disappeared.
-begin
- X := (Exists => True, Value => 10);
- if X.Exists then -- STOP
- X.Value := X.Value + 1;
- end if;
-end Comp_Bug;
+-- Copyright 2008-2012 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/>. + +procedure Comp_Bug is + + type Number_T (Exists : Boolean := False) is + record + case Exists is + when True => + Value : Natural range 0 .. 255; + when False => + null; + end case; + end record; + pragma Pack (Number_T); + + X : Number_T; + -- brobecker/2007-09-06: At the time when this issue (G904-017) was + -- reported, the problem only reproduced if the variable was declared + -- inside a function (in other words, stored on stack). Although + -- the issue probably still existed when I tried moving this variable + -- to a package spec, the symptoms inside GDB disappeared. +begin + X := (Exists => True, Value => 10); + if X.Exists then -- STOP + X.Value := X.Value + 1; + end if; +end Comp_Bug; diff --git a/gdb/testsuite/gdb.mi/mi-reverse.exp b/gdb/testsuite/gdb.mi/mi-reverse.exp index 08025bd..d330770 100644 --- a/gdb/testsuite/gdb.mi/mi-reverse.exp +++ b/gdb/testsuite/gdb.mi/mi-reverse.exp @@ -1,173 +1,173 @@ -# Copyright 2009, 2011-2012 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/>.
-
-# Test Machine interface (MI) operations
-# Verify that, using the MI, we can run a simple program in both forward
-# and reverse directions with the following execution commands:
-# - exec-continue
-# - exec-finish
-# - exec-next
-# - exec-step
-# - exec-next-instruction
-# - exec-step-instruction
-
-# The goal is not to test gdb functionality, which is done by other tests,
-# but to verify the correct output response to MI operations.
-#
-
-if ![target_info exists gdb,can_reverse] {
- return
-}
-
-load_lib mi-support.exp
-set MIFLAGS "-i=mi"
-
-gdb_exit
-if [mi_gdb_start] {
- continue
-}
-
-set testfile mi-reverse
-set srcfile basics.c
-set binfile ${objdir}/${subdir}/mi2-reverse
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
- untested ${testfile}.exp
- return -1
-}
-
-mi_run_to_main
-
-if [target_info exists gdb,use_precord] {
- # Activate process record/replay
- if [mi_gdb_test "-interpreter-exec console record" \
- {\^done} "Turn on process record"] {
- warning "Fail to activate process record/replay, tests in this group will not be performed.\n";
- return -1
- }
-}
-
-# Locate line numbers in basics.c.
-set line_callee4_head [gdb_get_line_number "callee4 ("]
-set line_callee4_body [expr $line_callee4_head + 2]
-set line_callee3_head [gdb_get_line_number "callee3 ("]
-set line_callee3_body [expr $line_callee3_head + 2]
-set line_callee3_close [expr $line_callee3_head + 3]
-set line_callee2_head [gdb_get_line_number "callee2 ("]
-set line_callee2_body [expr $line_callee2_head + 2]
-set line_callee2_close [expr $line_callee2_head + 3]
-set line_callee1_head [gdb_get_line_number "callee1 ("]
-set line_callee1_body [expr $line_callee1_head + 2]
-set line_callee1_close [expr $line_callee1_head + 3]
-set line_callme_head [gdb_get_line_number "callme"]
-set line_callme_body [expr $line_callme_head + 2]
-set line_main_head [gdb_get_line_number "main ("]
-set line_main_body [expr $line_main_head + 2]
-set line_main_hello [gdb_get_line_number "Hello, World!"]
-set line_main_callme_1 [gdb_get_line_number "callme (1"]
-
-# Forward execute to the callme() function, so that we can
-# execute backward from there.
-mi_continue_to callme
-mi_delete_breakpoints
-
-proc test_controlled_execution_reverse {} {
- global mi_gdb_prompt
- global srcfile
- global hex
-
- global line_callee4_head line_callee4_body
- global line_callee3_head line_callee3_body line_callee3_close
- global line_callee2_head line_callee2_body line_callee2_close
- global line_callee1_head line_callee1_body line_callee1_close
- global line_main_head line_main_body
- global line_main_hello line_main_callme_1
-
- # Test exec-reverse-finish
-
- mi_execute_to "exec-finish --reverse" \
- "end-stepping-range" "main" "" \
- "basics.c" $line_main_callme_1 "" \
- "reverse finish from callme"
-
- # Test exec-reverse-next
- # It takes two steps to get back to the previous line,
- # as the first step moves us to the start of the current line,
- # and the one after that moves back to the previous line.
-
- mi_execute_to "exec-next --reverse 2" \
- "end-stepping-range" "main" "" \
- "basics.c" $line_main_hello "" \
- "reverse next to get over the call to do_nothing"
-
- # Test exec-reverse-step
-
- mi_execute_to "exec-step --reverse" \
- "end-stepping-range" "callee1" \
- "\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \
- "basics.c" $line_callee1_close "" \
- "reverse step to callee1"
-
- mi_execute_to "exec-step --reverse" \
- "end-stepping-range" "callee2" \
- "\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
- "basics.c" $line_callee2_close "" \
- "reverse step to callee2"
-
- mi_execute_to "exec-step --reverse" \
- "end-stepping-range" "callee3" \
- "\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
- "basics.c" $line_callee3_close "" \
- "reverse step to callee3"
-
- mi_execute_to "exec-step --reverse" \
- "end-stepping-range" "callee4" "" \
- "basics.c" "\[0-9\]+" "" \
- "reverse step to callee4"
-
- # Test exec-reverse-[step|next]-instruction
-
- mi_execute_to "exec-step-instruction --reverse" \
- "end-stepping-range" "callee4" "" \
- "basics.c" "\[0-9\]+" "" \
- "reverse-step-instruction at callee4"
-
- mi_execute_to "exec-next-instruction --reverse" \
- "end-stepping-range" "callee4" "" \
- "basics.c" "\[0-9\]+" "" \
- "reverse-next-instruction at callee4"
-
- # Test exec-reverse-continue
-
- mi_create_breakpoint "-t basics.c:$line_callee3_head" \
- 3 del callee3 ".*basics.c" $line_callee3_head $hex \
- "insert temp breakpoint at basics.c:$line_callee3_head"
-
- mi_execute_to "exec-continue --reverse" \
- "breakpoint-hit" "callee3" \
- "\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \
- "basics.c" "\[0-9\]+" \
- { "" "disp=\"del\""} \
- "reverse-continue at callee3"
-
- mi_execute_to "exec-continue --reverse" \
- "" "main" "" \
- "basics.c" $line_main_body "" \
- "reverse-continue at main"
-}
-
-test_controlled_execution_reverse
-
-mi_gdb_exit
-return 0
+# Copyright 2009, 2011-2012 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/>. + +# Test Machine interface (MI) operations +# Verify that, using the MI, we can run a simple program in both forward +# and reverse directions with the following execution commands: +# - exec-continue +# - exec-finish +# - exec-next +# - exec-step +# - exec-next-instruction +# - exec-step-instruction + +# The goal is not to test gdb functionality, which is done by other tests, +# but to verify the correct output response to MI operations. +# + +if ![target_info exists gdb,can_reverse] { + return +} + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if [mi_gdb_start] { + continue +} + +set testfile mi-reverse +set srcfile basics.c +set binfile ${objdir}/${subdir}/mi2-reverse +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } { + untested ${testfile}.exp + return -1 +} + +mi_run_to_main + +if [target_info exists gdb,use_precord] { + # Activate process record/replay + if [mi_gdb_test "-interpreter-exec console record" \ + {\^done} "Turn on process record"] { + warning "Fail to activate process record/replay, tests in this group will not be performed.\n"; + return -1 + } +} + +# Locate line numbers in basics.c. +set line_callee4_head [gdb_get_line_number "callee4 ("] +set line_callee4_body [expr $line_callee4_head + 2] +set line_callee3_head [gdb_get_line_number "callee3 ("] +set line_callee3_body [expr $line_callee3_head + 2] +set line_callee3_close [expr $line_callee3_head + 3] +set line_callee2_head [gdb_get_line_number "callee2 ("] +set line_callee2_body [expr $line_callee2_head + 2] +set line_callee2_close [expr $line_callee2_head + 3] +set line_callee1_head [gdb_get_line_number "callee1 ("] +set line_callee1_body [expr $line_callee1_head + 2] +set line_callee1_close [expr $line_callee1_head + 3] +set line_callme_head [gdb_get_line_number "callme"] +set line_callme_body [expr $line_callme_head + 2] +set line_main_head [gdb_get_line_number "main ("] +set line_main_body [expr $line_main_head + 2] +set line_main_hello [gdb_get_line_number "Hello, World!"] +set line_main_callme_1 [gdb_get_line_number "callme (1"] + +# Forward execute to the callme() function, so that we can +# execute backward from there. +mi_continue_to callme +mi_delete_breakpoints + +proc test_controlled_execution_reverse {} { + global mi_gdb_prompt + global srcfile + global hex + + global line_callee4_head line_callee4_body + global line_callee3_head line_callee3_body line_callee3_close + global line_callee2_head line_callee2_body line_callee2_close + global line_callee1_head line_callee1_body line_callee1_close + global line_main_head line_main_body + global line_main_hello line_main_callme_1 + + # Test exec-reverse-finish + + mi_execute_to "exec-finish --reverse" \ + "end-stepping-range" "main" "" \ + "basics.c" $line_main_callme_1 "" \ + "reverse finish from callme" + + # Test exec-reverse-next + # It takes two steps to get back to the previous line, + # as the first step moves us to the start of the current line, + # and the one after that moves back to the previous line. + + mi_execute_to "exec-next --reverse 2" \ + "end-stepping-range" "main" "" \ + "basics.c" $line_main_hello "" \ + "reverse next to get over the call to do_nothing" + + # Test exec-reverse-step + + mi_execute_to "exec-step --reverse" \ + "end-stepping-range" "callee1" \ + "\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}" \ + "basics.c" $line_callee1_close "" \ + "reverse step to callee1" + + mi_execute_to "exec-step --reverse" \ + "end-stepping-range" "callee2" \ + "\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \ + "basics.c" $line_callee2_close "" \ + "reverse step to callee2" + + mi_execute_to "exec-step --reverse" \ + "end-stepping-range" "callee3" \ + "\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \ + "basics.c" $line_callee3_close "" \ + "reverse step to callee3" + + mi_execute_to "exec-step --reverse" \ + "end-stepping-range" "callee4" "" \ + "basics.c" "\[0-9\]+" "" \ + "reverse step to callee4" + + # Test exec-reverse-[step|next]-instruction + + mi_execute_to "exec-step-instruction --reverse" \ + "end-stepping-range" "callee4" "" \ + "basics.c" "\[0-9\]+" "" \ + "reverse-step-instruction at callee4" + + mi_execute_to "exec-next-instruction --reverse" \ + "end-stepping-range" "callee4" "" \ + "basics.c" "\[0-9\]+" "" \ + "reverse-next-instruction at callee4" + + # Test exec-reverse-continue + + mi_create_breakpoint "-t basics.c:$line_callee3_head" \ + 3 del callee3 ".*basics.c" $line_callee3_head $hex \ + "insert temp breakpoint at basics.c:$line_callee3_head" + + mi_execute_to "exec-continue --reverse" \ + "breakpoint-hit" "callee3" \ + "\{name=\"strarg\",value=\"$hex \\\\\"A string argument\.\\\\\"\"\}" \ + "basics.c" "\[0-9\]+" \ + { "" "disp=\"del\""} \ + "reverse-continue at callee3" + + mi_execute_to "exec-continue --reverse" \ + "" "main" "" \ + "basics.c" $line_main_body "" \ + "reverse-continue at main" +} + +test_controlled_execution_reverse + +mi_gdb_exit +return 0 |