Bill Davidsen wrote:
Paul Clements wrote:

Neil Brown wrote:


I am pleased to announce the availability of
   mdadm version 2.5.1

and here's another patch for a compile error on ppc...

Since ppc is big endian, the compiler is complaining because it can't determine whether the isuper post-increment (++) is actually going to be evaluated (__le32_to_cpu is a macro). On x86 the macro is a no-op, so I guess the compiler is smart enough to figure out that the post-increment is actually happening?

Here's the warning (gcc 3.2.3):

$ make
gcc -Wall -Werror -Wstrict-prototypes -ggdb -DSendmail=\""/usr/sbin/sendmail -t"\" -DCONFFILE=\"/etc/mdadm.conf\" -DCONFFILE2=\"/etc/mdadm/mdadm.conf\" -c -o super1.o super1.c
cc1: warnings being treated as errors
super1.c: In function `calc_sb_1_csum':
super1.c:128: warning: operation on `isuper' may be undefined
super1.c:128: warning: operation on `isuper' may be undefined
super1.c:128: warning: operation on `isuper' may be undefined
make: *** [super1.o] Error 1


Thanks,
Paul
--- super1.c    2006-06-19 05:17:36.000000000 -0400
+++ /export/public/clemep/tmp/super1-ppc-compile-error.c        2006-06-19 
00:40:26.000000000 -0400
@@ -124,8 +124,11 @@ static unsigned int calc_sb_1_csum(struc
        disk_csum = sb->sb_csum;
        sb->sb_csum = 0;
        newcsum = 0;
-       for (i=0; size>=4; size -= 4 )
-               newcsum += __le32_to_cpu(*isuper++);
+       for (i=0; size>=4; size -= 4 ) {
+               unsigned int *x = isuper;
+               newcsum += __le32_to_cpu(*x);
+               x++;
+       }
 
        if (size == 2)
                newcsum += __le16_to_cpu(*(unsigned short*) isuper);

Reply via email to