From: Jan Kratochvil Date: Thu, 3 Dec 2009 11:40:18 +0000 (+0000) Subject: gdb/testsuite/ X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8b7dbdc92350e95a77548f36c2b537018ca7d52b;hp=f58d5a2ddfb78a450f1bd6edc4c8d105b3ebc0f8;p=binutils-gdb.git gdb/testsuite/ Fix spurious false FAILs. * gdb.base/structs.c (chartest): New. (main): Fill-in chartest. * gdb.base/structs.exp (anychar_re, first): New. (start_structs_test): Import global anychar_re and first. New gdb_test call "set print elements 300; ${testfile}" (start_structs_test <$first>): New block. (any): Import global anychar_re. New variable ac. Use ${ac}. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1669aa90b43..e397142ab7a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2009-12-03 Jan Kratochvil + + Fix spurious false FAILs. + * gdb.base/structs.c (chartest): New. + (main): Fill-in chartest. + * gdb.base/structs.exp (anychar_re, first): New. + (start_structs_test): Import global anychar_re and first. + New gdb_test call "set print elements 300; ${testfile}" + (start_structs_test <$first>): New block. + (any): Import global anychar_re. New variable ac. Use ${ac}. + 2009-11-30 Jan Kratochvil * gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200. diff --git a/gdb/testsuite/gdb.base/structs.c b/gdb/testsuite/gdb.base/structs.c index b9cff67ae02..36a756b02f5 100644 --- a/gdb/testsuite/gdb.base/structs.c +++ b/gdb/testsuite/gdb.base/structs.c @@ -396,6 +396,8 @@ zed () L18.r = 'Z'; } +static struct { char c; } chartest[256]; + int main() { #ifdef usestubs @@ -404,6 +406,10 @@ int main() #endif int i; + for (i = 0; i < 256; i++) + chartest[i].c = i; + chartest[0].c = 0; /* chartest-done */ + Fun1(foo1); Fun2(foo2); Fun3(foo3); diff --git a/gdb/testsuite/gdb.base/structs.exp b/gdb/testsuite/gdb.base/structs.exp index 2cf0907e6cd..7bbb937e6e2 100644 --- a/gdb/testsuite/gdb.base/structs.exp +++ b/gdb/testsuite/gdb.base/structs.exp @@ -36,6 +36,9 @@ set testfile "structs" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} +# Regex matching any value of `char' type like: a = 65 'A' +set anychar_re {-?[0-9]{1,3} '(.|\\([0-7]{3}|[a-z]|\\|'))'} + # Create and source the file that provides information about the # compiler used to compile the test case. @@ -48,6 +51,7 @@ if [get_compiler_info ${binfile}] { # the last TYPES field). Run the compmiled program up to "main". # Also updates the global "testfile" to reflect the most recent build. +set first 1 proc start_structs_test { types } { global testfile global srcfile @@ -56,6 +60,8 @@ proc start_structs_test { types } { global subdir global srcdir global gdb_prompt + global anychar_re + global first # Create the additional flags set flags "debug" @@ -91,6 +97,8 @@ proc start_structs_test { types } { "set print address off; ${testfile}" gdb_test "set width 0" "" \ "set width 0; ${testfile}" + gdb_test "set print elements 300" "" \ + "set print elements 300; ${testfile}" # Advance to main if { ![runto_main] } then { @@ -100,6 +108,16 @@ proc start_structs_test { types } { # Get the debug format get_debug_format + # Limit the slow $anychar_re{256} matching for better performance. + if $first { + set first 0 + + # Verify $anychar_re can match all the values of `char' type. + gdb_breakpoint [gdb_get_line_number "chartest-done"] + gdb_continue_to_breakpoint "chartest-done" ".*chartest-done.*" + gdb_test "p chartest" "= {({c = ${anychar_re}}, ){255}{c = ${anychar_re}}}" + } + # check that at the struct containing all the relevant types is correct set foo_t "type = struct struct[llength ${types}] \{" for {set n 0} {$n<[llength ${types}]} {incr n} { @@ -161,26 +179,28 @@ proc zed { n } { } proc any { n } { - return [lindex { - "{}" - "{a = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*, p = \[^,\}\]*}" - "{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*, p = \[^,\}\]*, q = \[^,\}\]*}" - } $n] + global anychar_re + set ac $anychar_re + return [lindex [list \ + "{}" \ + "{a = ${ac}}" \ + "{a = ${ac}, b = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}, m = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}, m = ${ac}, n = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}, m = ${ac}, n = ${ac}, o = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}, m = ${ac}, n = ${ac}, o = ${ac}, p = ${ac}}" \ + "{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}, l = ${ac}, m = ${ac}, n = ${ac}, o = ${ac}, p = ${ac}, q = ${ac}}" \ + ] $n] } # Given N (0..25), return the corresponding alphabetic letter in lower