1# Copyright (C) 1997, 1998 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 2 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, write to the Free Software 15# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 16 17# Please email any bugs, comments, and/or additions to this file to: 18# bug-gdb@prep.ai.mit.edu 19 20# GDB tests for sized enumerations 21 22# This is aimed at HP-UX systems. The HP C compiler 23# allows specifying "char" or "short" for an enum, to 24# indicate that it is 1 or 2 bytes long. 25 26# This file was written by Satish Pai <pai@apollo.hp.com> 27# 1997-09-24 28 29if $tracelevel then { 30 strace $tracelevel 31 } 32 33# 34# test running programs 35# 36set prms_id 0 37set bug_id 0 38 39if { [skip_hp_tests] } then { continue } 40 41set testfile "sized-enum" 42set srcfile ${testfile}.c 43set binfile ${objdir}/${subdir}/${testfile} 44 45if [get_compiler_info ${binfile}] { 46 return -1 47} 48 49if { $gcc_compiled } then { continue } 50if {$hp_aCC_compiler} {continue} 51 52if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 53 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 54} 55 56gdb_exit 57gdb_start 58gdb_reinitialize_dir $srcdir/$subdir 59gdb_load ${binfile} 60 61# 62# set it up at a breakpoint so we can play with the variable values 63# 64 65if ![runto_main] then { 66 perror "couldn't run to breakpoint" 67 continue 68} 69 70# set a breakpoint and go there 71send_gdb "break 34\n" 72gdb_expect { 73 -re "Breakpoint.*line 34.*$gdb_prompt $" { pass "set break 34" } 74 -re "$gdb_prompt $" { fail "set break 34" } 75 timeout { fail "(timeout) set break 34" } 76} 77send_gdb "continue\n" 78gdb_expect { 79 -re "Continuing\\.\r\n\r\nBreakpoint \[0-9\]*, main....at.*sized-enum\\.c:34\r\n34.*\r\n$gdb_prompt $" { pass "continue" } 80 -re "$gdb_prompt $" { fail "continue" } 81 timeout { fail "(timeout) continue" } 82} 83 84# print stuff 85send_gdb "print normal\n" 86gdb_expect { 87 -re "\\$\[0-9\]* = \\{red, blue, green\\}.*$gdb_prompt $" { pass "print normal" } 88 -re "$gdb_prompt $" { fail "print normal" } 89 timeout { fail "(timeout) print normal" } 90} 91send_gdb "print small\n" 92gdb_expect { 93 -re "\\$\[0-9\]* = \\{pink, cyan, grey\\}.*$gdb_prompt $" { pass "print small" } 94 -re "$gdb_prompt $" { fail "print small" } 95 timeout { fail "(timeout) print small" } 96} 97send_gdb "print tiny\n" 98gdb_expect { 99 -re "\\$\[0-9\]* = \\{orange, yellow, brown\\}.*$gdb_prompt $" { pass "print tiny" } 100 -re "$gdb_prompt $" { fail "print tiny" } 101 timeout { fail "(timeout) print tiny" } 102} 103 104# print type sizes 105send_gdb "print sizeof (Normal)\n" 106gdb_expect { 107 -re "\\$\[0-9\]* = 4.*$gdb_prompt $" { pass "print sizeof (Normal)" } 108 -re "$gdb_prompt $" { fail "print sizeof (Normal)" } 109 timeout { fail "(timeout) print sizeof (Normal)" } 110} 111send_gdb "print sizeof (Small)\n" 112gdb_expect { 113 -re "\\$\[0-9\]* = 2.*$gdb_prompt $" { pass "print sizeof (Small)" } 114 -re "$gdb_prompt $" { fail "print sizeof (Small)" } 115 timeout { fail "(timeout) print sizeof (Small)" } 116} 117send_gdb "print sizeof (Tiny)\n" 118gdb_expect { 119 -re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print sizeof (Tiny)" } 120 -re "$gdb_prompt $" { fail "print sizeof (Tiny)" } 121 timeout { fail "(timeout) print sizeof (Tiny)" } 122} 123 124# print types 125send_gdb "ptype normal\n" 126gdb_expect { 127 -re "type = enum Normal \\{red, blue, green\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype normal" } 128 -re "$gdb_prompt $" { fail "ptype normal" } 129 timeout { fail "(timeout) ptype normal" } 130} 131send_gdb "ptype small\n" 132gdb_expect { 133 -re "type = short enum Small \\{pink, cyan, grey\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype small" } 134 -re "$gdb_prompt $" { fail "ptype small" } 135 timeout { fail "(timeout) ptype small" } 136} 137send_gdb "ptype tiny\n" 138gdb_expect { 139 -re "type = char enum Tiny \\{orange, yellow, brown\\} \\\[3\\\].*$gdb_prompt $" { pass "ptype tiny" } 140 -re "$gdb_prompt $" { fail "ptype tiny" } 141 timeout { fail "(timeout) ptype tiny" } 142} 143 144# convert to int 145send_gdb "print (int) blue\n" 146gdb_expect { 147 -re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) blue" } 148 -re "$gdb_prompt $" { fail "print (int) blue" } 149 timeout { fail "(timeout) print (int) blue" } 150} 151send_gdb "print (int) cyan\n" 152gdb_expect { 153 -re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) cyan" } 154 -re "$gdb_prompt $" { fail "print (int) cyan" } 155 timeout { fail "(timeout) print (int) cyan" } 156} 157send_gdb "print (int) yellow\n" 158gdb_expect { 159 -re "\\$\[0-9\]* = 1.*$gdb_prompt $" { pass "print (int) yellow" } 160 -re "$gdb_prompt $" { fail "print (int) yellow" } 161 timeout { fail "(timeout) print (int) yellow" } 162} 163 164 165 166