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

Reply via email to