diff options
Diffstat (limited to 'gdb/testsuite/gdb.go')
-rw-r--r-- | gdb/testsuite/gdb.go/max-depth.exp | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.go/max-depth.go | 41 |
2 files changed, 81 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.go/max-depth.exp b/gdb/testsuite/gdb.go/max-depth.exp new file mode 100644 index 0000000..0f8ba9a --- /dev/null +++ b/gdb/testsuite/gdb.go/max-depth.exp @@ -0,0 +1,40 @@ +# This testcase is part of GDB, the GNU debugger. + +# Copyright 2019 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 the use of 'set prinnt max-depth' when printing go structures. + +load_lib "go.exp" + +if { [skip_go_tests] } { continue } + +standard_testfile .go + +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug go}] } { + return -1 +} + +if { [go_runto_main] < 0 } { + untested "could not run to main" + return -1 +} + +gdb_breakpoint [gdb_get_line_number "Break here"] +gdb_continue_to_breakpoint "run to breakpoint" ".*Break here.*" + +gdb_print_expr_at_depths "s1" [list "{...}" \ + "{m_struct = {...}, m_string = $hex \"hello world\"}" \ + "{m_struct = {m_a = 3, m_b = 7}, m_string = $hex \"hello world\"}"] diff --git a/gdb/testsuite/gdb.go/max-depth.go b/gdb/testsuite/gdb.go/max-depth.go new file mode 100644 index 0000000..6dbfc22 --- /dev/null +++ b/gdb/testsuite/gdb.go/max-depth.go @@ -0,0 +1,41 @@ +// Copyright 2019 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/>. + +package main + +import "fmt" + +type S1 struct { + m_a int + m_b int +} + +type S2 struct { + m_struct S1 + m_string string +} + +func main () { + var s1 S2 + var i int + + s1.m_string = "hello world" + s1.m_struct.m_a = 3 + s1.m_struct.m_b = 7 + + i = 0 // Break here. + fmt.Println ("Got: %d, %d, %d, %s", i, s1.m_struct.m_a, + s1.m_struct.m_b, s1.m_string) +} |