From 8a980b44d002271863f4cdeeeeeba4085b57fbcf Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 4 Jul 2012 10:48:32 +0000 Subject: [PATCH] 2012-07-04 Pedro Alves * gdb.ada/packed_tagged/comp_bug.adb: Convert to unix text line endings. * gdb.mi/mi-reverse.exp: Convert to unix text line endings. --- gdb/testsuite/ChangeLog | 6 + gdb/testsuite/gdb.ada/packed_tagged/comp_bug.adb | 80 +++--- 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 + + * 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 * 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 . - -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 . + +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 . - -# 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 . + +# 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 -- 2.7.4