gdb/proc-why.c - gdb
Global variables defined
Data types defined
Functions defined
Macros defined
Source code
- #include "defs.h"
- #ifdef NEW_PROC_API
- #define _STRUCTURED_PROC 1
- #endif
- #include <sys/types.h>
- #include <sys/procfs.h>
- #include "proc-utils.h"
- struct trans
- {
- int value;
- char *name;
- char *desc;
- };
- static struct trans pr_why_table[] =
- {
- #if defined (PR_REQUESTED)
-
- { PR_REQUESTED, "PR_REQUESTED",
- "Directed to stop by debugger via P(IO)CSTOP or P(IO)CWSTOP" },
- #endif
- #if defined (PR_SIGNALLED)
-
- { PR_SIGNALLED, "PR_SIGNALLED", "Receipt of a traced signal" },
- #endif
- #if defined (PR_SYSENTRY)
-
- { PR_SYSENTRY, "PR_SYSENTRY", "Entry to a traced system call" },
- #endif
- #if defined (PR_SYSEXIT)
-
- { PR_SYSEXIT, "PR_SYSEXIT", "Exit from a traced system call" },
- #endif
- #if defined (PR_JOBCONTROL)
-
- { PR_JOBCONTROL, "PR_JOBCONTROL", "Default job control stop signal action" },
- #endif
- #if defined (PR_FAULTED)
-
- { PR_FAULTED, "PR_FAULTED", "Incurred a traced hardware fault" },
- #endif
- #if defined (PR_SUSPENDED)
-
- { PR_SUSPENDED, "PR_SUSPENDED", "Process suspended" },
- #endif
- #if defined (PR_CHECKPOINT)
-
- { PR_CHECKPOINT, "PR_CHECKPOINT", "Process stopped at checkpoint" },
- #endif
- #if defined (PR_FORKSTOP)
-
- { PR_FORKSTOP, "PR_FORKSTOP", "Process stopped at end of fork call" },
- #endif
- #if defined (PR_TCRSTOP)
-
- { PR_TCRSTOP, "PR_TCRSTOP", "Process stopped on thread creation" },
- #endif
- #if defined (PR_TTSTOP)
-
- { PR_TTSTOP, "PR_TTSTOP", "Process stopped on thread termination" },
- #endif
- #if defined (PR_DEAD)
-
- { PR_DEAD, "PR_DEAD", "Process stopped in exit system call" },
- #endif
- };
- void
- proc_prettyfprint_why (FILE *file, unsigned long why, unsigned long what,
- int verbose)
- {
- int i;
- if (why == 0)
- return;
- for (i = 0; i < ARRAY_SIZE (pr_why_table); i++)
- if (why == pr_why_table[i].value)
- {
- fprintf (file, "%s ", pr_why_table[i].name);
- if (verbose)
- fprintf (file, ": %s ", pr_why_table[i].desc);
- switch (why) {
- #ifdef PR_REQUESTED
- case PR_REQUESTED:
- break;
- #endif
- #ifdef PR_SIGNALLED
- case PR_SIGNALLED:
- proc_prettyfprint_signal (file, what, verbose);
- break;
- #endif
- #ifdef PR_FAULTED
- case PR_FAULTED:
- proc_prettyfprint_fault (file, what, verbose);
- break;
- #endif
- #ifdef PR_SYSENTRY
- case PR_SYSENTRY:
- fprintf (file, "Entry to ");
- proc_prettyfprint_syscall (file, what, verbose);
- break;
- #endif
- #ifdef PR_SYSEXIT
- case PR_SYSEXIT:
- fprintf (file, "Exit from ");
- proc_prettyfprint_syscall (file, what, verbose);
- break;
- #endif
- #ifdef PR_JOBCONTROL
- case PR_JOBCONTROL:
- proc_prettyfprint_signal (file, what, verbose);
- break;
- #endif
- #ifdef PR_DEAD
- case PR_DEAD:
- fprintf (file, "Exit status: %ld\n", what);
- break;
- #endif
- default:
- fprintf (file, "Unknown why %ld, what %ld\n", why, what);
- break;
- }
- fprintf (file, "\n");
- return;
- }
- fprintf (file, "Unknown pr_why.\n");
- }
- void
- proc_prettyprint_why (unsigned long why, unsigned long what, int verbose)
- {
- proc_prettyfprint_why (stdout, why, what, verbose);
- }