[gdb/testsuite] Modernize gdb.base/huge.exp

Rewrite test-case gdb.base/huge.exp:
- use build_executable rather than gdb_compile,
- use save_vars,
- factor out hardcoded loop limits min and max,
- handle compilation failure using require, and
- avoid using . in regexp to match $, {} and <>.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
Tom de Vries 2023-09-14 20:34:00 +02:00
parent d7680f13df
commit d03878e670

View File

@ -23,29 +23,44 @@ require {!target_info exists gdb,skip_huge_test}
standard_testfile .c
for { set size [expr 2 * 1024 * 1024] } { $size > 10 } { set size [expr $size / 2] } {
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable [list debug "additional_flags=-DCRASH_GDB=$size"]] \
== "" } break
}
if { $size < 10 } {
untested "size less than 10"
return -1
set max [expr 2 * 1024 * 1024]
set min 16
set opts {}
lappend opts debug
set compilation_succeeded 0
for { set size $max } { $size >= $min } { set size [expr $size / 2] } {
set try_opts [concat $opts [list additional_flags=-DCRASH_GDB=$size]]
if { [build_executable $testfile.exp $testfile $srcfile $try_opts] == -1 } {
continue
}
set compilation_succeeded 1
break
}
require {expr $compilation_succeeded}
# Start with a fresh gdb.
clean_restart ${binfile}
set prev_timeout $timeout
set timeout 30
save_vars { timeout } {
set timeout 30
if {![runto_main]} {
return -1
if {![runto_main]} {
return -1
}
gdb_test_no_output "set max-value-size unlimited"
set re \
[list \
[string_to_regexp $] \
$decimal \
" = " \
[string_to_regexp "{0 <repeats "] \
$decimal \
[string_to_regexp " times>}"]]
set re [join $re ""]
gdb_test "print a" $re "print a very large data object"
}
gdb_test_no_output "set max-value-size unlimited"
gdb_test "print a" ".1 = .0 .repeats \[0123456789\]+ times.." "print a very large data object"
set timeout $prev_timeout