$NetBSD: patch-aq,v 1.4 2012/10/03 19:59:47 adam Exp $

--- XSUB.h.orig	2012-08-03 17:35:26.000000000 +0000
+++ XSUB.h
@@ -102,6 +102,9 @@ is a lexical $_ in scope.
 #ifndef PERL_UNUSED_VAR
 #  define PERL_UNUSED_VAR(x) ((void)x)
 #endif
+#ifndef PERL_UNUSED_DECL
+#  define PERL_UNUSED_DECL
+#endif
 
 #define ST(off) PL_stack_base[ax + (off)]
 
@@ -137,18 +140,7 @@ is a lexical $_ in scope.
 #  define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
 #endif
 #ifndef XS_EXTERNAL
-#  if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
-#    define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
-#    define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
-#  else
-#    ifdef __cplusplus
-#      define XS_EXTERNAL(name) extern "C" XSPROTO(name)
-#      define XS_INTERNAL(name) static XSPROTO(name)
-#    else
-#      define XS_EXTERNAL(name) XSPROTO(name)
-#      define XS_INTERNAL(name) STATIC XSPROTO(name)
-#    endif
-#  endif
+#  define XS_EXTERNAL(name) void name(pTHX_ CV* cv PERL_UNUSED_DECL)
 #endif
 
 /* We do export xsub symbols by default for the public XS macro.
