tagged.exp revision 1.1
1# Copyright 2008-2014 Free Software Foundation, Inc. 2# 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib "ada.exp" 17 18standard_ada_testfile foo 19 20if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { 21 return -1 22} 23 24# A convenience function that joins all the arguments together, 25# with a regexp that matches zero-or-more end of lines in between 26# each argument. This function is ideal to write the expected output 27# of a GDB command that generates more than a couple of lines, as 28# this allows us to write each line as a separate string, which is 29# easier to read by a human being. 30 31proc multi_line { args } { 32 return [join $args "\[\r\n\]*"] 33} 34 35clean_restart ${testfile} 36 37set bp_location [gdb_get_line_number "START" ${testdir}/foo.adb] 38runto "foo.adb:$bp_location" 39 40# Test printing and type-printing of a tagged type that is not 41# class-wide. 42 43gdb_test "ptype segm" \ 44 [multi_line "type = new pck\\.object with record" \ 45 " width: integer;" \ 46 "end record" ] \ 47 "ptype segm" 48 49gdb_test "print segm" \ 50 "= \\(position => 74, width => 8\\)" \ 51 "print segm" 52 53# Now, test printing of an class-wide object. 54 55gdb_test "ptype obj" \ 56 [multi_line "type = new pck\\.object with record" \ 57 " width: integer;" \ 58 "end record" ] \ 59 "ptype obj" 60 61gdb_test "print obj" \ 62 "= \\(position => 74, width => 8\\)" \ 63 "print obj" 64 65 66