WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-3.4-testing] gdbstub: Small fixes.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-3.4-testing] gdbstub: Small fixes.
From: "Xen patchbot-3.4-testing" <patchbot-3.4-testing@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 19 Aug 2009 08:40:37 -0700
Delivery-date: Wed, 19 Aug 2009 08:41:39 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1250695645 -3600
# Node ID 8a75274cb3b5fb779f4eeaec31ec403c1278baba
# Parent  dc54e755bd8f7f2b08fa37c62718c79591ca1681
gdbstub: Small fixes.

 * Correctly handly EFLAGS.TF in the hypervisor
 * Register value sent with 'P' command is in native byte order.

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset:   20054:8a9f81672c76
xen-unstable date:        Wed Aug 12 14:27:52 2009 +0100

gdbstub: Fix the build and make a few cleanups.

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset:   20055:da620c454916
xen-unstable date:        Thu Aug 13 08:40:39 2009 +0100

x86: Do not clear EF.TF in crash-debug mode.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset:   20056:042e2103c3a2
xen-unstable date:        Fri Aug 14 08:22:34 2009 +0100

[IA64] define BYTES_PER_LONG to fix compilation error.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
xen-unstable changeset:   20085:49ba52281a4f
xen-unstable date:        Wed Aug 19 14:21:56 2009 +0100
---
 xen/arch/x86/traps.c            |   15 ++++++++++-----
 xen/common/gdbstub.c            |   33 +++++++++++++++++++++++++++------
 xen/include/asm-ia64/xentypes.h |    2 ++
 xen/include/xen/gdbstub.h       |    6 ------
 4 files changed, 39 insertions(+), 17 deletions(-)

diff -r dc54e755bd8f -r 8a75274cb3b5 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Wed Aug 19 16:24:52 2009 +0100
+++ b/xen/arch/x86/traps.c      Wed Aug 19 16:27:25 2009 +0100
@@ -2981,13 +2981,18 @@ asmlinkage void do_debug(struct cpu_user
             void sysenter_eflags_saved(void);
             /* In SYSENTER entry path we can't zap TF until EFLAGS is saved. */
             if ( (regs->rip >= (unsigned long)sysenter_entry) &&
-                 (regs->rip < (unsigned long)sysenter_eflags_saved) )
+                 (regs->rip <= (unsigned long)sysenter_eflags_saved) )
+            {
+                if ( regs->rip == (unsigned long)sysenter_eflags_saved )
+                    regs->eflags &= ~EF_TF;
                 goto out;
-            WARN_ON(regs->rip != (unsigned long)sysenter_eflags_saved);
-#else
-            WARN_ON(1);
+            }
 #endif
-            regs->eflags &= ~EF_TF;
+            if ( !debugger_trap_fatal(TRAP_debug, regs) )
+            {
+                WARN_ON(1);
+                regs->eflags &= ~EF_TF;
+            }
         }
         else
         {
diff -r dc54e755bd8f -r 8a75274cb3b5 xen/common/gdbstub.c
--- a/xen/common/gdbstub.c      Wed Aug 19 16:24:52 2009 +0100
+++ b/xen/common/gdbstub.c      Wed Aug 19 16:27:25 2009 +0100
@@ -71,15 +71,14 @@ static void gdbstub_console_puts(const c
 static void gdbstub_console_puts(const char *str);
 
 /* value <-> char (de)serialzers */
-char
+static char
 hex2char(unsigned long x)
 {
     const char array[] = "0123456789abcdef";
-
     return array[x & 15];
 }
 
-int
+static unsigned int
 char2hex(unsigned char c)
 {
     if ( (c >= '0') && (c <= '9') )
@@ -93,13 +92,13 @@ char2hex(unsigned char c)
     return -1;
 }
 
-char
+static unsigned char
 str2hex(const char *str)
 {
     return (char2hex(str[0]) << 4) | char2hex(str[1]);
 }
 
-unsigned long
+static unsigned long
 str2ulong(const char *str, unsigned long bytes)
 {
     unsigned long x = 0;
@@ -111,6 +110,28 @@ str2ulong(const char *str, unsigned long
         x += char2hex(*str);
         ++str;
         ++i;
+    }
+
+    return x;
+}
+
+static unsigned long
+str_to_native_ulong(const char *str)
+{
+    unsigned long x = 0, i = 0;
+
+    while ( *str && (i < BYTES_PER_LONG) )
+    {
+#ifdef __BIG_ENDIAN
+        x <<= 8;
+        x += str2hex(str);
+#elif defined(__LITTLE_ENDIAN)
+        x += (unsigned long)str2hex(str) << (i*8);
+#else
+# error unknown endian
+#endif
+        str += 2;
+        i++;
     }
 
     return x;
@@ -488,7 +509,7 @@ process_command(struct cpu_user_regs *re
             return 0;
         }
         ptr++;
-        val = str2ulong(ptr, sizeof(unsigned long));
+        val = str_to_native_ulong(ptr);
         gdb_arch_write_reg(addr, val, regs, ctx);
         break;
     case 'D':
diff -r dc54e755bd8f -r 8a75274cb3b5 xen/include/asm-ia64/xentypes.h
--- a/xen/include/asm-ia64/xentypes.h   Wed Aug 19 16:24:52 2009 +0100
+++ b/xen/include/asm-ia64/xentypes.h   Wed Aug 19 16:27:25 2009 +0100
@@ -10,6 +10,8 @@ typedef char bool_t;
 #define test_and_set_bool(b)   xchg(&(b), 1)
 #define test_and_clear_bool(b) xchg(&(b), 0)
 
+#define BYTES_PER_LONG  8
+
 #endif /* !__ASSEMBLY__ */
 
 #endif /* _ASM_IA64_XENTYPES_H */
diff -r dc54e755bd8f -r 8a75274cb3b5 xen/include/xen/gdbstub.h
--- a/xen/include/xen/gdbstub.h Wed Aug 19 16:24:52 2009 +0100
+++ b/xen/include/xen/gdbstub.h Wed Aug 19 16:27:25 2009 +0100
@@ -25,12 +25,6 @@
 #include <asm/page.h>
 
 #ifdef CRASH_DEBUG
-
-/* value <-> char (de)serialzers for arch specific gdb backends */
-char hex2char(unsigned long x);
-int char2hex(unsigned char c);
-char str2hex(const char *str);
-unsigned long str2ulong(const char *str, unsigned long bytes);
 
 struct gdb_context {
     int                 serhnd;           /* handle on our serial line */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-3.4-testing] gdbstub: Small fixes., Xen patchbot-3.4-testing <=