The UEFI spec says:
Structures are aligned on boundaries equal to the largest internal
datum of the structure and internal data are implicitly padded to
achieve natural alignment.
Unlike the old Intel EFI toolkit, the EDK2 headers expect ia32 builds to
use -malign-double to achive this.
Make EFI versions of libsa32, liblua32, and ficl32. With the difference
being that they are compiled with -malign-double.