# New Ticket Created by Lars Balker Rasmussen
# Please include the string: [perl #22924]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=22924 >
On FreeBSD (5), __sighandler_t is typedef'ed as
typedef void __sighandler_t(int);
not the
typedef void (*__sighandler_t)(int);
the parrot signal code expects. This confuses
config/auto/signal/test_1.in, which fails to compile, so FreeBSD
doesn't get HAVE__SIGHANDLER_T defined, leading to conflict in
config/gen/platform/generic.h.
The issue can be resolved by never attempting to typedef
__sighandler_t ourselves, which the following patch does.
--
Lars Balker Rasmussen Consult::Perl
-- attachment 1 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/60601/44851/bcfa7c/signal.patch
Index: config/gen/platform/generic.h
===================================================================
RCS file: /cvs/public/parrot/config/gen/platform/generic.h,v
retrieving revision 1.6
diff -u -a -r1.6 generic.h
--- config/gen/platform/generic.h 11 Jul 2003 11:31:59 -0000 1.6
+++ config/gen/platform/generic.h 12 Jul 2003 13:16:15 -0000
@@ -35,10 +35,12 @@
#ifdef HAS_HEADER_SIGNAL
# undef Parrot_set_sighandler
-# ifndef HAS___SIGHANDLER_T
- typedef void (*__sighandler_t) (int);
-# endif
+# ifdef HAS___SIGHANDLER_T
typedef __sighandler_t Parrot_sighandler_t;
+# else
+ typedef void (*Parrot_sighandler_t) (int);
+# endif
+
Parrot_sighandler_t Parrot_set_sighandler(int s, Parrot_sighandler_t f);
#endif
/*