diff options
author | matt rice <ratmice@gmail.com> | 2011-07-21 15:13:30 +0000 |
---|---|---|
committer | matt rice <ratmice@gmail.com> | 2011-07-21 15:13:30 +0000 |
commit | 9b158ba08eb1ad14dc2324b8391263b228fa928a (patch) | |
tree | 29747b586e1e18155aaf1ce9de26781e9468e1ba /gdb/testsuite/gdb.base/info-macros.exp | |
parent | d17b6f81012b6844de08934193fe7cb7db8cbd5f (diff) | |
download | gdb-9b158ba08eb1ad14dc2324b8391263b228fa928a.zip gdb-9b158ba08eb1ad14dc2324b8391263b228fa928a.tar.gz gdb-9b158ba08eb1ad14dc2324b8391263b228fa928a.tar.bz2 |
PR macros/12999
* macrotab.h (macro_callback_fn): Add new arguments to callback.
* macrotab.c (foreach_macro): Ditto.
(foreach_macro_in_scope): Ditto.
* macrocmd.c (print_macro_callback): New function.
(info_macro_command): Move some code to print_macro_definition.
(print_macro_definition): New function.
(print_one_macro): Add new arguments to callback.
testsuite/
* gdb.base/info-macros.c: New test sources.
* gdb.base/info-macros.exp: New tests.
docs/
* gdb.texinfo (Macros): Add info definitions and info macros commands.
Update text and cindex entries for info macro command.
Diffstat (limited to 'gdb/testsuite/gdb.base/info-macros.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/info-macros.exp | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/info-macros.exp b/gdb/testsuite/gdb.base/info-macros.exp new file mode 100644 index 0000000..bd5a870 --- /dev/null +++ b/gdb/testsuite/gdb.base/info-macros.exp @@ -0,0 +1,202 @@ +# 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 <http://www.gnu.org/licenses/>. + +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" |