| Index: gdb/testsuite/gdb.base/siginfo-obj.exp
|
| diff --git a/gdb/testsuite/gdb.base/siginfo-obj.exp b/gdb/testsuite/gdb.base/siginfo-obj.exp
|
| index 9ca649dae874621801cc554c53d7c3bef3befdde..6cee02efbd40688704a9c336f6960874ad767811 100644
|
| --- a/gdb/testsuite/gdb.base/siginfo-obj.exp
|
| +++ b/gdb/testsuite/gdb.base/siginfo-obj.exp
|
| @@ -1,4 +1,4 @@
|
| -# Copyright 2004, 2007-2008, 2010-2012 Free Software Foundation, Inc.
|
| +# Copyright 2004-2013 Free Software Foundation, Inc.
|
|
|
| # This program is free software; you can redistribute it and/or modify
|
| # it under the terms of the GNU General Public License as published by
|
| @@ -34,28 +34,25 @@ if { ! [istarget "i?86-*-linux*"]
|
| }
|
|
|
|
|
| -set testfile siginfo-obj
|
| -set srcfile ${testfile}.c
|
| -set binfile ${objdir}/${subdir}/${testfile}
|
| -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
| - untested "Couldn't compile ${srcfile}.c"
|
| +standard_testfile
|
| +
|
| +if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
|
| + untested $testfile.exp
|
| return -1
|
| }
|
|
|
| -# get things started
|
| -gdb_exit
|
| -gdb_start
|
| -gdb_reinitialize_dir $srcdir/$subdir
|
| -gdb_load ${binfile}
|
| -
|
| # Advance to main
|
| if { ![runto_main] } then {
|
| - gdb_suppress_tests;
|
| + gdb_suppress_tests
|
| }
|
|
|
| # Run to the signal.
|
| gdb_test "continue" ".*Program received signal SIGSEGV.*" "continue to signal"
|
|
|
| +# Try to generate a core file, for a later test.
|
| +set gcorefile [standard_output_file $testfile.gcore]
|
| +set gcore_created [gdb_gcore_cmd $gcorefile "save a core file"]
|
| +
|
| set ssi_addr ""
|
| set test "Extract si_addr"
|
| gdb_test_multiple "p \$_siginfo" "$test" {
|
| @@ -104,7 +101,7 @@ gdb_test "p ssi_signo" " = $ssi_signo"
|
|
|
| # Advance to main
|
| if { ![runto_main] } then {
|
| - gdb_suppress_tests;
|
| + gdb_suppress_tests
|
| }
|
|
|
| # Run to the signal.
|
| @@ -123,3 +120,21 @@ gdb_test "p ssi_addr" " = \\(void \\*\\) 0x666"
|
| gdb_test "p ssi_errno" " = 666"
|
| gdb_test "p ssi_code" " = 999"
|
| gdb_test "p ssi_signo" " = 11"
|
| +
|
| +# Test siginfo preservation in core files.
|
| +if {$gcore_created} {
|
| + clean_restart $binfile
|
| +
|
| + gdb_test "core $gcorefile" "Core was generated by.*" \
|
| + "core [file tail $gcorefile]"
|
| +
|
| + gdb_test "p \$_siginfo.si_signo" " = $ssi_signo" \
|
| + "p \$_siginfo.si_signo from core file"
|
| + gdb_test "p \$_siginfo.si_errno" " = $ssi_errno" \
|
| + "p \$_siginfo.si_errno from core file"
|
| + gdb_test "p \$_siginfo.si_code" " = $ssi_code" \
|
| + "p \$_siginfo.si_code from core file"
|
| + gdb_test "p \$_siginfo._sifields._sigfault.si_addr" \
|
| + " = \\(void \\*\\) $ssi_addr" \
|
| + "p \$_siginfo._sifields._sigfault.si_addr from core file"
|
| +}
|
|
|