This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
XS() __attribute__
[perl5.git] / XSUB.h
diff --git a/XSUB.h b/XSUB.h
index c74d6f6..358a4b7 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -1,7 +1,7 @@
 /*    XSUB.h
  *
  *    Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999,
- *    2000, 2001, 2002, 2003, by Larry Wall and others
+ *    2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -80,10 +80,19 @@ is a lexical $_ in scope.
 
 #define ST(off) PL_stack_base[ax + (off)]
 
+#undef XS
 #if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
 #  define XS(name) __declspec(dllexport) void name(pTHX_ CV* cv)
-#else
-#  define XS(name) void name(pTHX_ CV* cv)
+#endif
+#if defined(SYMBIAN)
+#  define XS(name) EXPORT_C void name(pTHX_ CV* cv)
+#endif
+#ifndef XS
+#  if defined(HASATTRIBUTE)
+#    define XS(name) void name(pTHX_ CV* cv __attribute__((unused)))
+#  else
+#    define XS(name) void name(pTHX_ CV* cv)
+#  endif
 #endif
 
 #define dAX I32 ax = MARK - PL_stack_base + 1
@@ -245,7 +254,7 @@ Rethrows a previously caught exception.  See L<perlguts/"Exception Handling">.
 #  define XS_VERSION_BOOTCHECK \
     STMT_START {                                                       \
        SV *_sv; STRLEN n_a;                                            \
-       char *vn = Nullch, *module = SvPV(ST(0),n_a);                   \
+       const char *vn = Nullch, *module = SvPV(ST(0),n_a);             \
        if (items >= 2)  /* version supplied as bootstrap arg */        \
            _sv = ST(1);                                                \
        else {                                                          \