[pushed] linux_spu_make_corefile_notes: return note_data instead of nullptr (was: [PATCH] Make target_read_alloc & al return vectors)

Message ID 27aef02a-2bb9-683a-2362-40cfad1174f4@ericsson.com
State New, archived
Headers

Commit Message

Simon Marchi April 16, 2018, 8:50 p.m. UTC
  On 2018-04-16 04:04 PM, Pedro Alves wrote:
> Hi Simon,
> 
> I noticed this recent regression:
> 
>  PASS: gdb.threads/gcore-stale-thread.exp: successfully compiled posix threads test case
>  PASS: gdb.threads/gcore-stale-thread.exp: set non-stop on
>  PASS: gdb.threads/gcore-stale-thread.exp: continue to breakpoint: break-here
> -PASS: gdb.threads/gcore-stale-thread.exp: save a corefile
> +UNSUPPORTED: gdb.threads/gcore-stale-thread.exp: save a corefile
>  PASS: gdb.threads/gcore-stale-thread.exp: exited thread is current due to non-stop
> 
> and bisection points at:
>  9018be22e02 ("Make target_read_alloc & al return vectors")
> 
> diff of gdb.log shows:
> 
>  gcore gdb/testsuite/outputs/gdb.threads/gcore-stale-thread/gcore-stale-thread.core
> -Saved corefile gdb/testsuite/outputs/gdb.threads/gcore-stale-thread/gcore-stale-thread.core
> -(gdb) PASS: gdb.threads/gcore-stale-thread.exp: save a corefile
> +Target does not support core file generation.
> +(gdb) UNSUPPORTED: gdb.threads/gcore-stale-thread.exp: save a corefile

Sorry about that, here's what I pushed to fix it:

From 07d28c777757148d13e429c4463da52cbb50d297 Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@ericsson.com>
Date: Mon, 16 Apr 2018 16:47:06 -0400
Subject: [PATCH] linux_spu_make_corefile_notes: return note_data instead of
 nullptr

Since commit

  9018be2 ("Make target_read_alloc & al return vectors")

the test gdb.threads/gcore-stale-thread.exp test results in UNSUPPORTED:

  UNSUPPORTED: gdb.threads/gcore-stale-thread.exp: save a corefile

The problem is that the linux_spu_make_corefile_notes started returning
nullptr when reading TARGET_OBJECT_SPU fails.  The previous (and proper)
behaviour is to return the note_data received as a parameter, so that
other functions may continue to append to this buffer.

With this patch, the test goes back to PASS.

gdb/ChangeLog:

	* linux-tdep.c (linux_spu_make_corefile_notes): Return note_data
	instead of nullptr.
---
 gdb/ChangeLog    | 5 +++++
 gdb/linux-tdep.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ad7b993..3993491 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@ 
+2018-04-16  Simon Marchi  <simon.marchi@ericsson.com>
+
+	* linux-tdep.c (linux_spu_make_corefile_notes): Return note_data
+	instead of nullptr.
+
 2018-04-16  Pedro Alves  <palves@redhat.com>

 	* MAINTAINERS (sh): Remove.
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 552a2a4..24bfd74 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1426,7 +1426,7 @@  linux_spu_make_corefile_notes (bfd *obfd, char *note_data, int *note_size)
     spu_ids = target_read_alloc (&current_target, TARGET_OBJECT_SPU, NULL);

   if (!spu_ids)
-    return nullptr;
+    return note_data;

   /* Generate corefile notes for each SPU file.  */
   for (size_t i = 0; i < spu_ids->size (); i += 4)