This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] Fix & clarify OpenBSD/i386 and OpenBSD/amd64 kernel support


Hopefully this makes it clear that this is not so dangerous as Daniel
thought it would be.

Thanks Daniel for pointing this out!


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* amd64obsd-tdep.c (amd64obsd_trapframe_cache): Fix typos.
	(amd64obsd_trapframe_sniffer): Add comment.
	* i386obsd-tdep.c (i386obsd_trapframe_cache): Fix typos.
	(i386obsd_trapframe_sniffer): Add comment.


Index: amd64obsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/amd64obsd-tdep.c,v
retrieving revision 1.20
diff -u -p -r1.20 amd64obsd-tdep.c
--- amd64obsd-tdep.c 22 Dec 2005 14:09:17 -0000 1.20
+++ amd64obsd-tdep.c 22 Dec 2005 15:54:01 -0000
@@ -360,7 +360,7 @@ amd64obsd_trapframe_cache(struct frame_i
   sp = frame_unwind_register_unsigned (next_frame, AMD64_RSP_REGNUM);
 
   find_pc_partial_function (func, &name, NULL, NULL);
-  if (name && strncmp(name, "Xintr", 5) == 0)
+  if (name && strncmp (name, "Xintr", 5) == 0)
     addr = sp + 8;		/* It's an interrupt frame.  */
   else
     addr = sp;
@@ -374,7 +374,7 @@ amd64obsd_trapframe_cache(struct frame_i
   cs = read_memory_unsigned_integer (addr, 8); 
   if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
     {
-      /* Trap from use space; terminate backtrace.  */
+      /* Trap from user space; terminate backtrace.  */
       trad_frame_set_id (cache, null_frame_id);
     }
   else
@@ -418,6 +418,8 @@ amd64obsd_trapframe_sniffer (const struc
   ULONGEST cs;
   char *name;
 
+  /* Check Current Privilige Level and bail out if we're not executing
+     in kernel space.  */
   cs = frame_unwind_register_unsigned (next_frame, AMD64_CS_REGNUM);
   if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
     return 0;
Index: i386obsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386obsd-tdep.c,v
retrieving revision 1.27
diff -u -p -r1.27 i386obsd-tdep.c
--- i386obsd-tdep.c 22 Dec 2005 14:09:17 -0000 1.27
+++ i386obsd-tdep.c 22 Dec 2005 15:54:02 -0000
@@ -358,7 +358,7 @@ i386obsd_trapframe_cache(struct frame_in
   sp = frame_unwind_register_unsigned (next_frame, I386_ESP_REGNUM);
 
   find_pc_partial_function (func, &name, NULL, NULL);
-  if (name && strncmp(name, "Xintr", 5) == 0)
+  if (name && strncmp (name, "Xintr", 5) == 0)
     addr = sp + 8;		/* It's an interrupt frame.  */
   else
     addr = sp;
@@ -372,7 +372,7 @@ i386obsd_trapframe_cache(struct frame_in
   cs = read_memory_unsigned_integer (addr, 4); 
   if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
     {
-      /* Trap from use space; terminate backtrace.  */
+      /* Trap from user space; terminate backtrace.  */
       trad_frame_set_id (cache, null_frame_id);
     }
   else
@@ -416,9 +416,11 @@ i386obsd_trapframe_sniffer (const struct
   ULONGEST cs;
   char *name;
 
+  /* Check Current Privilige Level and bail out if we're not executing
+     in kernel space.  */
   cs = frame_unwind_register_unsigned (next_frame, I386_CS_REGNUM);
   if ((cs & I386_SEL_RPL) == I386_SEL_UPL)
-    return NULL;
+    return 0;
 
   find_pc_partial_function (frame_pc_unwind (next_frame), &name, NULL, NULL);
   return (name && ((strcmp (name, "calltrap") == 0)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]