aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@codesourcery.com>2013-10-24 20:37:49 +0100
committerTom Tromey <tromey@sourceware.org>2013-10-25 14:03:00 +0000
commitbbe769cc07aa1b1b0f4ede05c189a2d9897603bb (patch)
tree81a47277793b9f86c0db32c08cece90d249ba2db
parent72ee449576f27ec95de5d03c868a14372e0250cb (diff)
downloadgdb-bbe769cc07aa1b1b0f4ede05c189a2d9897603bb.zip
gdb-bbe769cc07aa1b1b0f4ede05c189a2d9897603bb.tar.gz
gdb-bbe769cc07aa1b1b0f4ede05c189a2d9897603bb.tar.bz2
Avoid producing broken non-native core files
gdb/ * linux-tdep.c (linux_corefile_thread_callback): Propagate any failure from register information collection. gdb/testsuite/ * lib/gdb.exp (gdb_gcore_cmd): Also handle a "Target does not support core file generation" reply.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/linux-tdep.c7
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/lib/gdb.exp2
4 files changed, 15 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6466028..b0b6ff8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2013-10-24 Maciej W. Rozycki <macro@codesourcery.com>
+ * linux-tdep.c (linux_corefile_thread_callback): Propagate any
+ failure from register information collection.
+
+2013-10-24 Maciej W. Rozycki <macro@codesourcery.com>
+
* linux-tdep.c (linux_corefile_thread_data): Remove `num_notes'
member.
(linux_corefile_thread_callback): Update accordingly.
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 5bca076..304fe09 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1209,14 +1209,15 @@ linux_corefile_thread_callback (struct thread_info *info, void *data)
args->note_data, args->note_size,
args->stop_signal);
- if (siginfo_data != NULL)
- {
+ /* Don't return anything if we got no register information above,
+ such a core file is useless. */
+ if (args->note_data != NULL)
+ if (siginfo_data != NULL)
args->note_data = elfcore_write_note (args->obfd,
args->note_data,
args->note_size,
"CORE", NT_SIGINFO,
siginfo_data, siginfo_size);
- }
do_cleanups (old_chain);
}
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 1edfc93..003208d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-10-24 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/gdb.exp (gdb_gcore_cmd): Also handle a "Target does not
+ support core file generation" reply.
+
2013-10-21 Jose E. Marchesi <jose.marchesi@oracle.com>
PR gdb/15986
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index bde4e48..e4a6134 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -3183,7 +3183,7 @@ proc gdb_gcore_cmd {core test} {
verbose -log "'gcore' command undefined in gdb_gcore_cmd"
}
- -re "Can't create a corefile\[\r\n\]+$gdb_prompt $" {
+ -re "(?:Can't create a corefile|Target does not support core file generation\\.)\[\r\n\]+$gdb_prompt $" {
unsupported $test
}
}