aboutsummaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog9
-rw-r--r--newlib/libc/include/signal.h14
-rw-r--r--newlib/libc/include/sys/signal.h8
-rw-r--r--newlib/libc/sys/linux/sys/signal.h3
4 files changed, 20 insertions, 14 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index febadda..c7dddf9 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,12 @@
+2002-07-24 Jeff Johnston <jjohnstn@redhat.com>
+
+ * libc/include/signal.h (SIG_IGN, SIG_DFL, SIG_ERR): Change
+ to use _sig_func_ptr type casted constants.
+ (_sig_func_ptr): Typedef moved to sys/signal.h.
+ * libc/include/sys/signal.h (_sig_func_ptr): Typedef added.
+ For __rtems, use POSIX definition, otherwise default to ANSI.
+ * libc/sys/linux/sys/signal.h (_sig_func_ptr): Typedef added.
+
2002-07-24 Stephane Carrez <stcarrez@nerim.fr>
* configure.host: Recognize m6811-elf and m6812-elf targets.
diff --git a/newlib/libc/include/signal.h b/newlib/libc/include/signal.h
index e1170a2..1b3b57b 100644
--- a/newlib/libc/include/signal.h
+++ b/newlib/libc/include/signal.h
@@ -8,17 +8,9 @@ _BEGIN_STD_C
typedef int sig_atomic_t; /* Atomic entity type (ANSI) */
-#if defined(__STDC__) || defined(__cplusplus)
-#define SIG_DFL ((void (*)(int))0) /* Default action */
-#define SIG_IGN ((void (*)(int))1) /* Ignore action */
-#define SIG_ERR ((void (*)(int))-1) /* Error return */
-#else
-#define SIG_DFL ((void (*)())0) /* Default action */
-#define SIG_IGN ((void (*)())1) /* Ignore action */
-#define SIG_ERR ((void (*)())-1) /* Error return */
-#endif
-
-typedef void (*_sig_func_ptr) (int);
+#define SIG_DFL ((_sig_func_ptr)0) /* Default action */
+#define SIG_IGN ((_sig_func_ptr)1) /* Ignore action */
+#define SIG_ERR ((_sig_func_ptr)-1) /* Error return */
struct _reent;
diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h
index 11d370a..dde3aaa 100644
--- a/newlib/libc/include/sys/signal.h
+++ b/newlib/libc/include/sys/signal.h
@@ -84,13 +84,15 @@ typedef struct {
* application should not use both simultaneously.
*/
+typedef void (*_sig_func_ptr)();
+
struct sigaction {
int sa_flags; /* Special flags to affect behavior of signal */
sigset_t sa_mask; /* Additional set of signals to be blocked */
/* during execution of signal-catching */
/* function. */
union {
- void (*_handler)(); /* SIG_DFL, SIG_IGN, or pointer to a function */
+ _sig_func_ptr _handler; /* SIG_DFL, SIG_IGN, or pointer to a function */
#if defined(_POSIX_REALTIME_SIGNALS)
void (*_sigaction)( int, siginfo_t *, void * );
#endif
@@ -104,9 +106,11 @@ struct sigaction {
#else
+typedef void (*_sig_func_ptr)(int);
+
struct sigaction
{
- void (*sa_handler)(int);
+ _sig_func_ptr sa_handler;
sigset_t sa_mask;
int sa_flags;
};
diff --git a/newlib/libc/sys/linux/sys/signal.h b/newlib/libc/sys/linux/sys/signal.h
index edbec6f..cef7058 100644
--- a/newlib/libc/sys/linux/sys/signal.h
+++ b/newlib/libc/sys/linux/sys/signal.h
@@ -19,7 +19,8 @@
#undef sigset_t
#define sigset_t __sigset_t
-typedef void (*__sighandler_t) (int);
+typedef void (*_sig_func_ptr) (int);
+typedef _sig_func_ptr __sighandler_t;
#include <bits/siginfo.h>
#include <bits/sigaction.h>