With the recent addition of a prototype for sigaltstack() and associated data structures to newlib, the declaration in rtems_bsdnet_internal.h is no longer needed. But to ease the transition, I added an autoconf probe to determine if it was needed or not.
After 4.11, I would like to rip this and and <sys/cpuset.h> checks out. --- cpukit/configure.ac | 12 ++++++++++++ cpukit/libnetworking/rtems/rtems_bsdnet_internal.h | 10 ++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/cpukit/configure.ac b/cpukit/configure.ac index 56815e2..fcf3437 100644 --- a/cpukit/configure.ac +++ b/cpukit/configure.ac @@ -116,6 +116,12 @@ RTEMS_CHECK_FUNC([pthread_getattr_np],[ #include <pthread.h>]) AC_CHECK_HEADERS([sys/cpuset.h]) +# This was added to newlib in August 2014 to improve conformance. +# Disable use of internal definition if it is present. +RTEMS_CHECK_FUNC([sigaltstack],[ + #define _GNU_SOURCE + #include <signal.h>]) + # Mandated by POSIX, not declared in some versions of newlib. AC_CHECK_DECLS([getrusage],,,[#include sys/resource.h]) @@ -236,6 +242,12 @@ RTEMS_CPUOPT([__RTEMS_HAVE_SYS_CPUSET_H__], [1], [indicate if <sys/cpuset.h> is present in toolset]) +## Header file differences that need to be known in .h after install +RTEMS_CPUOPT([__RTEMS_HAVE_DECL_SIGALTSTACK__], + [test x"${ac_cv_have_decl_sigaltstack}" = x"yes"], + [1], + [indicate if <signal.h> in toolset has sigaltstack()]) + ## This improves both the size and coverage analysis. RTEMS_CPUOPT([__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__], [test x"${RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH}" = x"1"], diff --git a/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h b/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h index 05e54b2..567cc8a 100644 --- a/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h +++ b/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h @@ -83,11 +83,13 @@ typedef quad_t * qaddr_t; typedef void __sighandler_t(int); typedef __sighandler_t *sig_t; /* type of pointer to a signal function */ #define NSIG 32 -struct sigaltstack { - char *ss_sp; /* signal stack base */ - int ss_size; /* signal stack length */ - int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ +#if (__RTEMS_HAVE_DECL_SIGALTSTACK__ == 0) +struct sigaltstack { + char *ss_sp; /* signal stack base */ + int ss_size; /* signal stack length */ + int ss_flags; /* SS_DISABLE and/or SS_ONSTACK */ }; +#endif #ifdef _KERNEL typedef int boolean_t; -- 1.9.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel