diff options
author | Christopher Faylor <me+cygwin@cgf.cx> | 2000-03-25 02:26:21 +0000 |
---|---|---|
committer | Christopher Faylor <me+cygwin@cgf.cx> | 2000-03-25 02:26:21 +0000 |
commit | 8227c82d1dba6c17fbfa066d271cd4cc0ed07476 (patch) | |
tree | e5744515275b59253c675ca7a39a45f4c8a74ffe /gdb/win32-nat.c | |
parent | 11bb320587113cc97e3bcc56c7399c91c1203751 (diff) | |
download | gdb-8227c82d1dba6c17fbfa066d271cd4cc0ed07476.zip gdb-8227c82d1dba6c17fbfa066d271cd4cc0ed07476.tar.gz gdb-8227c82d1dba6c17fbfa066d271cd4cc0ed07476.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/win32-nat.c')
-rw-r--r-- | gdb/win32-nat.c | 62 |
1 files changed, 5 insertions, 57 deletions
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; - } -} |