[PATCH] Add declaration of "kill" for SPU

Corinna Vinschen vinschen@redhat.com
Wed Dec 3 09:30:00 GMT 2014

Hi Ulrich,

On Dec  2 20:12, Ulrich Weigand wrote:
> Hello,
> on the SPU, libgloss implements the kill function, but none of the newlib
> header file provides a prototype for it.  This has been the case forever,
> but as of recent GCC changes it now causes the SPU GCC build to fail.
> This is because libgfortran uses a configure check to test for the presence
> of "kill".  This will succeed since libgloss *does* have kill.  Since the
> test succeeds, libgfortran now attempt to use kill.  But since the function
> is not declared anywhere, this will result in a warning message.  And as
> of a couple of weeks ago, libgfortran has switched to using -Werror, so
> this causes the whole build to abort.
> There are already two prototypes of kill in newlib header files, but both
> are not active on SPU.  The one is in libc/sys/linux/sys/signal.h, which
> isn't applicable on SPU anyway, and the other is in libc/include/sys/signal.h
> under a #if defined(__CYGWIN__) || defined(__rtems__) block.
> It does not really make sense to enable that whole block for SPU, since
> it would enable a whole bunch of other functions that are in fact not
> available on the SPU.
> The patch below simply adds a new prototype for kill, for use simply
> on SPU.  This fixes the GCC build breakage for me.

What about this instead.  It's pretty much what we do in other headers,
e.g. sys/unistd.h.  Does that work for you?

Index: libc/include/sys/signal.h
RCS file: /cvs/src/src/newlib/libc/include/sys/signal.h,v
retrieving revision 1.24
diff -u -p -r1.24 signal.h
--- libc/include/sys/signal.h	18 Aug 2014 18:18:10 -0000	1.24
+++ libc/include/sys/signal.h	3 Dec 2014 09:28:48 -0000
@@ -179,8 +178,12 @@ int _EXFUN(pthread_sigmask, (int how, co
 int _EXFUN(_kill, (pid_t, int));
+#endif /* _COMPILING_NEWLIB */
+#endif /* __CYGWIN__ || __rtems__ */
+#if defined(__CYGWIN__) || defined(__rtems__) || defined(__SPU__)
 int _EXFUN(kill, (pid_t, int));
+#endif /* __CYGWIN__ || __rtems__ || __SPU__ */
+#if defined(__CYGWIN__) || defined(__rtems__)
 int _EXFUN(killpg, (pid_t, int));
 int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
 int _EXFUN(sigaddset, (sigset_t *, const int));


Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20141203/d407f54f/attachment.sig>

More information about the Newlib mailing list