URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Subversion Repositories or1k_old
[/] [or1k_old/] [trunk/] [gdb-5.3/] [gdb/] [testsuite/] [gdb.base/] [scope.exp] - Rev 1782
Compare with Previous | Blame | View Log
# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002 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 2 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, write to the Free Software# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.# Please email any bugs, comments, and/or additions to this file to:# bug-gdb@prep.ai.mit.edu# This file was written by Fred Fish. (fnf@cygnus.com)if $tracelevel then {strace $tracelevel}set prms_id 0set bug_id 0set testfile "scope"set binfile ${objdir}/${subdir}/${testfile}if { [gdb_compile "${srcdir}/${subdir}/scope0.c" "${binfile}0.o" object {debug}] != "" } {gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."}if { [gdb_compile "${srcdir}/${subdir}/scope1.c" "${binfile}1.o" object {debug}] != "" } {gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."}if { [gdb_compile "${binfile}0.o ${binfile}1.o" ${binfile} executable {debug}] != "" } {gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."}# Create and source the file that provides information about the compiler# used to compile the test case.if [get_compiler_info ${binfile}] {return -1;}# Test locating various things when stopped just inside main, after# running init0(). To prevent cascading of errors, we report the# first one and quit. If all pass, then we print the pass results.proc test_at_main {} {global gdb_promptglobal decimalglobal det_fileglobal srcdirglobal subdirglobal gcc_compiledglobal hp_cc_compiler# skip past init. There may be a call to __main at the start of# main, so the first next may only get us to the init0 call.if [gdb_test "next" "$decimal.*foo \\(\\);" "next over init0() in main" "$decimal.*init0 \\(\\);" "next"] {gdb_suppress_tests ;}# Print scope0.c::filelocal, which is 1if [gdb_test "print filelocal" "\\\$$decimal = 1" "print filelocal" ] {gdb_suppress_tests ;}if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at main" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_bss, which is 101if [gdb_test "print filelocal_bss" "\\\$$decimal = 101" "print filelocal_bss" ] {gdb_suppress_tests ;}if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_main" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_ro, which is 201# No clue why the powerpc fails this test.setup_xfail "powerpc-*-*"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print filelocal_ro" "\\\$$decimal = 201" "print filelocal_ro in test_at_main" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }setup_xfail "powerpc-*-*"if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::filelocal, which is 2if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {gdb_suppress_tests ;}# Print scope1.c::filelocal_bss, which is 102if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] {gdb_suppress_tests ;}# Print scope1.c::filelocal_ro, which is 202if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}if [gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::foo::funclocal, which is 3if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"] {gdb_suppress_tests ;}# Print scope1.c::foo::funclocal_ro, which is 203if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::bar::funclocal, which is 4if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"] {gdb_suppress_tests ;}gdb_stop_suppressing_tests;}proc test_at_foo {} {global gdb_promptglobal decimalglobal det_fileglobal srcdirglobal subdirglobal gcc_compiledif [gdb_test "next" ".*bar \\(\\);" "" ] {gdb_suppress_tests ;}# Print scope0.c::filelocal, which is 1if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at foo" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_bss, which is 101if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_foo" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_ro, which is 201if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }setup_xfail "powerpc-*-*"if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {gdb_suppress_tests ;}gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"# Print scope1.c::filelocal, which is 2if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {gdb_suppress_tests ;}gdb_test "print filelocal_bss" "\\\$$decimal = 102" \"print filelocal_bss at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"gdb_test "print filelocal_ro" "\\\$$decimal = 202" \"print filelocal_ro at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"# Print scope1.c::foo::funclocal, which is 3gdb_test "print funclocal" "\\\$$decimal = 3" "print funclocal at foo"gdb_test "print foo::funclocal" "\\\$$decimal = 3" \"print foo::funclocal at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"# Print scope1.c::foo::funclocal_bss, which is 103gdb_test "print funclocal_bss" "\\\$$decimal = 103" \"print funclocal_bss at foo"gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \"print foo::funclocal_bss at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::foo::funclocal_bss" "\\\$$decimal = 103" "print 'scope1.c'::foo::funclocal_bss at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss"# Print scope1.c::foo::funclocal_ro, which is 203gdb_test "print funclocal_ro" "\\\$$decimal = 203" \"print funclocal_ro at foo"gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \"print foo::funclocal_ro at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"# Print scope1.c::bar::funclocal, which is 4gdb_test "print bar::funclocal" "\\\$$decimal = 4" \"print bar::funclocal at foo"if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal at foo" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"gdb_stop_suppressing_tests;}proc test_at_bar {} {global gdb_promptglobal decimalglobal det_fileglobal srcdirglobal subdirglobal gcc_compiledif [gdb_test "next" ".*" "" ] {gdb_suppress_tests ;}# Print scope0.c::filelocal, which is 1if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at bar" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_bss, which is 101if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_bar" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {gdb_suppress_tests ;}# Print scope0.c::filelocal_ro, which is 201if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }setup_xfail "powerpc-*-*"if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro at bar" "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::filelocal, which is 2if [gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {gdb_suppress_tests ;}# Print scope1.c::filelocal_bss, which is 102if [gdb_test "print filelocal_bss" "\\\$$decimal = 102" "print filelocal_bss at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] {gdb_suppress_tests ;}# Print scope1.c::filelocal_ro, which is 202if [gdb_test "print filelocal_ro" "\\\$$decimal = 202" "print filelocal_ro in test_at_bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::foo::funclocal, which is 3if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"] {gdb_suppress_tests ;}# Print scope1.c::foo::funclocal_bss, which is 103if [gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" "print foo::funclocal_bss at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::foo::funclocal_bss" "\\\$$decimal = 103" "print 'scope1.c'::foo::funclocal_bss at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss"] {gdb_suppress_tests ;}# Print scope1.c::foo::funclocal_ro, which is 203if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"] {gdb_suppress_tests ;}# Print scope1.c::bar::funclocal, which is 4if [gdb_test "print funclocal" "\\\$$decimal = 4" "print funclocal at bar" ] {gdb_suppress_tests ;}if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"] {gdb_suppress_tests ;}# Print scope1.c::bar::funclocal_bss, which is 104if [gdb_test "print funclocal_bss" "\\\$$decimal = 104" "print funclocal_bss at bar" ] {gdb_suppress_tests ;}if [gdb_test "print bar::funclocal_bss" "\\\$$decimal = 104" "print bar::funclocal_bss at bar" ] {gdb_suppress_tests ;}if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }if [gdb_test "print 'scope1.c'::bar::funclocal_bss" "\\\$$decimal = 104" "print 'scope1.c'::bar::funclocal_bss at bar" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss"] {gdb_suppress_tests ;}gdb_stop_suppressing_tests;}# This test has little to do with local scopes, but it is in scope.exp anyway.# That's life.proc test_at_autovars {} {global gdb_promptglobal decimalglobal hexglobal srcfile# Test symbol table lookup with 100 local (auto) variables.gdb_breakpoint marker1if [gdb_test "cont" "Break.* marker1 \\(\\) at .*:$decimal.*" "continue to marker1"] {gdb_suppress_tests;}if [gdb_test "up" ".*autovars.*" "up from marker1 in scope.exp" ] {gdb_suppress_tests ;}set count 0while {$count < 100} {if [gdb_test "print i$count" ".* = $count" "" ] {gdb_suppress_tests ;}set count [expr $count+1]}clear_xfail "*-*-*"pass "$count auto variables correctly initialized"# Test that block variable sorting is not screwing us.gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"}proc test_at_localscopes {} {global gdb_promptglobal decimalglobal hexglobal srcfilegdb_breakpoint marker2gdb_breakpoint marker3gdb_breakpoint marker4if [gdb_test "cont" "Break.* marker2 \\(\\) at .*:$decimal.*" "continue to marker2"] {gdb_suppress_tests;}if [gdb_test "up" ".*localscopes.*" "up from marker2 in scopes.exp" ] {gdb_suppress_tests ;}# Should be at first (outermost) scope. Check values.gdb_test "print localval" " = 10" "print localval, outer scope"gdb_test "print localval1" " = 11" "print localval1, outer scope"gdb_test "print localval2" "No symbol \"localval2\" in current context." \"print localval2, outer scope"gdb_test "print localval3" "No symbol \"localval3\" in current context." \"print localval3, outer scope"if [gdb_test "cont" "Break.* marker3 \\(\\) at .*:$decimal.*" \"continue to marker3 in scope.exp"] then { gdb_suppress_tests }if [gdb_test "up" ".*localscopes.*" "up from marker3 in scope.exp"] {gdb_suppress_tests}# Should be at next (first nested) scope. Check values.gdb_test "print localval" " = 20" \"print localval, first nested scope"gdb_test "print localval1" " = 11" "print localval1, first nested scope"gdb_test "print localval2" " = 12" "print localval2, first nested scope"gdb_test "print localval3" "No symbol \"localval3\" in current context." \"print localval3, first nested scope"# This test will only fail if the file was compiled by gcc, but# there's no way to check that.if [gdb_test "cont" "Break.* marker4.*at .*:$decimal.*" \"continue to marker4 in scope.exp"] then { gdb_suppress_tests }if [gdb_test "up" ".*localscopes.*" "up from marker4 in scope.exp"] {gdb_suppress_tests}gdb_test "print localval" " = 30" "print localval, innermost scope"gdb_test "print localval1" " = 11" "print localval1, innermost scope"gdb_test "print localval2" " = 12" "print localval2, innermost scope"gdb_test "print localval3" " = 13" "print localval3, innermost scope"gdb_stop_suppressing_tests;}# Start with a fresh gdb.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}if [istarget "*-*-vxworks*"] {set timeout 120verbose "Timeout is now $timeout seconds" 2}# Test that variables in various segments print out correctly before# the program is run.# AIX--sections get mapped to the same address so we can't get the right one.setup_xfail "rs6000-*-*"setup_xfail "powerpc-*-*"gdb_test "print 'scope0.c'::filelocal_ro" "= 201"# gdb currently cannot access bss memory on some targets if the inferior# is not running.## For PA boards using monitor/remote-pa.c, the bss test is going to# randomly fail. We've already put remote-pa on the target stack,# so we actually read memory from the board. Problem is crt0.o# is responsible for clearing bss and that hasnt' happened yet.## This is a problem for all non-native targets. -- mansonif [is_remote target] {unsupported "print 'scope0.c'::filelocal_bss before run"} else {gdb_test "print 'scope0.c'::filelocal_bss" "= 0" \"print 'scope0.c'::filelocal_bss before run"}gdb_test "print 'scope0.c'::filelocal" "= 1" \"print 'scope0.c'::filelocal before run"if [runto_main] then { test_at_main }if [istarget "mips-idt-*"] then {# Restart because IDT/SIM runs out of file descriptors.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}}if [runto foo] then { test_at_foo }if [istarget "mips-idt-*"] then {# Restart because IDT/SIM runs out of file descriptors.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}}if [runto bar] then { test_at_bar }if [istarget "mips-idt-*"] then {# Restart because IDT/SIM runs out of file descriptors.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}}if [runto localscopes] then { test_at_localscopes }if [istarget "mips-idt-*"] then {# Restart because IDT/SIM runs out of file descriptors.gdb_exitgdb_startgdb_reinitialize_dir $srcdir/$subdirgdb_load ${binfile}}if [runto autovars] then { test_at_autovars }if [istarget "*-*-vxworks*"] {set timeout 120verbose "Timeout is now $timeout seconds" 2}
