* win32-nat.c: Back out special frame walking code. It was broken.
authorChristopher Faylor <me+cygwin@cgf.cx>
Sat, 25 Mar 2000 02:26:21 +0000 (02:26 +0000)
committerChristopher Faylor <me+cygwin@cgf.cx>
Sat, 25 Mar 2000 02:26:21 +0000 (02:26 +0000)
(handle_exception): Correctly identify an illegal instruction.
* config/tm-cygwin.h: Eliminate special frame handling.  Just use normal i386
handling.

gdb/ChangeLog
gdb/config/i386/tm-cygwin.h
gdb/win32-nat.c
gdb/windows-nat.c

index 902d9714d1b525159be246227845401a179e0319..78e152320806755246dbe2a40b4373c392e90f4b 100644 (file)
@@ -1,3 +1,10 @@
+2000-03-24  Christopher Faylor  <cgf@cygnus.com>
+
+       * win32-nat.c: Back out special frame walking code.  It was broken.
+       (handle_exception): Correctly identify an illegal instruction.
+       * config/tm-cygwin.h: Eliminate special frame handling.  Just use
+       normal i386 handling.
+
 2000-03-24  J.T. Conklin  <jtc@redback.com> 
  
        * i386/tm-nbsd.h (USE_STRUCT_CONVENTION): Define. 
index aade1682a4d37d1c479166540e49e9a9cd44f246..d726328448b467e4d3f6af7db434dba5f54e195a 100644 (file)
@@ -1,5 +1,5 @@
 /* Macro definitions for i386 running under the win32 API Unix.
-   Copyright 1995 - 1999 Free Software Foundation, Inc.
+   Copyright 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 extern CORE_ADDR skip_trampoline_code PARAMS ((CORE_ADDR pc, char *name));
 
 extern char *cygwin_pid_to_str PARAMS ((int pid));
-
-struct frame_info;
-void child_init_frame(int x, struct frame_info *);
-CORE_ADDR child_frame_saved_pc(struct frame_info *);
-CORE_ADDR child_frame_chain(struct frame_info *);
-
-#undef FRAME_CHAIN_VALID_ALTERNATE
-#define FRAME_CHAIN_VALID_ALTERNATE 1
-
-#undef INIT_EXTRA_FRAME_INFO
-#define INIT_EXTRA_FRAME_INFO(x, f) child_init_frame(x, f) 
-
-#undef FRAME_CHAIN
-#define FRAME_CHAIN child_frame_chain
-
-#undef FRAME_SAVED_PC
-#define FRAME_SAVED_PC child_frame_saved_pc
index 905eee1086ff352aedb54c737b43c5485513aca6..4295d4b52105e7260d96127350c29dc2a01fac5a 100644 (file)
@@ -601,6 +601,11 @@ handle_exception (struct target_waitstatus *ourstatus)
               current_event.u.Exception.ExceptionRecord.ExceptionAddress));
       ourstatus->value.sig = TARGET_SIGNAL_TRAP;
       break;
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+      DEBUG_EXCEPT (("gdb: Target exception SINGLE_ILL at 0x%08x\n",
+              current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+      ourstatus->value.sig = TARGET_SIGNAL_ILL;
+      break;
     default:
       /* This may be a structured exception handling exception.  In
          that case, we want to let the program try to handle it, and
@@ -1273,60 +1278,3 @@ cygwin_pid_to_str (int pid)
     sprintf (buf, "thread %d.0x%x", current_event.dwProcessId, pid);
   return buf;
 }
-
-static LPVOID __stdcall
-sfta(HANDLE h, DWORD d)
-{
-  return NULL;
-}
-
-static DWORD __stdcall
-sgmb(HANDLE h, DWORD d)
-{
-#if 0
-  return 4;
-#else
-  return SymGetModuleBase (h, d) ?: 4;
-#endif
-}
-
-CORE_ADDR
-child_frame_chain(struct frame_info *f)
-{
-  STACKFRAME *sf = (STACKFRAME *) f->extra_info;
-  if (!StackWalk (IMAGE_FILE_MACHINE_I386, current_process_handle,
-                 current_thread->h, sf, NULL, NULL, SymFunctionTableAccess, sgmb, NULL) ||
-      !sf->AddrReturn.Offset)
-    return 0;
-  return sf->AddrFrame.Offset;
-}
-
-CORE_ADDR
-child_frame_saved_pc(struct frame_info *f)
-{
-  STACKFRAME *sf = (STACKFRAME *) f->extra_info;
-  return sf->AddrReturn.Offset;
-}
-
-void
-child_init_frame(int leaf, struct frame_info *f)
-{
-  STACKFRAME *sf;
-
-  if (f->next && f->next->extra_info)
-    f->extra_info = f->next->extra_info;
-  else if (f->prev && f->prev->extra_info)
-    f->extra_info = f->prev->extra_info;
-  else
-    {
-      sf = (STACKFRAME *) frame_obstack_alloc (sizeof (*sf));
-      f->extra_info = (struct frame_extra_info *) sf;
-      memset (sf, 0, sizeof(*sf));
-      sf->AddrPC.Offset = f->pc;
-      sf->AddrPC.Mode = AddrModeFlat;
-      sf->AddrStack.Offset = current_thread->context.Esp;
-      sf->AddrStack.Mode = AddrModeFlat;
-      sf->AddrFrame.Offset = f->frame;
-      sf->AddrFrame.Mode = AddrModeFlat;
-    }
-}
index 905eee1086ff352aedb54c737b43c5485513aca6..4295d4b52105e7260d96127350c29dc2a01fac5a 100644 (file)
@@ -601,6 +601,11 @@ handle_exception (struct target_waitstatus *ourstatus)
               current_event.u.Exception.ExceptionRecord.ExceptionAddress));
       ourstatus->value.sig = TARGET_SIGNAL_TRAP;
       break;
+    case EXCEPTION_ILLEGAL_INSTRUCTION:
+      DEBUG_EXCEPT (("gdb: Target exception SINGLE_ILL at 0x%08x\n",
+              current_event.u.Exception.ExceptionRecord.ExceptionAddress));
+      ourstatus->value.sig = TARGET_SIGNAL_ILL;
+      break;
     default:
       /* This may be a structured exception handling exception.  In
          that case, we want to let the program try to handle it, and
@@ -1273,60 +1278,3 @@ cygwin_pid_to_str (int pid)
     sprintf (buf, "thread %d.0x%x", current_event.dwProcessId, pid);
   return buf;
 }
-
-static LPVOID __stdcall
-sfta(HANDLE h, DWORD d)
-{
-  return NULL;
-}
-
-static DWORD __stdcall
-sgmb(HANDLE h, DWORD d)
-{
-#if 0
-  return 4;
-#else
-  return SymGetModuleBase (h, d) ?: 4;
-#endif
-}
-
-CORE_ADDR
-child_frame_chain(struct frame_info *f)
-{
-  STACKFRAME *sf = (STACKFRAME *) f->extra_info;
-  if (!StackWalk (IMAGE_FILE_MACHINE_I386, current_process_handle,
-                 current_thread->h, sf, NULL, NULL, SymFunctionTableAccess, sgmb, NULL) ||
-      !sf->AddrReturn.Offset)
-    return 0;
-  return sf->AddrFrame.Offset;
-}
-
-CORE_ADDR
-child_frame_saved_pc(struct frame_info *f)
-{
-  STACKFRAME *sf = (STACKFRAME *) f->extra_info;
-  return sf->AddrReturn.Offset;
-}
-
-void
-child_init_frame(int leaf, struct frame_info *f)
-{
-  STACKFRAME *sf;
-
-  if (f->next && f->next->extra_info)
-    f->extra_info = f->next->extra_info;
-  else if (f->prev && f->prev->extra_info)
-    f->extra_info = f->prev->extra_info;
-  else
-    {
-      sf = (STACKFRAME *) frame_obstack_alloc (sizeof (*sf));
-      f->extra_info = (struct frame_extra_info *) sf;
-      memset (sf, 0, sizeof(*sf));
-      sf->AddrPC.Offset = f->pc;
-      sf->AddrPC.Mode = AddrModeFlat;
-      sf->AddrStack.Offset = current_thread->context.Esp;
-      sf->AddrStack.Mode = AddrModeFlat;
-      sf->AddrFrame.Offset = f->frame;
-      sf->AddrFrame.Mode = AddrModeFlat;
-    }
-}