Hi Pedro,

On 10.08.23 19:31, Frank Scheiner wrote:
Hi Pedro, all,

On 10.08.23 14:04, Pedro Miguel Justo wrote:
Here it is:

06edd40db76bb78457ac26156ed5f7b62381bbe8 is the first bad commit
commit 06edd40db76bb78457ac26156ed5f7b62381bbe8
Author: Oliver Steffen <ostef...@redhat.com>
Date:   Fri May 26 13:35:43 2023 +0200

     guid: Unify GUID types

     There are 3 implementations of a GUID in GRUB. Replace them with
     a common one, placed in types.h.

     It uses the "packed" flavor of the GUID structs, the alignment attribute
     is dropped, since it is not required.

     Signed-off-by: Oliver Steffen <ostef...@redhat.com>
     Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>


I had a quick look into this and the ia64 "related" part ([1]) switches
from an `__attribute__ ((aligned(8)))` struct "grub_efi_guid_t" to an
`__attribute__ ((packed))` struct "grub_guid_t" (see [2], [3] and
below), which might not work as expected on ia64.

Damn it, I should have read the commit message instead of the code changes. It tells the - maybe - important thing already.

Unfortunately there's no info in [4] (where this was introduced) about why exactly the aligment was intended in the first place.

[4]: https://git.savannah.gnu.org/cgit/grub.git/commit/?id=837091258d7e9f4af3cc333ec775271f1b767d11

Linux actually uses a minimum alignment of 32 bits, see for example [5].

[5]: https://github.com/torvalds/linux/blob/master/include/linux/efi.h#L60-L78

@Pedro:
Does it work again with `__attribute__ ((aligned(8)))` instead of `__attribute__ ((packed))` for "grub_guid"?

Cheers,
Frank

Reply via email to