On Tue, Jul 31, 2012 at 7:35 PM, Aurelien Jarno <[email protected]> wrote: >> There are a few other cases like this. For example, ALIGN2 >> is also used in definitions but not declarations. I'm not >> sure it all is worth fixing - to my taste this whole construct >> is just too fragile, and having in mind gcc does not tell us >> the difference (it must, IMHO), it makes even more fragile. >> >> In debian we fixed it by #defining ALIGN* to be empty on s390(x). >> > > Interestingly enough doing so make the resulting binary smaller on > s390x.
Some arches have difficulty working with non-word aligned data. platform.h even says what is desirable here: /* Useful for defeating gcc's alignment of "char message[]"-like data */ #if 1 /* if needed: !defined(arch1) && !defined(arch2) */ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # define ALIGN1 __attribute__((aligned(1))) # define ALIGN2 __attribute__((aligned(2))) # define ALIGN4 __attribute__((aligned(4))) #else /* Arches which MUST have 2 or 4 byte alignment for everything are here */ # define ALIGN1 # define ALIGN2 # define ALIGN4 #endif So, can you please tell me what "!defined(arch)" statements you used to exclude s390[x]? -- vda _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
