2011-06-21 Yao Qi gdb/testsuite/ * gdb.base/dump.exp (capture_value_with_type): New. Get value from address instead of name. --- gdb/testsuite/gdb.base/dump.exp | 46 ++++++++++++++++++++++++++++---------- 1 files changed, 34 insertions(+), 12 deletions(-) diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp index 1f307f4..7042abc 100644 --- a/gdb/testsuite/gdb.base/dump.exp +++ b/gdb/testsuite/gdb.base/dump.exp @@ -152,6 +152,25 @@ proc capture_value { expression args } { return $output_string } +proc capture_value_with_type { expression } { + global gdb_prompt + global expect_out + + set test "capture type of $expression" + set output_string "" + gdb_test_multiple "p ${expression}" $test { + -re "\\$\[0-9\]+ = .*$gdb_prompt $" { + if [regexp { \(.*\).*[0-9]+} $expect_out(0,string) output_string] { + pass "$test $output_string" + } else { + fail "$test unable to match regexp" + } + } + } + + return $output_string +} + set array_start [capture_value "/x &intarray\[0\]"] set array_end [capture_value "/x &intarray\[32\]"] set struct_start [capture_value "/x &intstruct"] @@ -160,6 +179,9 @@ set struct_end [capture_value "/x &intstruct + 1"] set array_val [capture_value "intarray"] set struct_val [capture_value "intstruct"] +set array_ptr_type [capture_value_with_type "&intarray"] +set struct_ptr_type [capture_value_with_type "&intstruct"] + make_dump_file "dump mem intarr2.bin $array_start $array_end" \ "dump array as memory, default" @@ -255,38 +277,38 @@ proc test_restore_saved_value { restore_args msg oldval newval } { # srec format can not be loaded for 64-bit-only platforms if ![string compare $is64bitonly "no"] then { test_reload_saved_value "intarr1.srec" "reload array as value, srec" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr1.srec" "reload struct as value, srec" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" test_reload_saved_value "intarr2.srec" "reload array as memory, srec" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr2.srec" "reload struct as memory, srec" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" } # ihex format can not be loaded for 64-bit-only platforms if ![string compare $is64bitonly "no"] then { test_reload_saved_value "intarr1.ihex" "reload array as value, intel hex" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr1.ihex" "reload struct as value, intel hex" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" test_reload_saved_value "intarr2.ihex" "reload array as memory, intel hex" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr2.ihex" "reload struct as memory, intel hex" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" } # tekhex format can not be loaded for 64-bit-only platforms if ![string compare $is64bitonly "no"] then { test_reload_saved_value "intarr1.tekhex" "reload array as value, tekhex" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr1.tekhex" "reload struct as value, tekhex" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" test_reload_saved_value "intarr2.tekhex" "reload array as memory, tekhex" \ - $array_val "intarray" + $array_val "\*$array_ptr_type" test_reload_saved_value "intstr2.tekhex" "reload struct as memory, tekhex" \ - $struct_val "intstruct" + $struct_val "\*$struct_ptr_type" } # Start a fresh gdb session -- 1.7.0.4