Fix tab/space mess
authorGé van Geldorp <ge@gse.nl>
Fri, 14 Oct 2005 13:39:27 +0000 (13:39 +0000)
committerGé van Geldorp <ge@gse.nl>
Fri, 14 Oct 2005 13:39:27 +0000 (13:39 +0000)
svn path=/trunk/; revision=18443

reactos/ntoskrnl/kd/wrappers/gdbstub.c

index e02d9fa..5e61ab1 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
 
-               THIS SOFTWARE IS NOT COPYRIGHTED
+   THIS SOFTWARE IS NOT COPYRIGHTED
 
    HP offers the following for use in the public domain.  HP makes no
    warranty with regard to the software or it's performance and the
@@ -110,14 +110,14 @@ extern LIST_ENTRY PsActiveProcessHead;
 KD_PORT_INFORMATION GdbPortInfo = { 2, 115200, 0 }; /* FIXME hardcoded for COM2, 115200 baud */
 
 /* Number of Registers.  */
-#define NUMREGS        16
+#define NUMREGS 16
 
 enum REGISTER_NAMES
 {
   EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI,
-       PC /* also known as eip */,
-       PS /* also known as eflags */,
-       CS, SS, DS, ES, FS, GS
+  PC /* also known as eip */,
+  PS /* also known as eflags */,
+  CS, SS, DS, ES, FS, GS
 };
 
 typedef struct _CPU_REGISTER
@@ -213,47 +213,36 @@ GspGetPacket()
 
       /* now, read until a # or end of Buffer is found */
       while (Count < BUFMAX)
-       {
-         ch = GdbGetChar ();
-         if (ch == '$')
-           goto retry;
-         if (ch == '#')
-           break;
-         Checksum = Checksum + ch;
-         Buffer[Count] = ch;
-         Count = Count + 1;
-       }
+        {
+          ch = GdbGetChar ();
+          if (ch == '$')
+            goto retry;
+          if (ch == '#')
+            break;
+          Checksum = Checksum + ch;
+          Buffer[Count] = ch;
+          Count = Count + 1;
+        }
       Buffer[Count] = 0;
 
       if (ch == '#')
-       {
-         ch = GdbGetChar ();
-         XmitChecksum = (CHAR)(HexValue (ch) << 4);
-         ch = GdbGetChar ();
-         XmitChecksum += (CHAR)(HexValue (ch));
-
-         if (Checksum != XmitChecksum)
-           {
-             GdbPutChar ('-'); /* failed checksum */
-           }
-         else
-           {
-             GdbPutChar ('+'); /* successful transfer */
+        {
+          ch = GdbGetChar ();
+          XmitChecksum = (CHAR)(HexValue (ch) << 4);
+          ch = GdbGetChar ();
+          XmitChecksum += (CHAR)(HexValue (ch));
 
-#if 0
-             /* if a sequence char is present, reply the sequence ID */
-             if (Buffer[2] == ':')
-               {
-                 GdbPutChar (Buffer[0]);
-                 GdbPutChar (Buffer[1]);
-
-                 return &Buffer[3];
-               }
-#endif
+          if (Checksum != XmitChecksum)
+            {
+              GdbPutChar ('-'); /* failed checksum */
+            }
+          else
+            {
+              GdbPutChar ('+'); /* successful transfer */
 
-             return &Buffer[0];
-           }
-       }
+              return &Buffer[0];
+            }
+        }
     }
 }
 
@@ -274,11 +263,11 @@ GspPutPacket (PCHAR Buffer)
       Count = 0;
 
       while ((ch = Buffer[Count]))
-                               {
-                                 GdbPutChar (ch);
-                                 Checksum += ch;
-                                 Count += 1;
-                               }
+        {
+          GdbPutChar (ch);
+          Checksum += ch;
+          Count += 1;
+        }
 
       GdbPutChar ('#');
       GdbPutChar (HexChars[(Checksum >> 4) & 0xf]);
@@ -301,11 +290,11 @@ GspPutPacketNoWait (PCHAR Buffer)
   Count = 0;
 
   while ((ch = Buffer[Count]))
-               {
-                 GdbPutChar (ch);
-                 Checksum += ch;
-                 Count += 1;
-               }
+    {
+      GdbPutChar (ch);
+      Checksum += ch;
+      Count += 1;
+    }
 
   GdbPutChar ('#');
   GdbPutChar (HexChars[(Checksum >> 4) & 0xf]);
@@ -425,37 +414,33 @@ GspComputeSignal (NTSTATUS ExceptionCode)
   switch (ExceptionCode)
     {
     case STATUS_INTEGER_DIVIDE_BY_ZERO:
-      SigVal = 8;
-      break;                   /* divide by zero */
+      SigVal = 8; /* divide by zero */
+      break;
     case STATUS_SINGLE_STEP:
-                               /* debug exception */
     case STATUS_BREAKPOINT:
-      SigVal = 5;
-      break;                   /* breakpoint */
+      SigVal = 5; /* breakpoint */
+      break;
     case STATUS_INTEGER_OVERFLOW:
-                               /* into instruction (overflow) */
     case STATUS_ARRAY_BOUNDS_EXCEEDED:
-      SigVal = 16;
-      break;                   /* bound instruction */
+      SigVal = 16; /* bound instruction */
+      break;
     case STATUS_ILLEGAL_INSTRUCTION:
-      SigVal = 4;
-      break;                   /* Invalid opcode */
+      SigVal = 4; /* Invalid opcode */
+      break;
 #if 0
     case STATUS_FLT_INVALID_OPERATION:
       SigVal = 8;
-      break;                   /* coprocessor not available */
+      break;
 #endif
     case STATUS_STACK_OVERFLOW:
-                               /* stack exception */
     case STATUS_DATATYPE_MISALIGNMENT:
-                               /* page fault */
     case STATUS_ACCESS_VIOLATION:
-      SigVal = 11;             /* access violation */
+      SigVal = 11; /* access violation */
       break;
     default:
-      SigVal = 7;              /* "software generated" */
+      SigVal = 7; /* "software generated" */
     }
-  return (SigVal);
+  return SigVal;
 }
 
 
@@ -476,12 +461,14 @@ GspHex2Long (PCHAR *Address,
     {
       Hex = HexValue (**Address);
       if (Hex >= 0)
-                               {
-                                 *Value = (*Value << 4) | Hex;
-                                 NumChars++;
-                               }
-        else
-               break;
+        {
+          *Value = (*Value << 4) | Hex;
+          NumChars++;
+        }
+      else
+        {
+          break;
+        }
 
       (*Address)++;
     }
@@ -631,7 +618,7 @@ GspFindThread(PCHAR Data,
       ThreadId = (HANDLE)uThreadId;
 
       if (!NT_SUCCESS (PsLookupThreadByThreadId (ThreadId, &ThreadInfo)))
-                         {
+        {
           *Thread = NULL;
           return FALSE;
         }
@@ -650,7 +637,7 @@ GspSetThread(PCHAR Request)
   switch (Request[0])
   {
     case 'c': /* Run thread */
-      if (GspFindThread (ptr, &ThreadInfo))
+      if (GspFindThread(ptr, &ThreadInfo))
         {
           GspOutBuffer[0] = 'O';
           GspOutBuffer[1] = 'K';
@@ -672,18 +659,21 @@ GspSetThread(PCHAR Request)
       break;
     case 'g': /* Debug thread */
       if (GspFindThread (ptr, &ThreadInfo))
-                         {
-                           GspOutBuffer[0] = 'O';
-                           GspOutBuffer[1] = 'K';
-
-                            if(GspDbgThread) ObDereferenceObject(GspDbgThread);
-
-                            GspDbgThread = ThreadInfo;
-                         }
-                         else
-                         {
-                           GspOutBuffer[0] = 'E';
-                         }
+        {
+          GspOutBuffer[0] = 'O';
+          GspOutBuffer[1] = 'K';
+
+          if (GspDbgThread)
+            {
+              ObDereferenceObject(GspDbgThread);
+            }
+
+          GspDbgThread = ThreadInfo;
+        }
+      else
+        {
+          GspOutBuffer[0] = 'E';
+        }
       break;
     default:
       break;
@@ -905,96 +895,98 @@ GspCorrectHwBreakpoint()
             "=r" (addr2), "=r" (addr3) : );
     } while (FALSE);
 #elif defined(_MSC_VER)
-    __asm
+  __asm
     {
-       mov eax, dr7; mov dr7_, eax;
-       mov eax, dr0; mov addr0, eax;
-       mov eax, dr1; mov addr1, eax;
-       mov eax, dr2; mov addr2, eax;
-       mov eax, dr3; mov addr3, eax;
+      mov eax, dr7; mov dr7_, eax;
+      mov eax, dr0; mov addr0, eax;
+      mov eax, dr1; mov addr1, eax;
+      mov eax, dr2; mov addr2, eax;
+      mov eax, dr3; mov addr3, eax;
     }
 #else
 #error Unknown compiler for inline assembler
 #endif
-    CorrectIt = FALSE;
-    for (BreakpointNumber = 0; BreakpointNumber < 3; BreakpointNumber++)
+  CorrectIt = FALSE;
+  for (BreakpointNumber = 0; BreakpointNumber < 3; BreakpointNumber++)
     {
-                       Bit = 2 << (BreakpointNumber << 1);
-                       if (!(dr7_ & Bit) && GspBreakpoints[BreakpointNumber].Enabled) {
-                 CorrectIt = TRUE;
-                       dr7_ |= Bit;
-                       dr7_ &= ~(0xf0000 << (BreakpointNumber << 2));
-                       dr7_ |= (((GspBreakpoints[BreakpointNumber].Length << 2) |
-        GspBreakpoints[BreakpointNumber].Type) << 16) << (BreakpointNumber << 2);
-    switch (BreakpointNumber) {
+      Bit = 2 << (BreakpointNumber << 1);
+      if (!(dr7_ & Bit) && GspBreakpoints[BreakpointNumber].Enabled)
+        {
+          CorrectIt = TRUE;
+          dr7_ |= Bit;
+          dr7_ &= ~(0xf0000 << (BreakpointNumber << 2));
+          dr7_ |= (((GspBreakpoints[BreakpointNumber].Length << 2) |
+          GspBreakpoints[BreakpointNumber].Type) << 16) << (BreakpointNumber << 2);
+          switch (BreakpointNumber)
+            {
 #if defined(__GNUC__)
-                       case 0:
-                         asm volatile ("movl %0, %%dr0\n"
-                           : : "r" (GspBreakpoints[BreakpointNumber].Address) );
-                         break;
-
-                       case 1:
-                               asm volatile ("movl %0, %%dr1\n"
-                                 : : "r" (GspBreakpoints[BreakpointNumber].Address) );
-                               break;
-
-                       case 2:
-                               asm volatile ("movl %0, %%dr2\n"
-                               : : "r" (GspBreakpoints[BreakpointNumber].Address) );
-                       break;
-
-      case 3:
-        asm volatile ("movl %0, %%dr3\n"
-          : : "r" (GspBreakpoints[BreakpointNumber].Address) );
-        break;
+            case 0:
+              asm volatile ("movl %0, %%dr0\n"
+                            : : "r" (GspBreakpoints[BreakpointNumber].Address) );
+              break;
+
+            case 1:
+              asm volatile ("movl %0, %%dr1\n"
+                            : : "r" (GspBreakpoints[BreakpointNumber].Address) );
+              break;
+
+            case 2:
+              asm volatile ("movl %0, %%dr2\n"
+                            : : "r" (GspBreakpoints[BreakpointNumber].Address) );
+              break;
+
+            case 3:
+              asm volatile ("movl %0, %%dr3\n"
+                            : : "r" (GspBreakpoints[BreakpointNumber].Address) );
+              break;
 #elif defined(_MSC_VER)
-       case 0:
-           {
-             ULONG addr = GspBreakpoints[BreakpointNumber].Address;
-             __asm mov eax, addr;
-             __asm mov dr0, eax;
-           }
-         break;
-       case 1:
-           {
-             ULONG addr = GspBreakpoints[BreakpointNumber].Address;
-             __asm mov eax, addr;
-             __asm mov dr1, eax;
-           }
-         break;
-       case 2:
-           {
-             ULONG addr = GspBreakpoints[BreakpointNumber].Address;
-             __asm mov eax, addr;
-             __asm mov dr2, eax;
-           }
-         break;
-       case 3:
-           {
-             ULONG addr = GspBreakpoints[BreakpointNumber].Address;
-             __asm mov eax, addr;
-             __asm mov dr3, eax;
-           }
-         break;
+            case 0:
+              {
+                ULONG addr = GspBreakpoints[BreakpointNumber].Address;
+                __asm mov eax, addr;
+                __asm mov dr0, eax;
+              }
+              break;
+            case 1:
+              {
+                ULONG addr = GspBreakpoints[BreakpointNumber].Address;
+                __asm mov eax, addr;
+                __asm mov dr1, eax;
+              }
+              break;
+            case 2:
+              {
+                ULONG addr = GspBreakpoints[BreakpointNumber].Address;
+                __asm mov eax, addr;
+                __asm mov dr2, eax;
+              }
+              break;
+            case 3:
+              {
+                ULONG addr = GspBreakpoints[BreakpointNumber].Address;
+                __asm mov eax, addr;
+                __asm mov dr3, eax;
+              }
+              break;
 #else
 #error Unknown compiler for inline assembler
 #endif
-      }
+            }
+        }
+      else if ((dr7_ & Bit) && !GspBreakpoints[BreakpointNumber].Enabled)
+        {
+          CorrectIt = TRUE;
+          dr7_ &= ~Bit;
+          dr7_ &= ~(0xf0000 << (BreakpointNumber << 2));
+        }
     }
-    else if ((dr7_ & Bit) && !GspBreakpoints[BreakpointNumber].Enabled)
-      {
-        CorrectIt = TRUE;
-        dr7_ &= ~Bit;
-        dr7_ &= ~(0xf0000 << (BreakpointNumber << 2));
-      }
-  }
   if (CorrectIt)
     {
 #if defined(__GNUC__)
-           asm volatile ( "movl %0, %%db7\n" : : "r" (dr7_));
+      asm volatile ( "movl %0, %%db7\n" : : "r" (dr7_));
 #elif defined(_MSC_VER)
-           __asm mov eax, dr7_;
-           __asm mov dr7, eax;
+      __asm mov eax, dr7_;
+      __asm mov dr7, eax;
 #else
 #error Unknown compiler for inline assembler
 #endif
@@ -1004,12 +996,12 @@ GspCorrectHwBreakpoint()
 ULONG
 GspRemoveHwBreakpoint(ULONG BreakpointNumber)
 {
-       if (!GspBreakpoints[BreakpointNumber].Enabled)
+  if (!GspBreakpoints[BreakpointNumber].Enabled)
     {
-           return -1;
-       }
-       GspBreakpoints[BreakpointNumber].Enabled = 0;
-       return 0;
+      return -1;
+    }
+  GspBreakpoints[BreakpointNumber].Enabled = 0;
+  return 0;
 }
 
 
@@ -1019,15 +1011,15 @@ GspSetHwBreakpoint(ULONG BreakpointNumber,
   ULONG Length,
   ULONG Address)
 {
-       if (GspBreakpoints[BreakpointNumber].Enabled)
-         {
-               return -1;
-               }
-       GspBreakpoints[BreakpointNumber].Enabled = TRUE;
-       GspBreakpoints[BreakpointNumber].Type = Type;
-       GspBreakpoints[BreakpointNumber].Length = Length;
-       GspBreakpoints[BreakpointNumber].Address = Address;
-       return 0;
+  if (GspBreakpoints[BreakpointNumber].Enabled)
+    {
+      return -1;
+    }
+  GspBreakpoints[BreakpointNumber].Enabled = TRUE;
+  GspBreakpoints[BreakpointNumber].Type = Type;
+  GspBreakpoints[BreakpointNumber].Length = Length;
+  GspBreakpoints[BreakpointNumber].Address = Address;
+  return 0;
 }
 
 
@@ -1080,42 +1072,45 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
 
       /* ugly hack to avoid attempting to send status at the very
        * beginning, right when GDB is trying to query the stub */
-      if (gdb_attached_yet) {
-         LONG Esp;
-         
-       stop_reply:
-         /* reply to host that an exception has occurred */
-         SigVal = GspComputeSignal (ExceptionRecord->ExceptionCode);
-         
-         ptr = &GspOutBuffer[0];
-
-         *ptr++ = 'T';                 /* notify gdb with signo, PC, FP and SP */
-         *ptr++ = HexChars[(SigVal >> 4) & 0xf];
-         *ptr++ = HexChars[SigVal & 0xf];
-
-         *ptr++ = HexChars[ESP];
-         *ptr++ = ':';
-         
-         Esp = GspGetEspFromTrapFrame (TrapFrame);                    /* SP */
-         ptr = GspMem2Hex ((PCHAR) &Esp, ptr, 4, 0);
-         *ptr++ = ';';
-         
-         *ptr++ = HexChars[EBP];
-         *ptr++ = ':';
-         ptr = GspMem2Hex ((PCHAR) &TrapFrame->Ebp, ptr, 4, 0);       /* FP */
-         *ptr++ = ';';
-         
-         *ptr++ = HexChars[PC];
-         *ptr++ = ':';
-         ptr = GspMem2Hex((PCHAR) &TrapFrame->Eip, ptr, 4, 0);        /* PC */
-         *ptr++ = ';';
-
-         *ptr = '\0';
-
-         GspPutPacket (&GspOutBuffer[0]);
-      } else {
-         gdb_attached_yet = 1;
-      }
+      if (gdb_attached_yet)
+        {
+          LONG Esp;
+  
+          stop_reply:
+          /* reply to host that an exception has occurred */
+          SigVal = GspComputeSignal (ExceptionRecord->ExceptionCode);
+
+          ptr = &GspOutBuffer[0];
+
+          *ptr++ = 'T'; /* notify gdb with signo, PC, FP and SP */
+          *ptr++ = HexChars[(SigVal >> 4) & 0xf];
+          *ptr++ = HexChars[SigVal & 0xf];
+
+          *ptr++ = HexChars[ESP];
+          *ptr++ = ':';
+  
+          Esp = GspGetEspFromTrapFrame (TrapFrame);      /* SP */
+          ptr = GspMem2Hex ((PCHAR) &Esp, ptr, 4, 0);
+          *ptr++ = ';';
+  
+          *ptr++ = HexChars[EBP];
+          *ptr++ = ':';
+          ptr = GspMem2Hex ((PCHAR) &TrapFrame->Ebp, ptr, 4, 0);       /* FP */
+          *ptr++ = ';';
+  
+          *ptr++ = HexChars[PC];
+          *ptr++ = ':';
+          ptr = GspMem2Hex((PCHAR) &TrapFrame->Eip, ptr, 4, 0);        /* PC */
+          *ptr++ = ';';
+
+          *ptr = '\0';
+
+          GspPutPacket (&GspOutBuffer[0]);
+        }
+      else
+        {
+          gdb_attached_yet = 1;
+        }
       
       Stepping = FALSE;
 
@@ -1128,8 +1123,8 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
           switch (*ptr++)
             {
             case '?':
-               /* a little hack to send more complete status information */
-               goto stop_reply;
+              /* a little hack to send more complete status information */
+              goto stop_reply;
               GspOutBuffer[0] = 'S';
               GspOutBuffer[1] = HexChars[SigVal >> 4];
               GspOutBuffer[2] = HexChars[SigVal % 16];
@@ -1138,7 +1133,7 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
             case 'd':
               GspRemoteDebug = !GspRemoteDebug; /* toggle debug flag */
               break;
-            case 'g':          /* return the value of the CPU Registers */
+            case 'g': /* return the value of the CPU Registers */
               if (NULL != GspDbgThread)
                 {
                   GspGetRegistersFromTrapFrame (&GspOutBuffer[0], Context, GspDbgThread->Tcb.TrapFrame);
@@ -1148,7 +1143,7 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
                   GspGetRegistersFromTrapFrame (&GspOutBuffer[0], Context, TrapFrame);
                 }
               break;
-            case 'G':          /* set the value of the CPU Registers - return OK */
+            case 'G': /* set the value of the CPU Registers - return OK */
               if (NULL != GspDbgThread)
                 {
                   GspSetRegistersInTrapFrame (ptr, Context, GspDbgThread->Tcb.TrapFrame);
@@ -1159,7 +1154,7 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
                 }
               strcpy (GspOutBuffer, "OK");
               break;
-            case 'P':          /* set the value of a single CPU register - return OK */
+            case 'P': /* set the value of a single CPU register - return OK */
               {
                 LONG Register;
 
@@ -1288,12 +1283,12 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
                 break;
               }
 
-            case 'k':  /* kill the program */
+            case 'k':  /* kill the program */
               strcpy (GspOutBuffer, "OK");
               break;
               /* kill the program */
 
-            case 'H':          /* Set thread */
+            case 'H': /* Set thread */
               GspSetThread (ptr);
               break;
 
@@ -1351,7 +1346,7 @@ KdpGdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
 
             default:
               break;
-            }                  /* switch */
+            }
 
           /* reply to the request */
           GspPutPacket (&GspOutBuffer[0]);
@@ -1411,24 +1406,8 @@ VOID
 STDCALL
 KdpGdbDebugPrint(PCH Message, ULONG Length)
 {
-#if 0
-  /* This can be quite annoying! */
-  if (GspInitialized)
-         {
-           ULONG Length;
-
-           GspOutBuffer[0] = 'O';
-           GspOutBuffer[1] = '\0';
-           strcat (&GspOutBuffer[0], Message);
-           Length = strlen (Message);
-           GspOutBuffer[2 + Length] = '\n';
-           GspOutBuffer[3 + Length] = '\0';
-           GspPutPacketNoWait (&GspOutBuffer[0]);
-         }
-#endif
 }
 
-
 extern LIST_ENTRY ModuleListHead;
 
 VOID