From 8227c82d1dba6c17fbfa066d271cd4cc0ed07476 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 25 Mar 2000 02:26:21 +0000 Subject: * 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. --- gdb/win32-nat.c | 62 +++++---------------------------------------------------- 1 file changed, 5 insertions(+), 57 deletions(-) (limited to 'gdb/win32-nat.c') diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c index 905eee1..4295d4b 100644 --- a/gdb/win32-nat.c +++ b/gdb/win32-nat.c @@ -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; - } -} -- cgit v1.1