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" |
+} |