mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 22:48:57 +08:00
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:
@ -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>
|
2009-11-30 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
* gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200.
|
* gdb.base/bigcore.exp (extract_heap): Set $lim limit to 200.
|
||||||
|
@ -396,6 +396,8 @@ zed ()
|
|||||||
L18.r = 'Z';
|
L18.r = 'Z';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct { char c; } chartest[256];
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
#ifdef usestubs
|
#ifdef usestubs
|
||||||
@ -404,6 +406,10 @@ int main()
|
|||||||
#endif
|
#endif
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < 256; i++)
|
||||||
|
chartest[i].c = i;
|
||||||
|
chartest[0].c = 0; /* chartest-done */
|
||||||
|
|
||||||
Fun1(foo1);
|
Fun1(foo1);
|
||||||
Fun2(foo2);
|
Fun2(foo2);
|
||||||
Fun3(foo3);
|
Fun3(foo3);
|
||||||
|
@ -36,6 +36,9 @@ set testfile "structs"
|
|||||||
set srcfile ${testfile}.c
|
set srcfile ${testfile}.c
|
||||||
set binfile ${objdir}/${subdir}/${testfile}
|
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
|
# Create and source the file that provides information about the
|
||||||
# compiler used to compile the test case.
|
# 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".
|
# the last TYPES field). Run the compmiled program up to "main".
|
||||||
# Also updates the global "testfile" to reflect the most recent build.
|
# Also updates the global "testfile" to reflect the most recent build.
|
||||||
|
|
||||||
|
set first 1
|
||||||
proc start_structs_test { types } {
|
proc start_structs_test { types } {
|
||||||
global testfile
|
global testfile
|
||||||
global srcfile
|
global srcfile
|
||||||
@ -56,6 +60,8 @@ proc start_structs_test { types } {
|
|||||||
global subdir
|
global subdir
|
||||||
global srcdir
|
global srcdir
|
||||||
global gdb_prompt
|
global gdb_prompt
|
||||||
|
global anychar_re
|
||||||
|
global first
|
||||||
|
|
||||||
# Create the additional flags
|
# Create the additional flags
|
||||||
set flags "debug"
|
set flags "debug"
|
||||||
@ -91,6 +97,8 @@ proc start_structs_test { types } {
|
|||||||
"set print address off; ${testfile}"
|
"set print address off; ${testfile}"
|
||||||
gdb_test "set width 0" "" \
|
gdb_test "set width 0" "" \
|
||||||
"set width 0; ${testfile}"
|
"set width 0; ${testfile}"
|
||||||
|
gdb_test "set print elements 300" "" \
|
||||||
|
"set print elements 300; ${testfile}"
|
||||||
|
|
||||||
# Advance to main
|
# Advance to main
|
||||||
if { ![runto_main] } then {
|
if { ![runto_main] } then {
|
||||||
@ -100,6 +108,16 @@ proc start_structs_test { types } {
|
|||||||
# Get the debug format
|
# Get the debug format
|
||||||
get_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
|
# check that at the struct containing all the relevant types is correct
|
||||||
set foo_t "type = struct struct[llength ${types}] \{"
|
set foo_t "type = struct struct[llength ${types}] \{"
|
||||||
for {set n 0} {$n<[llength ${types}]} {incr n} {
|
for {set n 0} {$n<[llength ${types}]} {incr n} {
|
||||||
@ -161,26 +179,28 @@ proc zed { n } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc any { n } {
|
proc any { n } {
|
||||||
return [lindex {
|
global anychar_re
|
||||||
"{}"
|
set ac $anychar_re
|
||||||
"{a = \[^,\}\]*}"
|
return [lindex [list \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*}"
|
"{}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*}"
|
"{a = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*}"
|
"{a = ${ac}, b = ${ac}, c = ${ac}, d = ${ac}, e = ${ac}, f = ${ac}, g = ${ac}, h = ${ac}, i = ${ac}, j = ${ac}, k = ${ac}}" \
|
||||||
"{a = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*}"
|
"{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 = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*}"
|
"{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 = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*, p = \[^,\}\]*}"
|
"{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 = \[^,\}\]*, b = \[^,\}\]*, c = \[^,\}\]*, d = \[^,\}\]*, e = \[^,\}\]*, f = \[^,\}\]*, g = \[^,\}\]*, h = \[^,\}\]*, i = \[^,\}\]*, j = \[^,\}\]*, k = \[^,\}\]*, l = \[^,\}\]*, m = \[^,\}\]*, n = \[^,\}\]*, o = \[^,\}\]*, p = \[^,\}\]*, q = \[^,\}\]*}"
|
"{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}}" \
|
||||||
} $n]
|
"{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
|
# Given N (0..25), return the corresponding alphabetic letter in lower
|
||||||
|
Reference in New Issue
Block a user