re-arrange a few lines to remove some duplicate ifdef's. And move the cr2 def into the area that uses it to remove build warnings on freebsd
This commit is contained in:
parent
fe9cb4b7ec
commit
5d88acb8a6
|
@ -47,15 +47,12 @@ RETSIGTYPE zm_die_handler(int signal, siginfo_t * info, void *context)
|
||||||
RETSIGTYPE zm_die_handler(int signal)
|
RETSIGTYPE zm_die_handler(int signal)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if (defined(__i386__) || defined(__x86_64__))
|
|
||||||
void *cr2 = 0;
|
|
||||||
void *ip = 0;
|
|
||||||
#endif
|
|
||||||
Error("Got signal %d (%s), crashing", signal, strsignal(signal));
|
Error("Got signal %d (%s), crashing", signal, strsignal(signal));
|
||||||
|
|
||||||
#if (defined(__i386__) || defined(__x86_64__))
|
#if (defined(__i386__) || defined(__x86_64__))
|
||||||
|
void *ip = 0;
|
||||||
// Get more information if available
|
// Get more information if available
|
||||||
#if ( HAVE_SIGINFO_T && HAVE_UCONTEXT_T )
|
#if ( HAVE_SIGINFO_T && HAVE_UCONTEXT_T )
|
||||||
|
void *cr2 = 0;
|
||||||
if (info && context) {
|
if (info && context) {
|
||||||
|
|
||||||
Debug(1,
|
Debug(1,
|
||||||
|
@ -65,19 +62,19 @@ RETSIGTYPE zm_die_handler(int signal)
|
||||||
|
|
||||||
ucontext_t *uc = (ucontext_t *) context;
|
ucontext_t *uc = (ucontext_t *) context;
|
||||||
cr2 = info->si_addr;
|
cr2 = info->si_addr;
|
||||||
#if defined(__x86_64__)
|
#if defined(__x86_64__)
|
||||||
#ifdef __FreeBSD_kernel__
|
#ifdef __FreeBSD_kernel__
|
||||||
ip = (void *)(uc->uc_mcontext.mc_rip);
|
ip = (void *)(uc->uc_mcontext.mc_rip);
|
||||||
#else
|
#else
|
||||||
ip = (void *)(uc->uc_mcontext.gregs[REG_RIP]);
|
ip = (void *)(uc->uc_mcontext.gregs[REG_RIP]);
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
#ifdef __FreeBSD_kernel__
|
#ifdef __FreeBSD_kernel__
|
||||||
ip = (void *)(uc->uc_mcontext.mc_eip);
|
ip = (void *)(uc->uc_mcontext.mc_eip);
|
||||||
#else
|
#else
|
||||||
ip = (void *)(uc->uc_mcontext.gregs[REG_EIP]);
|
ip = (void *)(uc->uc_mcontext.gregs[REG_EIP]);
|
||||||
#endif
|
#endif
|
||||||
#endif // defined(__x86_64__)
|
#endif // defined(__x86_64__)
|
||||||
|
|
||||||
// Print the signal address and instruction pointer if available
|
// Print the signal address and instruction pointer if available
|
||||||
if (ip) {
|
if (ip) {
|
||||||
|
@ -86,11 +83,11 @@ RETSIGTYPE zm_die_handler(int signal)
|
||||||
Error("Signal address is %p, no instruction pointer", cr2);
|
Error("Signal address is %p, no instruction pointer", cr2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // ( HAVE_SIGINFO_T && HAVE_UCONTEXT_T )
|
#endif // ( HAVE_SIGINFO_T && HAVE_UCONTEXT_T )
|
||||||
|
|
||||||
|
|
||||||
// Print backtrace if enabled and available
|
// Print backtrace if enabled and available
|
||||||
#if ( !defined(ZM_NO_CRASHTRACE) && HAVE_DECL_BACKTRACE && HAVE_DECL_BACKTRACE_SYMBOLS )
|
#if ( !defined(ZM_NO_CRASHTRACE) && HAVE_DECL_BACKTRACE && HAVE_DECL_BACKTRACE_SYMBOLS )
|
||||||
void *trace[TRACE_SIZE];
|
void *trace[TRACE_SIZE];
|
||||||
int trace_size = 0;
|
int trace_size = 0;
|
||||||
trace_size = backtrace(trace, TRACE_SIZE);
|
trace_size = backtrace(trace, TRACE_SIZE);
|
||||||
|
@ -111,7 +108,7 @@ RETSIGTYPE zm_die_handler(int signal)
|
||||||
|
|
||||||
Info("Backtrace complete, please execute the following command for more information");
|
Info("Backtrace complete, please execute the following command for more information");
|
||||||
Info(cmd);
|
Info(cmd);
|
||||||
#endif // ( !defined(ZM_NO_CRASHTRACE) && HAVE_DECL_BACKTRACE && HAVE_DECL_BACKTRACE_SYMBOLS )
|
#endif // ( !defined(ZM_NO_CRASHTRACE) && HAVE_DECL_BACKTRACE && HAVE_DECL_BACKTRACE_SYMBOLS )
|
||||||
#endif // (defined(__i386__) || defined(__x86_64__)
|
#endif // (defined(__i386__) || defined(__x86_64__)
|
||||||
exit(signal);
|
exit(signal);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue