From e515d67ed61f7c588a3154589a8a25c7bef66d20 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Thu, 12 Mar 2020 13:51:46 +0100 Subject: [PATCH] [gdb/testsuite] Fix internal buffer full error in gdb.fortran/module.exp With test-case gdb.fortran/module.exp, I run into: ... PASS: gdb.fortran/module.exp: fully qualified name of DW_TAG_constant ERROR: internal buffer is full. UNRESOLVED: gdb.fortran/module.exp: info variables -n ... Fix this by using exp_continue while matching the output of "info variable -n". Tested on x86_64-linux, using make targets check and check-read1. gdb/testsuite/ChangeLog: 2020-03-12 Tom de Vries * gdb.fortran/module.exp: Use exp_continue during matching of output of "info variable -n". --- gdb/testsuite/ChangeLog | 5 ++++ gdb/testsuite/gdb.fortran/module.exp | 37 +++++++++++++++++++++------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 5b67cb1d580..f6b1a562c56 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-12 Tom de Vries + + * gdb.fortran/module.exp: Use exp_continue during matching of output + of "info variable -n". + 2020-03-12 Tom de Vries * gdb.dwarf2/dw2-ranges-base.exp: Limit "maint info line-table" to diff --git a/gdb/testsuite/gdb.fortran/module.exp b/gdb/testsuite/gdb.fortran/module.exp index 6551f5b2cf7..1c269e2fedf 100644 --- a/gdb/testsuite/gdb.fortran/module.exp +++ b/gdb/testsuite/gdb.fortran/module.exp @@ -37,11 +37,8 @@ if ![runto MAIN__] then { set int_type [fortran_int4] # Test 'info variables' can find module variables. -gdb_test "info variables -n" \ +set mod_re \ [multi_line \ - "All defined variables:" \ - "" \ - "File .*$srcfile:" \ "18:\[ \t\]+${int_type} mod1::var_const;" \ "17:\[ \t\]+${int_type} mod1::var_i;" \ "23:\[ \t\]+${int_type} mod2::var_i;" \ @@ -53,11 +50,33 @@ gdb_test "info variables -n" \ "33:\[ \t\]+${int_type} modmany::var_c;" \ "33:\[ \t\]+${int_type} modmany::var_i;" \ "37:\[ \t\]+${int_type} moduse::var_x;" \ - "37:\[ \t\]+${int_type} moduse::var_y;(" \ - "" \ - "File .*:(" \ - "$decimal:.*)+)*"] - + "37:\[ \t\]+${int_type} moduse::var_y;"] + +set state 0 +gdb_test_multiple "info variables -n" "" { + -re "\r\nAll defined variables:" { + if { $state == 0 } { set state 1 } + exp_continue + } + -re "\r\n\r\nFile .*[string_to_regexp $srcfile]:" { + if { $state == 1 } { set state 2 } + exp_continue + } + -re $mod_re { + if { $state == 2 } { set state 3 } + exp_continue + } + -re "\r\n\r\nFile \[^\r\n\]*:" { + exp_continue + } + -re -wrap "" { + if { $state == 3} { + pass $gdb_test_name + } else { + fail $gdb_test_name + } + } +} # Do not use simple single-letter names as GDB would pick up for expectedly # nonexisting symbols some static variables from system libraries debuginfos. -- 2.30.2