[rtems commit] Add configuration to detect toolset has sigaltstack() prototype
Joel Sherrill
joel at rtems.org
Thu Aug 21 13:33:42 UTC 2014
Module: rtems
Branch: master
Commit: 57871880b203d1225065640dbe8c16aa6d0f3c62
Changeset: http://git.rtems.org/rtems/commit/?id=57871880b203d1225065640dbe8c16aa6d0f3c62
Author: Joel Sherrill <joel.sherrill at oarcorp.com>
Date: Wed Aug 20 18:47:02 2014 -0500
Add configuration to detect toolset has sigaltstack() prototype
---
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;
More information about the vc
mailing list