This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [patch] coff: fix alignment issues when building on ARM
>>>>> "H" == H J Lu <hjl@lucon.org> writes:
>>--- binutils-h8300-hms-2.16.1.orig/include/coff/external.h
>>+++ binutils-h8300-hms-2.16.1/include/coff/external.h
>>@@ -50,7 +50,7 @@
>> char entry[4]; /* entry pt. */
>> char text_start[4]; /* base of text used for this file */
>> char data_start[4]; /* base of data used for this file */
>>- }
>>+ } __attribute__((packed))
>> AOUTHDR;
H> All fields are char []. Why is __attribute__((packed)) needed?
Perhaps because some compilers pad even when they would not be
expected to do so?
It's unusual, but apparently legal, to align fields to boundaries
larger than their size (or the array element size). I remember an
Intel i680 compiler (derived from GCC) that did this, much to the
surprise of people defining packet format layouts via structs.
paul