From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25197 invoked by alias); 22 Dec 2005 15:57:18 -0000 Received: (qmail 25185 invoked by uid 22791); 22 Dec 2005 15:57:17 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 22 Dec 2005 15:57:16 +0000 Received: from elgar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2]) by sibelius.xs4all.nl (8.13.4/8.13.4) with ESMTP id jBMFvChi008971 for ; Thu, 22 Dec 2005 16:57:12 +0100 (CET) Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by elgar.sibelius.xs4all.nl (8.13.4/8.13.3) with ESMTP id jBMFvCqA018422 for ; Thu, 22 Dec 2005 16:57:12 +0100 (CET) Received: (from kettenis@localhost) by elgar.sibelius.xs4all.nl (8.13.4/8.13.4/Submit) id jBMFvC9f006924; Thu, 22 Dec 2005 16:57:12 +0100 (CET) Date: Fri, 23 Dec 2005 19:26:00 -0000 Message-Id: <200512221557.jBMFvC9f006924@elgar.sibelius.xs4all.nl> From: Mark Kettenis To: gdb-patches@sourceware.org Subject: [commit] Fix & clarify OpenBSD/i386 and OpenBSD/amd64 kernel support Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2005-12/txt/msg00268.txt.bz2 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 * 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)