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

Reply via email to