grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix packed-not-aligned error on GCC 8


From: Daniel Kiper
Subject: Re: [PATCH] Fix packed-not-aligned error on GCC 8
Date: Thu, 22 Mar 2018 15:09:05 +0100
User-agent: Mutt/1.3.28i

Hi,

Paul, does this patch work for you?

Michael, if it does please repost with your SOB and Tested-by: lines.

Daniel

On Wed, Mar 21, 2018 at 05:44:47PM +0800, Michael Chang wrote:
> Here just came up with a patch that fixed the GCC 8 error for me. :) Would you
> test it work for you as well ?
>
> Thanks,
> Michael
>
> --
>
> When building with GCC 8, there are several errors regarding 
> packed-not-aligned.
>
> ./include/grub/gpt_partition.h:79:1: error: alignment 1 of ???struct 
> grub_gpt_partentry??? is less than 8 [-Werror=packed-not-aligned]
>
> This patch tries to fix the build error by cleaning up the ambiguity of 
> placing
> aligned structure in a packed one. In "struct grub_btrfs_time" and "struct
> grub_gpt_part_type", the aligned attribute seems to be superfluous, and also
> has to be packed, to ensure the structure is bit-to-bit mapped to the format
> laid on disk. I think we could blame to copy and paste error here for the
> mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as
> the name suggests. :)
>
> ---
>  grub-core/fs/btrfs.c          | 2 +-
>  include/grub/efiemu/runtime.h | 2 +-
>  include/grub/gpt_partition.h  | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
> index 4849c1ceb..be195448d 100644
> --- a/grub-core/fs/btrfs.c
> +++ b/grub-core/fs/btrfs.c
> @@ -175,7 +175,7 @@ struct grub_btrfs_time
>  {
>    grub_int64_t sec;
>    grub_uint32_t nanosec;
> -} __attribute__ ((aligned (4)));
> +} GRUB_PACKED;
>
>  struct grub_btrfs_inode
>  {
> diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
> index 9b6b729f4..36d2dedf4 100644
> --- a/include/grub/efiemu/runtime.h
> +++ b/include/grub/efiemu/runtime.h
> @@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel
>
>  struct efi_variable
>  {
> -  grub_efi_guid_t guid;
> +  grub_efi_packed_guid_t guid;
>    grub_uint32_t namelen;
>    grub_uint32_t size;
>    grub_efi_uint32_t attributes;
> diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
> index 1b32f6725..9668a68c3 100644
> --- a/include/grub/gpt_partition.h
> +++ b/include/grub/gpt_partition.h
> @@ -28,7 +28,7 @@ struct grub_gpt_part_type
>    grub_uint16_t data2;
>    grub_uint16_t data3;
>    grub_uint8_t data4[8];
> -} __attribute__ ((aligned(8)));
> +} GRUB_PACKED;
>  typedef struct grub_gpt_part_type grub_gpt_part_type_t;
>
>  #define GRUB_GPT_PARTITION_TYPE_EMPTY \
> --
> 2.13.6
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]