PATCH, boehm-gc: silence os_dep.c warnings
Ben Elliston <[email protected]>
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <1259289740.16929.4.camel@bapbop> |
GNU/Linux systems warn about the BSD signal functions like sigsetmask: warning: ‘sigsetmask’ is deprecated (declared at /usr/include/signal.h:199) This patch rearranges some of the code in boehm-gc/os_dep.c so that modern systems providing the POSIX signals API are used in preference to the BSD API. This is important on systems like GNU/Linux where both APIs are provided. As autoconf tests are not used in boehm-gc, I have followed the style of tests already used in this file. Bootstrapping is underway on x86_64-linux-gnu. Okay for the trunk? Ben 2009-11-27 Ben Elliston <[email protected]> * os_dep.c: Use the POSIX signal API in preference to the BSD API. Generate a compilation error if neither the POSIX nor BSD APIs can be detected. Index: os_dep.c =================================================================== --- os_dep.c (revision 154694) +++ os_dep.c (working copy) @@ -501,7 +501,13 @@ void GC_enable_signals(void) && !defined(MACOS) && !defined(DJGPP) && !defined(DOS4GW) \ && !defined(NOSYS) && !defined(ECOS) -# if defined(sigmask) && !defined(UTS4) && !defined(HURD) +# if defined(SIG_BLOCK) + /* Use POSIX/SYSV interface */ +# define SIGSET_T sigset_t +# define SIG_DEL(set, signal) sigdelset(&(set), (signal)) +# define SIG_FILL(set) sigfillset(&set) +# define SIGSETMASK(old, new) sigprocmask(SIG_SETMASK, &(new), &(old)) +# elif defined(sigmask) && !defined(UTS4) && !defined(HURD) /* Use the traditional BSD interface */ # define SIGSET_T int # define SIG_DEL(set, signal) (set) &= ~(sigmask(signal)) @@ -511,11 +517,7 @@ void GC_enable_signals(void) /* a signal 32. */ # define SIGSETMASK(old, new) (old) = sigsetmask(new) # else - /* Use POSIX/SYSV interface */ -# define SIGSET_T sigset_t -# define SIG_DEL(set, signal) sigdelset(&(set), (signal)) -# define SIG_FILL(set) sigfillset(&set) -# define SIGSETMASK(old, new) sigprocmask(SIG_SETMASK, &(new), &(old)) +# error undetectable signal API # endif