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}.
This commit is contained in:
Jan Kratochvil 2009-12-03 11:40:18 +00:00
parent f58d5a2ddf
commit 8b7dbdc923
3 changed files with 57 additions and 20 deletions

View File

@ -1,3 +1,14 @@
2009-12-03 Jan Kratochvil <jan.kratochvil@redhat.com>
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 <jan.kratochvil@redhat.com>
* gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200.

View File

@ -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);

View File

@ -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