aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/procfs.c46
-rw-r--r--gdb/values.c2
3 files changed, 43 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b3481a9..7e8159d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Thu Apr 2 09:47:11 1992 Fred Fish (fnf@cygnus.com)
+
+ * values.c (unpack_long): Fix unpacking error for signed chars
+ on hosts where the default character type is unsigned.
+ * procfs.c (pr_flag_table, pr_why_table): Add some entries
+ for newer SVR4 variants.
+ * procfs.c (proc_set_exec_trap): Reorder tests for ioctl's that
+ turn off trace inherit-on-fork flag to favor latest SVR4 method.
+ * procfs.c (mappingflags): Add support for MA_PHYS
+
Thu Apr 2 00:55:56 1992 John Gilmore (gnu at cygnus.com)
* buildsym.c (read_struct_type): Avoid coredump when C++
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 407c65f..dd32211 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -137,6 +137,18 @@ static struct trans pr_flag_table[] =
#if defined (PR_ISSYS)
PR_ISSYS, "PR_ISSYS", "Is a system process",
#endif
+#if defined (PR_STEP)
+ PR_STEP, "PR_STEP", "Process has single step pending",
+#endif
+#if defined (PR_KLC)
+ PR_KLC, "PR_KLC", "Kill-on-last-close is in effect",
+#endif
+#if defined (PR_ASYNC)
+ PR_ASYNC, "PR_ASYNC", "Asynchronous stop is in effect",
+#endif
+#if defined (PR_PCOMPAT)
+ PR_PCOMPAT, "PR_PCOMPAT", "Ptrace compatibility mode in effect",
+#endif
0, NULL, NULL
};
@@ -162,6 +174,9 @@ static struct trans pr_why_table[] =
#if defined (PR_JOBCONTROL)
PR_JOBCONTROL, "PR_JOBCONTROL", "Default job control stop signal action",
#endif
+#if defined (PR_SUSPENDED)
+ PR_SUSPENDED, "PR_SUSPENDED", "Process suspended",
+#endif
0, NULL, NULL
};
@@ -1781,15 +1796,15 @@ proc_set_exec_trap ()
/* Turn off inherit-on-fork flag so that all grand-children of gdb
start with tracing flags cleared. */
-#ifdef PIOCRFORK /* Standard SVR4 */
- (void) ioctl (fd, PIOCRFORK, NULL);
-#else
-#ifdef PIOCRESET /* iris (for example) */
+#if defined (PIOCRESET) /* New method */
{
long pr_flags;
pr_flags = PR_FORK;
(void) ioctl (fd, PIOCRESET, &pr_flags);
}
+#else
+#if defined (PIOCRFORK) /* Original method */
+ (void) ioctl (fd, PIOCRFORK, NULL);
#endif
#endif
}
@@ -2612,15 +2627,18 @@ static char *
mappingflags (flags)
long flags;
{
- static char asciiflags[7];
+ static char asciiflags[8];
- strcpy (asciiflags, "------");
- if (flags & MA_STACK) asciiflags[0] = 's';
- if (flags & MA_BREAK) asciiflags[1] = 'b';
- if (flags & MA_SHARED) asciiflags[2] = 's';
- if (flags & MA_READ) asciiflags[3] = 'r';
- if (flags & MA_WRITE) asciiflags[4] = 'w';
- if (flags & MA_EXEC) asciiflags[5] = 'x';
+ strcpy (asciiflags, "-------");
+#if defined (MA_PHYS)
+ if (flags & MA_PHYS) asciiflags[0] = 'd';
+#endif
+ if (flags & MA_STACK) asciiflags[1] = 's';
+ if (flags & MA_BREAK) asciiflags[2] = 'b';
+ if (flags & MA_SHARED) asciiflags[3] = 's';
+ if (flags & MA_READ) asciiflags[4] = 'r';
+ if (flags & MA_WRITE) asciiflags[5] = 'w';
+ if (flags & MA_EXEC) asciiflags[6] = 'x';
return (asciiflags);
}
@@ -3012,7 +3030,7 @@ info_proc_mappings (pip, summary)
if (!summary)
{
printf_filtered ("Mapped address spaces:\n\n");
- printf_filtered ("\t%10s %10s %10s %10s %6s\n",
+ printf_filtered ("\t%10s %10s %10s %10s %7s\n",
"Start Addr",
" End Addr",
" Size",
@@ -3025,7 +3043,7 @@ info_proc_mappings (pip, summary)
{
for (prmap = prmaps; prmap -> pr_size; ++prmap)
{
- printf_filtered ("\t%#10x %#10x %#10x %#10x %6s\n",
+ printf_filtered ("\t%#10x %#10x %#10x %#10x %7s\n",
prmap -> pr_vaddr,
prmap -> pr_vaddr + prmap -> pr_size - 1,
prmap -> pr_size,
diff --git a/gdb/values.c b/gdb/values.c
index 512cc64..895df77 100644
--- a/gdb/values.c
+++ b/gdb/values.c
@@ -649,7 +649,7 @@ unpack_long (type, valaddr)
{
if (len == sizeof (char))
{
- char retval;
+ SIGNED char retval; /* plain chars might be unsigned on host */
bcopy (valaddr, &retval, sizeof (retval));
SWAP_TARGET_AND_HOST (&retval, sizeof (retval));
return retval;