Re: Important packages that are broken ia64

Frank Scheiner <[email protected]> Fri, 11 Aug 2023 08:29:55 +0200
Newsgroups gmane.linux.debian.ports.ia64
Message-ID <[email protected]>
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 <[email protected]>
>> 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 <[email protected]>
>>      Reviewed-by: Daniel Kiper <[email protected]>
>>
> 
> 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