use strict;
use warnings;
-our $VERSION = '2.37'; # remember to update version in POD!
+our $VERSION = '2.38'; # remember to update version in POD!
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
=head1 VERSION
-This document describes threads version 2.37
+This document describes threads version 2.38
=head1 WARNING
#define PERL_PARSE_ERROR_COUNT(f) (f)
+
+/* Work around
+
+ https://github.com/Perl/perl5/issues/21313
+
+ Where gcc when generating code for 32-bit windows assumes the stack
+ is 16 byte aligned, where the system doesn't guarantee that.
+
+ The code generated by gcc itself does maintain 16 byte alignment,
+ but callbacks from the CRT or Windows APIs don't, so calls to
+ code that is generated to SSE instructions (like the quadmath code
+ by default), crashes when called from a callback.
+
+ Since other code other than quadmath might use SSE instructions,
+ also enable this outside of quadmath builds.
+
+ This change is a little risky: if an XS module uses callbacks
+ and those callbacks may also produce alignment errors, if that
+ becomes a problem we'll need to use the nuclear option: building
+ 32-bit perl with -mstackrealign.
+*/
+#if defined(WIN32) && !defined(WIN64) && defined(__GNUC__)
+# define PERL_STACK_REALIGN __attribute__((force_align_arg_pointer))
+#else
+# define PERL_STACK_REALIGN
+#endif
+
/*
(KEEP THIS LAST IN perl.h!)