aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/u.h17
-rw-r--r--src/lib9/notify.c2
-rw-r--r--src/libthread/daemonize.c7
3 files changed, 20 insertions, 6 deletions
diff --git a/include/u.h b/include/u.h
index b9f07c40..8e889e63 100644
--- a/include/u.h
+++ b/include/u.h
@@ -72,8 +72,15 @@ typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)];
# include <sys/types.h>
# include <pthread.h>
# define PLAN9PORT_USING_PTHREADS 1
-# undef _NEEDUSHORT
-# undef _NEEDUINT
+# if __GNUC__ < 4
+# undef _NEEDUSHORT
+# undef _NEEDUINT
+# endif
+# undef _ANSI_SOURCE
+# undef _POSIX_C_SOURCE
+# if !defined(NSIG)
+# define NSIG 32
+# endif
# define _NEEDLL 1
#elif defined(__NetBSD__)
# include <sched.h>
@@ -131,10 +138,10 @@ typedef short s16int;
#define AUTOLIB(x) static int __p9l_autolib_ ## x = 1;
/*
- * Gcc 3 is too smart for its own good.
+ * Gcc is too smart for its own good.
*/
-#if defined(__GNUC__) && !defined(__APPLE_CC__)
-# if __GNUC__ >= 3
+#if defined(__GNUC__)
+# if __GNUC__ >= 4 || (__GNUC__==3 && !defined(__APPLE_CC__))
# undef AUTOLIB
# define AUTOLIB(x) int __p9l_autolib_ ## x __attribute__ ((weak));
# else
diff --git a/src/lib9/notify.c b/src/lib9/notify.c
index 9c8012cf..2a562b62 100644
--- a/src/lib9/notify.c
+++ b/src/lib9/notify.c
@@ -66,7 +66,9 @@ static Sig sigs[] = {
SIGVTALRM, 0,
SIGUSR1, 0,
SIGUSR2, 0,
+#ifdef SIGWINCH
SIGWINCH, Restart|Ignore,
+#endif
#ifdef SIGINFO
SIGINFO, Restart|Ignore,
#endif
diff --git a/src/libthread/daemonize.c b/src/libthread/daemonize.c
index a551efaf..e047ab02 100644
--- a/src/libthread/daemonize.c
+++ b/src/libthread/daemonize.c
@@ -74,7 +74,12 @@ static int sigs[] =
SIGALRM, SIGTERM, SIGCHLD, SIGSTOP,
/*SIGTSTP, SIGTTIN, SIGTTOU,*/ SIGURG,
SIGXCPU, SIGXFSZ, SIGVTALRM, SIGPROF,
- SIGWINCH, SIGIO,
+#ifdef SIGWINCH
+ SIGWINCH,
+#endif
+#ifdef SIGIO
+ SIGIO,
+#endif
#ifdef SIGEMT
SIGEMT,
#endif