Date: Sun, 23 Aug 1998 10:25:25 +0300 (IDT) From: Eli Zaretskii To: DJ Delorie cc: djgpp-workers AT delorie DOT com Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk As you might remember, when a user-defined SIGSEGV handler returns from a *real* exception, dpmiexcp.c prints only the signal numeric code, as opposed to the default handler which prints its mnemonic. This small change makes all these cases print the same. *** src/libc/go32/dpmiexcp.c~0 Sun Jun 28 23:32:32 1998 --- src/libc/go32/dpmiexcp.c Mon Aug 17 12:05:30 1998 *************** signal(int sig, SignalHandler func) *** 293,298 **** --- 293,314 ---- static const char signames[] = "ABRTFPE ILL SEGVTERMALRMHUP INT KILLPIPEQUITUSR1USR2NOFPTRAP"; + static void print_signal_name(int sig) + { + err("Exiting due to signal "); + if (sig >= SIGABRT && sig <= SIGTRAP) + { + err("SIG"); + _write(STDERR_FILENO, signames+(sig-SIGABRT)*4, 4); + } + else + { + err("0x"); + itox(sig, 4); + } + err("\r\n"); + } + void __djgpp_traceback_exit(int); void __djgpp_traceback_exit(int sig) *************** void __djgpp_traceback_exit(int sig) *** 316,331 **** inside exceptn.S, for SIGQUIT. */ __djgpp_exception_state->__signum = 0x7a + 1 + sig - SIGABRT; } - - err("Exiting due to signal SIG"); - _write(STDERR_FILENO, signames+(sig-SIGABRT)*4, 4); } ! else ! { ! err("Exiting due to signal 0x"); ! itox(sig, 4); ! } ! err("\r\n"); if(__djgpp_exception_state_ptr) /* This exits, does not return. */ do_faulting_finish_message(__djgpp_exception_state == fake_exception); --- 332,339 ---- inside exceptn.S, for SIGQUIT. */ __djgpp_exception_state->__signum = 0x7a + 1 + sig - SIGABRT; } } ! print_signal_name(sig); if(__djgpp_exception_state_ptr) /* This exits, does not return. */ do_faulting_finish_message(__djgpp_exception_state == fake_exception); *************** __djgpp_exception_processor(void) *** 369,377 **** if(__djgpp_exception_state->__signum >= EXCEPTION_COUNT) /* Not exception so continue OK */ longjmp(__djgpp_exception_state, __djgpp_exception_state->__eax); /* User handler did not exit or longjmp, we must exit */ ! err("Cannot continue from exception, exiting due to signal "); ! itox(sig, 4); ! err("\r\n"); do_faulting_finish_message(0); } --- 377,384 ---- if(__djgpp_exception_state->__signum >= EXCEPTION_COUNT) /* Not exception so continue OK */ longjmp(__djgpp_exception_state, __djgpp_exception_state->__eax); /* User handler did not exit or longjmp, we must exit */ ! err("Cannot continue from exception, "); ! print_signal_name(sig); do_faulting_finish_message(0); }