[PATCH 1/2] Put a NT_PSTATUS note on solaris cores.

Pedro Alves
2012-12-10T18:02:31Z

This is basically the same patch I once posted at:

http://sourceware.org/ml/gdb-patches/2009-10/msg00188.html

Rationale:

This patch makes is to that cores generated with gdb's gcore on
solaris also get an NT_PSTATUS note. It is from this note that gdb
can extract the original pid of the process from the core. From
higher up on procfs.c, we see that pstatus_t is assumed to be defined
when NEW_PROC_API is defined, so this should be safe to not break
builds on supported hosts. NEW_PROC_API is also always defined on
unixware hosts. Older Solaris not using the the new proc api are
unaffected.

I had applied the patch back in 2009, and then shortly afterwards
backed it out, because it broke Solaris builds. A patch to bfd this
depended on was missing:

http://sourceware.org/ml/gdb-patches/2009-10/msg00214.html

The bfd patch when in 2010-01-04, but I never got back to pushing the
GDB bit in.

I no longer have easy access to Solaris hosts to test on though...
Anyone interested in trying this, and seeing it in? The user visible
change is just that GDB will know the real PID the process that dumped
core had (visible when you load the core, and in "info inferiors").

The next patch removes all #ifdef UNIXWARE code, and that would remove
this pstatus note code too.

2012-12-10 Pedro Alves <pedro@codesourcery.com>

gdb/
* procfs.c (procfs_make_note_section): Always output a NT_PSTATUS
note when NEW_PROC_API is defined.
---
gdb/procfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/procfs.c b/gdb/procfs.c
index 82c7cd0..da5e158 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -5544,7 +5544,7 @@ procfs_make_note_section (bfd *obfd, int *note_size)

stop_signal = find_stop_signal ();

-#ifdef UNIXWARE
+#ifdef NEW_PROC_API
fill_gregset (get_current_regcache (), &gregs, -1);
note_data = elfcore_write_pstatus (obfd, note_data, note_size,
PIDGET (inferior_ptid),