# Copyright 2011 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 . set testfile "info-macros" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} get_compiler_info ${binfile} if [test_compiler_info gcc*] { lappend options additional_flags=-g3 } else { untested ${testfile}.exp return -1 } if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} $options] } { untested ${testfile}.exp return -1 } if ![runto_main] { untested ${testfile}.exp return -1 } set test "info definitions FOO" set r1 ".*#define FOO \"hello\"" set r2 ".*#define FOO \" \"" set r3 ".*#define FOO \"world\"" set r4 ".*#define FOO\\(a\\) foo = a" set testname "$test 1" gdb_test "$test" "$r1$r2$r3$r4" "$testname" set test "info macros" set r1 ".*#define FOO \"hello\"" set r2 ".*#define ONE" set r3 ".*\r\n$gdb_prompt" set testname "$test 2" gdb_test_multiple "$test" $testname { -re "$r1$r2$r3" { pass $testname } -re ".*#define TWO.*\r\n$gdb_prompt" { fail $testname } -re ".*#define THREE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $testname } } gdb_test "next" ".*" "" set r1 ".*#define FOO \" \"" set r2 ".*#define ONE" set r3 ".*#define TWO" set r4 ".*\r\n$gdb_prompt" set testname "$test 4" gdb_test_multiple "$test" $testname { -re ".*#define THREE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $testname } -re "$r1$r2$r3$r4" { pass $testname } } gdb_test "next" ".*" "" # in alpabetical order... set r1 ".*#define FOO \"world\"" set r2 ".*#define ONE" set r3 ".*#define THREE" set r4 ".*#define TWO" set r5 ".*\r\n$gdb_prompt" set testname "$test 4" gdb_test_multiple "$test" $testname { -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $testname } -re "$r1$r2$r3$r4$r5" { pass $testname } } # same as above with a linespec. set test "info macros *\$pc" gdb_test_multiple "$test" $test { -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $test } -re "$r1$r2$r3$r4$r5" { pass $test } } gdb_test "next" ".*" "" set r1 ".*#define FOO \" \"" set r2 ".*#define ONE" set r3 ".*#define TWO." set r4 ".*\r\n$gdb_prompt" set testname "$test 5" set test "info macros" gdb_test_multiple "$test" $test { -re ".*#define THREE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $testname } -re "$r1$r2$r3$r4" { pass $testname } } gdb_test "next" ".*" "" gdb_test "next" ".*" "" set r1 ".*#define DEF_MACROS" set r2 ".*\r\n$gdb_prompt" set testname "$test 6" gdb_test_multiple "$test" $testname { -re ".*#define FOO \" \".*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOO \"hello\".*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOO \"world\".*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOO\\(a\\) foo = a.*" { fail $testname } -re ".*#define ONE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define TWO.*\r\n$gdb_prompt" { fail $testname } -re ".*#define THREE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOUR.*\r\n$gdb_prompt" { fail $testname } -re "$r1$r2" { pass $testname } } gdb_test "next" ".*" "" set r1 ".*#define DEF_MACROS" set r2 ".*#define FOO\\(a\\) foo = a" set r3 ".*#define FOUR" set r4 ".*\r\n$gdb_prompt" set testname "$test 7" gdb_test_multiple "$test" $testname { -re ".*#define FOO \" \".*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOO \"hello\".*\r\n$gdb_prompt" { fail $testname } -re ".*#define FOO \"world\".*\r\n$gdb_prompt" { fail $testname } -re ".*#define ONE.*\r\n$gdb_prompt" { fail $testname } -re ".*#define TWO.*\r\n$gdb_prompt" { fail $testname } -re ".*#define THREE.*\r\n$gdb_prompt" { fail $testname } -re "$r1$r2$r3$r4" { pass $testname } } set test "info macros info-macros.c:42" set r1 ".*define DEF_MACROS" set r2 ".*define ONE" # info macros on the line where the #define or #include is # fails to find the macro defined (though it works on the next line.) setup_kfail "gdb/NNNN" *-*-* gdb_test "$test" "$r1$r2" "$test"