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 <merijn@nb09.procura.nl>
Wed, 23 Jun 2010 14:30:29 +0000 (16:30 +0200)
committerH.Merijn Brand <merijn@nb09.procura.nl>
Wed, 23 Jun 2010 14:30:29 +0000 (16:30 +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 <merijn@nb09.procura.nl>
U/perl/d_u32align.U

index c55562b..4ab6be8 100644 (file)
@@ -45,8 +45,8 @@ $signal_t bletch(int s) { exit(4); }
 #endif
 int main() {
 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
 #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) {
     int i;
 
     if (sizeof(U32) != 4) {