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

Pedro Alves  <palves@redhat.com>

	* procfs.c (procfs_make_note_section) [NEW_PROC_API]: Output a
	NT_PSTATUS note.
	* sol2-tdep.c (sol2_core_pid_to_str): Print process IDs
	differently from LWP IDs.
This commit is contained in:
Pedro Alves 2012-12-11 15:23:15 +00:00
parent 05b4bd799a
commit 3e3420f6a1
3 changed files with 39 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2012-12-11 Pedro Alves <pedro@codesourcery.com>
Pedro Alves <palves@redhat.com>
* procfs.c (procfs_make_note_section) [NEW_PROC_API]: Output a
NT_PSTATUS note.
* sol2-tdep.c (sol2_core_pid_to_str): Print process IDs
differently from LWP IDs.
2012-12-11 Pedro Alves <palves@redhat.com>
* configure.ac (detect type of /proc): Remove Unixware handling.

View File

@ -5507,6 +5507,13 @@ procfs_make_note_section (bfd *obfd, int *note_size)
stop_signal = find_stop_signal ();
#ifdef NEW_PROC_API
fill_gregset (get_current_regcache (), &gregs, -1);
note_data = elfcore_write_pstatus (obfd, note_data, note_size,
PIDGET (inferior_ptid),
stop_signal, &gregs);
#endif
thread_args.obfd = obfd;
thread_args.note_data = note_data;
thread_args.note_size = note_size;

View File

@ -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);
}