For this code :
struct S { unsigned char ch[2]; };
int main(void)
{
_Static_assert( sizeof(struct S) == 2, "size was not 2");
}
using GCC (various versions) for ARM with ABI apcs-gnu(aka. OABI, or EABI version 0), I get the statement to fail. It turns out the size of the structure 4.
I can get around this using __attribute__((packed)); but my questions are:
- What is the point of creating this structure size
4? - Is there any documentation that defines the location of structures in this ABI?
On the ARM website, I found documentation for aapcs(EABI version 5) that indicates that this structure is 2; but I couldn’t find anything about apcs-gnu.
source
share