1# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 2# Free Software Foundation, Inc. 3 4# This program is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 2 of the License, or 7# (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program; if not, write to the Free Software 16# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 17 18# written by Elena Zannoni (elz@apollo.hp.com) 19# 20# This file is part of the gdb testsuite 21# 22# tests for const variables 23# const pointers to vars 24# pointers to const variables 25# const pointers to const vars 26# with mixed types 27 28if $tracelevel then { 29 strace $tracelevel 30} 31 32# 33# test running programs 34# 35set prms_id 0 36set bug_id 0 37 38set testfile "constvars" 39set srcfile ${testfile}.c 40set binfile ${objdir}/${subdir}/${testfile} 41 42# Create and source the file that provides information about the compiler 43# used to compile the test case. 44if [get_compiler_info ${binfile}] { 45 return -1; 46} 47 48if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } { 49 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." 50} 51 52gdb_exit 53gdb_start 54gdb_reinitialize_dir $srcdir/$subdir 55gdb_load ${binfile} 56 57 58# 59# set it up at a breakpoint so we can play with the variable values 60# 61if ![runto_main] then { 62 perror "couldn't run to breakpoint" 63 continue 64} 65 66get_debug_format 67 68# Many tests xfail with gcc 2 -gstabs+. 69# TODO: check out the hp side of this. 70 71proc local_compiler_xfail_check { } { 72 if { [test_compiler_info gcc-2-*] } then { 73 if { ![test_debug_format "HP"] \ 74 && ![test_debug_format "DWARF 2"] } then { 75 setup_xfail "*-*-*" 76 } 77 } 78 79 global hp_cc_compiler 80 if { $hp_cc_compiler } { 81 setup_xfail "hppa*-*-hpux*" 82 } 83} 84 85# A few tests still xfail with gcc 3 -gstabs+ and gcc 4 -gstabs+. 86 87proc local_compiler_xfail_check_2 { } { 88 if { [test_compiler_info gcc-3-*] || [test_compiler_info gcc-4-*] } { 89 if { [test_debug_format "stabs" ] } { 90 setup_xfail "*-*-*" 91 } 92 } 93} 94 95send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $" 96 97 send_gdb "cont\n" 98 gdb_expect { 99 -re "Break.* marker1 \\(\\) at .*:$decimal.*$gdb_prompt $" { 100 send_gdb "up\n" 101 gdb_expect { 102 -re ".*main.*$gdb_prompt $" { 103 pass "up from marker1" 104 } 105 -re ".*$gdb_prompt $" { 106 fail "up from marker1" 107 } 108 timeout { fail "up from marker1 (timeout)" } 109 } 110 } 111 -re "Break.* marker1__.* \\(\\) at .*:$decimal.*$gdb_prompt $" { 112 fail "continue to marker1 (demangling)" 113 send_gdb "up\n" 114 gdb_expect { 115 -re ".*main.*$gdb_prompt $" { 116 pass "up from marker1" 117 } 118 -re ".*$gdb_prompt $" { 119 fail "up from marker1" 120 } 121 timeout { fail "up from marker1 (timeout)" } 122 } 123 } 124 -re "$gdb_prompt $" { fail "continue to marker1" } 125 timeout { fail "(timeout) continue to marker1" } 126 } 127 128# test function parameters 129 130local_compiler_xfail_check 131local_compiler_xfail_check_2 132 133send_gdb "ptype qux1\n" 134gdb_expect { 135 -re "type = int \\(const char, const char, const char \\*, char \\* const\\).*$gdb_prompt $" { 136 pass "ptype qux1" 137 } 138 -re ".*$gdb_prompt $" { fail "ptype qux1" } 139 timeout { fail "(timeout) ptype qux1" } 140} 141 142# test vars and pointers 143 144proc do_constvar_tests {} { 145 gdb_test "print lave" " = 66 'B'" 146 gdb_test "ptype lave" "type = char" 147 gdb_test "print lavish" " = 10 '\\\\n'" 148 gdb_test "ptype lavish" "type = unsigned char" 149 gdb_test "print lax" " = 20" 150 gdb_test "ptype lax" "type = short.*" 151 gdb_test "print lecherous" " = 30" 152 gdb_test "ptype lecherous" "type = (unsigned short|short unsigned)( int)?" 153 gdb_test "print lechery" " = 40" 154 gdb_test "ptype lechery" "type = long.*" 155 gdb_test "print lectern" " = 50" 156 gdb_test "ptype lectern" "type = (unsigned long|long unsigned)( int)?" 157 gdb_test "print leeway" " = 60" 158 gdb_test "ptype leeway" "type = float" 159 gdb_test "print legacy" " = 70" 160 gdb_test "ptype legacy" "type = double" 161 gdb_test "print laconic" " = 65 'A'" 162 local_compiler_xfail_check 163 gdb_test "ptype laconic" "type = const char" 164 gdb_test "print laggard" " = 1 '.001'" 165 local_compiler_xfail_check 166 gdb_test "ptype laggard" "type = const unsigned char" 167 gdb_test "print lagoon" " = 2" 168 local_compiler_xfail_check 169 gdb_test "ptype lagoon" "type = const short( int)?" 170 gdb_test "print laity" " = 3" 171 local_compiler_xfail_check 172 gdb_test "ptype laity" "type = const (unsigned short|short unsigned)( int)?" 173 gdb_test "print lambent" " = 4" 174 local_compiler_xfail_check 175 gdb_test "ptype lambent" "type = const long( int)?" 176 gdb_test "print laminated" " = 5" 177 local_compiler_xfail_check 178 gdb_test "ptype laminated" "type = const (unsigned long|long unsigned)( int)?" 179 gdb_test "print lampoon" " = 6" 180 local_compiler_xfail_check 181 gdb_test "ptype lampoon" "type = const float" 182 gdb_test "print languid" " = 7" 183 local_compiler_xfail_check 184 gdb_test "ptype languid" "type = const double" 185 gdb_test "print *legend" " = 66 'B'" 186 local_compiler_xfail_check 187 gdb_test "ptype legend" "type = const char \\*" 188 gdb_test "print *legerdemain" " = 10 '\\\\n'" 189 local_compiler_xfail_check 190 gdb_test "ptype legerdemain" "type = const unsigned char \\*" 191 gdb_test "print *leniency" " = 20" 192 local_compiler_xfail_check 193 gdb_test "ptype leniency" "type = const short( int)? \\*" 194 gdb_test "print *leonine" " = 30" 195 local_compiler_xfail_check 196 gdb_test "ptype leonine" "type = const (unsigned short|short unsigned)( int)? \\*" 197 gdb_test "print *lesion" " = 40" 198 local_compiler_xfail_check 199 gdb_test "ptype lesion" "type = const long( int)? \\*" 200 gdb_test "print *lethal" " = 50" 201 local_compiler_xfail_check 202 gdb_test "ptype lethal" "type = const (unsigned long|long unsigned)( int)? \\*" 203 gdb_test "print *lethargic" " = 60" 204 local_compiler_xfail_check 205 gdb_test "ptype lethargic" "type = const float \\*" 206 gdb_test "print *levity" " = 70" 207 local_compiler_xfail_check 208 gdb_test "ptype levity" "type = const double \\*" 209 gdb_test "print *lewd" " = 65 'A'" 210 local_compiler_xfail_check 211 gdb_test "ptype lewd" "type = const char \\* const" 212 gdb_test "print *lexicographer" " = 1 '.001'" 213 local_compiler_xfail_check 214 gdb_test "ptype lexicographer" "type = const unsigned char \\* const" 215 gdb_test "print *lexicon" " = 2" 216 local_compiler_xfail_check 217 gdb_test "ptype lexicon" "type = const short( int)? \\* const" 218 gdb_test "print *liaison" " = 3" 219 local_compiler_xfail_check 220 gdb_test "ptype liaison" "type = const (unsigned short|short unsigned)( int)? \\* const" 221 gdb_test "print *libation" " = 4" 222 local_compiler_xfail_check 223 gdb_test "ptype libation" "type = const long( int)? \\* const" 224 gdb_test "print *libelous" " = 5" 225 local_compiler_xfail_check 226 gdb_test "ptype libelous" "type = const (unsigned long|long unsigned)( int)? \\* const" 227 gdb_test "print *libertine" " = 6" 228 local_compiler_xfail_check 229 gdb_test "ptype libertine" "type = const float \\* const" 230 gdb_test "print *libidinous" " = 7" 231 local_compiler_xfail_check 232 gdb_test "ptype libidinous" "type = const double \\* const" 233 gdb_test "print *languish" " = 65 'A'" 234 local_compiler_xfail_check 235 gdb_test "ptype languish" "type = const char \\*" 236 gdb_test "print *languor" " = 1 '.001'" 237 local_compiler_xfail_check 238 gdb_test "ptype languor" "type = const unsigned char \\*" 239 gdb_test "print *lank" " = 2" 240 local_compiler_xfail_check 241 gdb_test "ptype lank" "type = const short( int)? \\*" 242 gdb_test "print *lapidary" " = 3" 243 local_compiler_xfail_check 244 gdb_test "ptype lapidary" "type = const (unsigned short|short unsigned)( int)? \\*" 245 gdb_test "print *larceny" " = 4" 246 local_compiler_xfail_check 247 gdb_test "ptype larceny" "type = const long( int)? \\*" 248 gdb_test "print *largess" " = 5" 249 local_compiler_xfail_check 250 gdb_test "ptype largess" "type = const (unsigned long|long unsigned)( int)? \\*" 251 gdb_test "print *lascivious" " = 6" 252 local_compiler_xfail_check 253 254 gdb_test "ptype lascivious" "type = const float \\*" 255 gdb_test "print *lassitude" " = 7" 256 local_compiler_xfail_check 257 gdb_test "ptype lassitude" "type = const double \\*" 258 gdb_test "print *lamprey" " = 66 'B'" 259 local_compiler_xfail_check 260 gdb_test "ptype lamprey" "type = char \\* const" 261 gdb_test "print *lariat" " = 10 '\\\\n'" 262 local_compiler_xfail_check 263 gdb_test "ptype lariat" "type = unsigned char \\* const" 264 gdb_test "print *laudanum" " = 20" 265 local_compiler_xfail_check 266 gdb_test "ptype laudanum" "type = short( int)? \\* const" 267 gdb_test "print *lecithin" " = 30" 268 local_compiler_xfail_check 269 gdb_test "ptype lecithin" "type = (unsigned short|short unsigned)( int)? \\* const" 270 gdb_test "print *leviathan" " = 40" 271 local_compiler_xfail_check 272 gdb_test "ptype leviathan" "type = long( int)? \\* const" 273 gdb_test "print *libretto" " = 50" 274 local_compiler_xfail_check 275 gdb_test "ptype libretto" "type = (unsigned long|long unsigned)( int)? \\* const" 276 gdb_test "print *lissome" " = 60" 277 local_compiler_xfail_check 278 gdb_test "ptype lissome" "type = float \\* const" 279 gdb_test "print *locust" " = 70" 280 local_compiler_xfail_check 281 gdb_test "ptype locust" "type = double \\* const" 282 283 local_compiler_xfail_check 284 local_compiler_xfail_check_2 285 gdb_test "ptype crass" "type = struct crass \{\[\r\n\]+\[\ \t\]+char \\* const ptr;\[\r\n\]+\}" 286 local_compiler_xfail_check 287 gdb_test "ptype crisp" "type = struct crisp \{\[\r\n\]+\[\ \t\]+char \\* const \\*ptr;\[\r\n\]+\}" 288} 289 290do_constvar_tests 291