info-macros.exp revision 1.7
1# Copyright 2011-2017 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 16standard_testfile .c 17 18# Fission doesn't support macros yet. Bug 15954. 19if [using_fission] { 20 untested "fission does not support macros yet" 21 return -1 22} 23 24get_compiler_info 25if ![test_compiler_info gcc*] { 26 untested "no compiler info" 27 return -1 28} 29 30# Don't use "debug" here. Otherwise "-g" would be appended to the gcc 31# command line, possibly overriding "-g3" (depending on gcc version). 32set options "additional_flags=-g3" 33 34if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} $options] } { 35 return -1 36} 37 38if ![runto_main] { 39 untested "could not run to main" 40 return -1 41} 42 43# Test various error messages. 44gdb_test "info macro -- -all" \ 45 "The symbol `-all' has no definition .*\r\nat .*$srcfile:\[0-9\]+" \ 46 "info macro -- -all" 47gdb_test "info macro -- -all" \ 48 "The symbol `-all' has no definition .*\r\nat .*$srcfile:\[0-9\]+" \ 49 "info macro -- -all" 50 51gdb_test "info macro -all --" \ 52 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 53 "info macro -all --" 54 55gdb_test "info macro -all --" \ 56 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 57 "info macro -all --" 58 59gdb_test "info macro -all --" \ 60 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 61 "info macro -all --" 62 63gdb_test "info macro --" \ 64 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 65 "info macro --" 66 67gdb_test "info macro -- " \ 68 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 69 "'info macro -- '" 70gdb_test "info macro -- " \ 71 "You must follow.*with the name.*you want to see.*\[^\r\n\]*\[\r\n\]" \ 72 "'info macro -- '" 73 74gdb_test "info macro -invalid-option" \ 75 "Unrecognized option.*Try \"help info macro\"\." \ 76 "info macro -invalid-option 1" 77 78gdb_test "info macro -invalid-option" \ 79 "Unrecognized option.*Try \"help info macro\"\." \ 80 "info macro -invalid-option" 81 82gdb_test "info macro -invalid-option FOO" \ 83 "Unrecognized option.*Try \"help info macro\"\." \ 84 "info macro -invalid-option FOO" 85gdb_test "info macro -invalid-option FOO" \ 86 "Unrecognized option.*Try \"help info macro\"\." \ 87 "info macro -invalid-option FOO" 88 89# Single macro lookups. 90gdb_test "info macro -- FOO" \ 91 ".*#define FOO \"hello\"" \ 92 "info macro -- FOO" 93 94gdb_test "info macro -- FOO" \ 95 ".*#define FOO \"hello\"" \ 96 "info macro -- FOO" 97 98gdb_test "info macro -- FOO" \ 99 ".*#define FOO \"hello\"" \ 100 "info macro -- FOO" 101 102gdb_test "info macro FOO" \ 103 ".*#define FOO \"hello\"" \ 104 "info macro FOO" 105 106gdb_test "info macro FOO" \ 107 ".*#define FOO \"hello\"" \ 108 "info macro FOO" 109 110# Multiple macro lookups. 111set test "info macro -a FOO" 112set r1 ".*#define FOO \"hello\"" 113set r2 ".*#define FOO \" \"" 114set r3 ".*#define FOO \"world\"" 115set r4 ".*#define FOO\\(a\\) foo = a" 116set testname "$test 1" 117gdb_test "$test" "$r1$r2$r3$r4" "$testname" 118 119set test "info macro -a -- FOO" 120set testname "$test 1" 121gdb_test "$test" "$r1$r2$r3$r4" "$testname" 122 123set test "info macro -all -- FOO" 124set testname "$test 1" 125gdb_test "$test" "$r1$r2$r3$r4" "$testname" 126 127set test "info macro -a -- FOO" 128set testname "$test" 129gdb_test "$test" "$r1$r2$r3$r4" "$testname" 130 131set test "info macro -a -- FOO" 132set testname "$test" 133gdb_test "$test" "$r1$r2$r3$r4" "$testname" 134 135set test "info macros" 136set r1 ".*#define FOO \"hello\"" 137set r2 ".*#define ONE" 138set r3 ".*\r\n$gdb_prompt" 139set testname "$test 2" 140gdb_test_multiple "$test" $testname { 141 -re "$r1$r2$r3" { 142 pass $testname 143 } 144 -re ".*#define TWO.*\r\n$gdb_prompt" { 145 fail $testname 146 } 147 -re ".*#define THREE.*\r\n$gdb_prompt" { 148 fail $testname 149 } 150 -re ".*#define FOUR.*\r\n$gdb_prompt" { 151 fail $testname 152 } 153} 154gdb_test "next" ".*" "" 155 156set r1 ".*#define FOO \" \"" 157set r2 ".*#define ONE" 158set r3 ".*#define TWO" 159set r4 ".*\r\n$gdb_prompt" 160set testname "$test 3" 161gdb_test_multiple "$test" $testname { 162 -re ".*#define THREE.*\r\n$gdb_prompt" { 163 fail $testname 164 } 165 -re ".*#define FOUR.*\r\n$gdb_prompt" { 166 fail $testname 167 } 168 -re "$r1$r2$r3$r4" { 169 pass $testname 170 } 171} 172gdb_test "next" ".*" "" 173 174# in alpabetical order... 175set r1 ".*#define FOO \"world\"" 176set r2 ".*#define ONE" 177set r3 ".*#define THREE" 178set r4 ".*#define TWO" 179set r5 ".*\r\n$gdb_prompt" 180set testname "$test 4" 181gdb_test_multiple "$test" $testname { 182 -re ".*#define FOUR.*\r\n$gdb_prompt" { 183 fail $testname 184 } 185 -re "$r1$r2$r3$r4$r5" { 186 pass $testname 187 } 188} 189# same as above with a linespec. 190set test "info macros *\$pc" 191gdb_test_multiple "$test" $test { 192 -re ".*#define FOUR.*\r\n$gdb_prompt" { 193 fail $test 194 } 195 -re "$r1$r2$r3$r4$r5" { 196 pass $test 197 } 198} 199gdb_test "next" ".*" "" 200 201set r1 ".*#define FOO \" \"" 202set r2 ".*#define ONE" 203set r3 ".*#define TWO." 204set r4 ".*\r\n$gdb_prompt" 205set test "info macros" 206set testname "$test 5" 207gdb_test_multiple "$test" $test { 208 -re ".*#define THREE.*\r\n$gdb_prompt" { 209 fail $testname 210 } 211 -re ".*#define FOUR.*\r\n$gdb_prompt" { 212 fail $testname 213 } 214 -re "$r1$r2$r3$r4" { 215 pass $testname 216 } 217} 218gdb_test "next" ".*" "" 219gdb_test "next" ".*" "" 220 221set r1 ".*#define DEF_MACROS" 222set r2 ".*\r\n$gdb_prompt" 223set testname "$test 6" 224gdb_test_multiple "$test" $testname { 225 -re ".*#define FOO \" \".*\r\n$gdb_prompt" { 226 fail $testname 227 } 228 -re ".*#define FOO \"hello\".*\r\n$gdb_prompt" { 229 fail $testname 230 } 231 -re ".*#define FOO \"world\".*\r\n$gdb_prompt" { 232 fail $testname 233 } 234 -re ".*#define FOO\\(a\\) foo = a.*" { 235 fail $testname 236 } 237 -re ".*#define ONE.*\r\n$gdb_prompt" { 238 fail $testname 239 } 240 -re ".*#define TWO.*\r\n$gdb_prompt" { 241 fail $testname 242 } 243 -re ".*#define THREE.*\r\n$gdb_prompt" { 244 fail $testname 245 } 246 -re ".*#define FOUR.*\r\n$gdb_prompt" { 247 fail $testname 248 } 249 -re "$r1$r2" { 250 pass $testname 251 } 252} 253 254gdb_test "next" ".*" "" 255set r1 ".*#define DEF_MACROS" 256set r2 ".*#define FOO\\(a\\) foo = a" 257set r3 ".*#define FOUR" 258set r4 ".*\r\n$gdb_prompt" 259set testname "$test 7" 260gdb_test_multiple "$test" $testname { 261 -re ".*#define FOO \" \".*\r\n$gdb_prompt" { 262 fail $testname 263 } 264 -re ".*#define FOO \"hello\".*\r\n$gdb_prompt" { 265 fail $testname 266 } 267 -re ".*#define FOO \"world\".*\r\n$gdb_prompt" { 268 fail $testname 269 } 270 -re ".*#define ONE.*\r\n$gdb_prompt" { 271 fail $testname 272 } 273 -re ".*#define TWO.*\r\n$gdb_prompt" { 274 fail $testname 275 } 276 -re ".*#define THREE.*\r\n$gdb_prompt" { 277 fail $testname 278 } 279 -re "$r1$r2$r3$r4" { 280 pass $testname 281 } 282} 283 284set test "info macros info-macros.c:42" 285 286set r1 ".*define DEF_MACROS" 287set r2 ".*define ONE" 288# info macros on the line where the #define or #include is 289# fails to find the macro defined (though it works on the next line.) 290setup_kfail "gdb/NNNN" *-*-* 291gdb_test "$test" "$r1$r2" "$test" 292