forked from enlightenment/efl
Revert "Revert "eina debug - fix segv if an app is compiled with -pg for profiling""
This reverts commit 0d91088d0f
.
It also includes a workaround for OSX where RT signals aren't
supported due to kernel age (too old a fork of freebsd). fixes D6310
and T7029
This commit is contained in:
parent
c23c410912
commit
9639fab82b
|
@ -37,7 +37,65 @@
|
|||
|
||||
#ifndef _WIN32
|
||||
# include <signal.h>
|
||||
# define SIG SIGPROF
|
||||
// realtime signals guarantee a minimum of 8, so SIGRTMIN + 7 would be valid
|
||||
// at a minimum, so let's choose + 6 ... second last of the minimum set.
|
||||
// SIGRTMAX of course is defined too... note the manual pages for sigation say
|
||||
// that it calls rt_sigaction transparently for us so... no need for anything
|
||||
// else special
|
||||
# ifdef SIGRTMIN
|
||||
# define SIG (SIGRTMIN + 6)
|
||||
# else
|
||||
// OSX seems to not support posix RT signals... too old a kernel. so be partly
|
||||
// broken on OSX in that a HUP signal will maybe cause a crash... but compiling
|
||||
// with -pg would have guaranteed always caused a crash before anyway.
|
||||
// given OSX only supports "old-style" signals like:
|
||||
//
|
||||
// #define SIGHUP 1 /* hangup */
|
||||
// #define SIGINT 2 /* interrupt */
|
||||
// #define SIGQUIT 3 /* quit */
|
||||
// #define SIGILL 4 /* illegal instruction (not reset when caught) */
|
||||
// #define SIGTRAP 5 /* trace trap (not reset when caught) */
|
||||
// #define SIGABRT 6 /* abort() */
|
||||
// #if (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE))
|
||||
// # define SIGPOLL 7 /* pollable event ([XSR] generated, not supported) */
|
||||
// #else /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
// # define SIGIOT SIGABRT /* compatibility */
|
||||
// # define SIGEMT 7 /* EMT instruction */
|
||||
// #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
|
||||
// #define SIGFPE 8 /* floating point exception */
|
||||
// #define SIGKILL 9 /* kill (cannot be caught or ignored) */
|
||||
// #define SIGBUS 10 /* bus error */
|
||||
// #define SIGSEGV 11 /* segmentation violation */
|
||||
// #define SIGSYS 12 /* bad argument to system call */
|
||||
// #define SIGPIPE 13 /* write on a pipe with no one to read it */
|
||||
// #define SIGALRM 14 /* alarm clock */
|
||||
// #define SIGTERM 15 /* software termination signal from kill */
|
||||
// #define SIGURG 16 /* urgent condition on IO channel */
|
||||
// #define SIGSTOP 17 /* sendable stop signal not from tty */
|
||||
// #define SIGTSTP 18 /* stop signal from tty */
|
||||
// #define SIGCONT 19 /* continue a stopped process */
|
||||
// #define SIGCHLD 20 /* to parent on child stop or exit */
|
||||
// #define SIGTTIN 21 /* to readers pgrp upon background tty read */
|
||||
// #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
|
||||
// #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
// # define SIGIO 23 /* input/output possible signal */
|
||||
// #endif
|
||||
// #define SIGXCPU 24 /* exceeded CPU time limit */
|
||||
// #define SIGXFSZ 25 /* exceeded file size limit */
|
||||
// #define SIGVTALRM 26 /* virtual time alarm */
|
||||
// #define SIGPROF 27 /* profiling time alarm */
|
||||
// #if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
|
||||
// # define SIGWINCH 28 /* window size changes */
|
||||
// # define SIGINFO 29 /* information request */
|
||||
// #endif
|
||||
// #define SIGUSR1 30 /* user defined signal 1 */
|
||||
// #define SIGUSR2 31 /* user defined signal 2 */
|
||||
//
|
||||
// (excerpt from OSX's signal.h - found at:
|
||||
// http://github.com/st3fan/osx-10.9/blob/master/xnu-2422.1.72/bsd/sys/signal.h
|
||||
// pasting here due to how difficult it was to find a signal list for OSX)
|
||||
# define SIG SIGHUP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static Eina_Semaphore _wait_for_bts_sem;
|
||||
|
|
Loading…
Reference in New Issue