This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[PATCH] Fix d_u32align probe on ARM
authorH.Merijn Brand <h.m.brand@xs4all.nl>
Wed, 23 Jun 2010 14:34:04 +0000 (16:34 +0200)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Wed, 23 Jun 2010 14:34:04 +0000 (16:34 +0200)
From: Marc Pignat <marc@pignat.org>
Date: Wed, 23 Jun 2010 15:38:37 +0200

My proposed solution is to use the 'volatile' keyword to make sure the
compiler will really do the job.

Please note that it does not work with -O3, but the configure script
compile with -O2, so this should be fine.

At this time I've only tested the Configure scripts, which now detects
the align problem on ARM. I'm compiling the whole thing to check if the
md5 bug goes away!

I hope this will fix this *5 years* old bug, and the upstream bug as
well!

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
Configure

index 60eac75..4217f8c 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -30,7 +30,7 @@
 
 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
 #
-# Generated on Fri May 21 07:59:07 CEST 2010 [metaconfig 3.5 PL0]
+# Generated on Wed Jun 23 16:03:55 CEST 2010 [metaconfig 3.5 PL0]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -18605,8 +18605,8 @@ $signal_t bletch(int s) { exit(4); }
 #endif
 int main() {
 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
-    U8 buf[8];
-    U32 *up;
+    volatile U8 buf[8];
+    volatile U32 *up;
     int i;
 
     if (sizeof(U32) != 4) {