# 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 /*