struct ListHead {
};

#pragma pack(1) // change default alignment
// #pragma pack(pop) // restore default alignment
struct List {
	uint32_t count; // 4bytes @ 0x0
	struct ListElement *head; // 8 bytes @ 0x4: MISALIGNED!!
} __attribute__((__packed, aligned(1))); // changes alignment for this struct

static struct ListElement sHead;
struct List gList = {0, &sHead}; // pointer not aligned at address 0x100001004 (_gList + 4 from ...)