aboutsummaryrefslogtreecommitdiff
path: root/gdb/sol2-tdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sol2-tdep.c')
-rw-r--r--gdb/sol2-tdep.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/gdb/sol2-tdep.c b/gdb/sol2-tdep.c
index e93758d..e292b8d 100644
--- a/gdb/sol2-tdep.c
+++ b/gdb/sol2-tdep.c
@@ -43,7 +43,29 @@ char *
sol2_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid)
{
static char buf[80];
+ struct inferior *inf;
+ int pid;
- xsnprintf (buf, sizeof buf, "LWP %ld", ptid_get_lwp (ptid));
- return buf;
+ /* Check whether we're printing an LWP (gdb thread) or a
+ process. */
+ pid = ptid_get_lwp (ptid);
+ if (pid != 0)
+ {
+ /* A thread. */
+ xsnprintf (buf, sizeof buf, "LWP %ld", ptid_get_lwp (ptid));
+ return buf;
+ }
+
+ /* GDB didn't use to put a NT_PSTATUS note in Solaris cores. If
+ that's missing, then we're dealing with a fake PID corelow.c made
+ up. */
+ inf = find_inferior_pid (ptid_get_pid (ptid));
+ if (inf == NULL || inf->fake_pid_p)
+ {
+ xsnprintf (buf, sizeof buf, "<core>");
+ return buf;
+ }
+
+ /* Not fake; print as usual. */
+ return normal_pid_to_str (ptid);
}