All of lore.kernel.org
 help / color / mirror / Atom feed
* ./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned]
@ 2018-03-21  7:31 Paul Menzel
  2018-03-21  9:44 ` [PATCH] Fix packed-not-aligned error on GCC 8 Michael Chang
  0 siblings, 1 reply; 7+ messages in thread
From: Paul Menzel @ 2018-03-21  7:31 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 2132 bytes --]

Dear GRUB folks,


Building GRUB’s master branch with GCC 8 shows the error below.

```
$ gcc-8 --version | head -1
gcc-8 (Debian 8-20180320-1) 8.0.1 20180320 (experimental) [trunk revision 258670]

$ git log --oneline -1
e2faabacf ieee1275: split up grub_machine_get_bootlocation
$ ./autogen.sh
$ ./configure --with-platform=coreboot --enable-boot-time CC=gcc-8
$ make
[…]
gcc-8 -DHAVE_CONFIG_H -I.  -Wall -W -DGRUB_UTIL=1 -D_FILE_OFFSET_BITS=64 -I./include -DGRUB_FILE=\"grub-core/disk/ldm.c\" -I. -I. -I. -I. -I./include -I./include -I./grub-core/lib/libgcrypt-grub/src/  -I./grub-core/gnulib -I./grub-core/gnulib -D_FILE_OFFSET_BITS=64 -Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value  -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes -Wcast-align  -Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2 -Werror  -Wno-undef -Wno-sign-compare -Wno-unused -Wno-unused-parameter -Wno-redundant-decls -Wno-unreachable-code -Wno-conversion  -MT grub-core/disk/libgrubkern_a-ldm.o -MD -MP -MF grub-core/disk/.deps-util/libgrubkern_a-ldm.Tpo -c -o grub-core/disk/libgrubkern_a-ldm.o `test -f 'grub-core/disk/ldm.c' || echo './'`grub-core/disk/ldm.c
In file included from grub-core/disk/ldm.c:26:
./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned]
 } GRUB_PACKED;
 ^
```


Thanks,

Paul

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-21  7:31 ./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned] Paul Menzel
@ 2018-03-21  9:44 ` Michael Chang
  2018-03-22 14:09   ` Daniel Kiper
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Chang @ 2018-03-21  9:44 UTC (permalink / raw)
  To: The development of GNU GRUB

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



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-21  9:44 ` [PATCH] Fix packed-not-aligned error on GCC 8 Michael Chang
@ 2018-03-22 14:09   ` Daniel Kiper
  2018-03-26  8:52     ` Michael Chang
  0 siblings, 1 reply; 7+ messages in thread
From: Daniel Kiper @ 2018-03-22 14:09 UTC (permalink / raw)
  To: paulepanter, mchang; +Cc: grub-devel

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
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-22 14:09   ` Daniel Kiper
@ 2018-03-26  8:52     ` Michael Chang
  2018-03-26 14:28       ` Daniel Kiper
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Chang @ 2018-03-26  8:52 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: paulepanter, Daniel Kiper

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. :)

Signed-off-by: Michael Chang <mchang@suse.com>
Tested-by: Michael Chang <mchang@suse.com>

---
 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



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-26  8:52     ` Michael Chang
@ 2018-03-26 14:28       ` Daniel Kiper
  2018-03-28  4:59         ` Michael Chang
  0 siblings, 1 reply; 7+ messages in thread
From: Daniel Kiper @ 2018-03-26 14:28 UTC (permalink / raw)
  To: mchang, paulepanter, Daniel Kiper; +Cc: grub-devel

On Mon, Mar 26, 2018 at 04:52:34PM +0800, Michael Chang wrote:
> 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

s/tries to fix/fixes/?

> 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. :)
>
> Signed-off-by: Michael Chang <mchang@suse.com>
> Tested-by: Michael Chang <mchang@suse.com>

Otherwise, Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>

If there are no objections I will apply this in a week or so.

Daniel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-26 14:28       ` Daniel Kiper
@ 2018-03-28  4:59         ` Michael Chang
  2018-03-31 20:38           ` Paul Menzel
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Chang @ 2018-03-28  4:59 UTC (permalink / raw)
  To: grub-devel

On Mon, Mar 26, 2018 at 04:28:20PM +0200, Daniel Kiper wrote:
> On Mon, Mar 26, 2018 at 04:52:34PM +0800, Michael Chang wrote:
> > 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
> 
> s/tries to fix/fixes/?

Yes. I think the patch is adequate to say so.  

> 
> > 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. :)
> >
> > Signed-off-by: Michael Chang <mchang@suse.com>
> > Tested-by: Michael Chang <mchang@suse.com>
> 
> Otherwise, Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
> 
> If there are no objections I will apply this in a week or so.

Thank you very much. :)

Regards,
Michael

> 
> Daniel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] Fix packed-not-aligned error on GCC 8
  2018-03-28  4:59         ` Michael Chang
@ 2018-03-31 20:38           ` Paul Menzel
  0 siblings, 0 replies; 7+ messages in thread
From: Paul Menzel @ 2018-03-31 20:38 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 1564 bytes --]

Dear Michael, dear Daniel,


Thank you for the fix.

Am Mittwoch, den 28.03.2018, 12:59 +0800 schrieb Michael Chang:
> On Mon, Mar 26, 2018 at 04:28:20PM +0200, Daniel Kiper wrote:
> > On Mon, Mar 26, 2018 at 04:52:34PM +0800, Michael Chang wrote:
> > > 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
> > 
> > s/tries to fix/fixes/?
> 
> Yes. I think the patch is adequate to say so.  

I also think, *fixes* sounds better. Maybe Daniel can amend that.

> > > 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. :)
> > > 
> > > Signed-off-by: Michael Chang <mchang@suse.com>
> > > Tested-by: Michael Chang <mchang@suse.com>
> > 
> > Otherwise, Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
> > 
> > If there are no objections I will apply this in a week or so.
> 
> Thank you very much. :)

Tested-by: Paul Menzel <paulepanter@users.sourceforge.net>


Thanks,

Paul

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-03-31 20:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-21  7:31 ./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned] Paul Menzel
2018-03-21  9:44 ` [PATCH] Fix packed-not-aligned error on GCC 8 Michael Chang
2018-03-22 14:09   ` Daniel Kiper
2018-03-26  8:52     ` Michael Chang
2018-03-26 14:28       ` Daniel Kiper
2018-03-28  4:59         ` Michael Chang
2018-03-31 20:38           ` Paul Menzel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.