On 01/07/19 20:22, Leif Lindholm wrote: > On Mon, Jan 07, 2019 at 07:29:47PM +0100, Laszlo Ersek wrote:
>> The UEFI spec (v2.7) explicitly requires EFI_GUID to be 64-bit aligned, >> unless specified otherwise. See in "Table 5. Common UEFI Data Types": >> >> EFI_GUID -- 128-bit buffer containing a unique identifier value. >> Unless otherwise specified, aligned on a 64-bit >> boundary. > > Indeed. > >> Whether edk2 satisfies that, and if so, how (by chance / by general >> build flags), I don't know. The code says, >> >> /// >> /// 128 bit buffer containing a unique identifier value. >> /// Unless otherwise specified, aligned on a 64 bit boundary. >> /// >> typedef struct { >> UINT32 Data1; >> UINT16 Data2; >> UINT16 Data3; >> UINT8 Data4[8]; >> } GUID; >> >> I think there may have been an expectation in "MdePkg/Include/Base.h" >> that the supported compilers would automatically ensure the specified >> alignment, given the structure definition. > > But that would be expecting things not only not guaranteed by C, but > something there is no semantic information suggesting would be useful > for the compiler to do above. [...] Agreed. I'm not saying the edk2 code is right, just guessing why the code might look like it does. This would not be the first silent assumption, I think. Anyhow, I think it would be better to change the code than the spec. Thanks, Laszlo _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel