From bbe769cc07aa1b1b0f4ede05c189a2d9897603bb Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Thu, 24 Oct 2013 20:37:49 +0100 Subject: [PATCH] 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. --- gdb/ChangeLog | 5 +++++ gdb/linux-tdep.c | 7 ++++--- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/lib/gdb.exp | 2 +- 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 + * linux-tdep.c (linux_corefile_thread_callback): Propagate any + failure from register information collection. + +2013-10-24 Maciej W. Rozycki + * 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 + + * lib/gdb.exp (gdb_gcore_cmd): Also handle a "Target does not + support core file generation" reply. + 2013-10-21 Jose E. Marchesi 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 } } -- 2.7.4