Disable address-of-packed-member warnings with gcc9 gcc9 has turned this warning into error when -Werror is used, lets paper it over by turning it into a warning for now Fixes error: taking address of packed member of 'struct head' may result in an unaligned pointer value [-Werror=address-of-packed-member] Upstream-Status: Pending Signed-off-by: Khem Raj --- a/grub-core/commands/lsacpi.c +++ b/grub-core/commands/lsacpi.c @@ -26,6 +26,9 @@ #include #pragma GCC diagnostic ignored "-Wcast-align" +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif GRUB_MOD_LICENSE ("GPLv3+"); --- a/grub-core/commands/lspci.c +++ b/grub-core/commands/lspci.c @@ -26,6 +26,9 @@ GRUB_MOD_LICENSE ("GPLv3+"); +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif struct grub_pci_classname { int class; @@ -171,7 +174,7 @@ grub_lspci_iter (grub_pci_device_t dev, if (space == 0) continue; - + switch (space & GRUB_PCI_ADDR_SPACE_MASK) { case GRUB_PCI_ADDR_SPACE_IO: @@ -195,13 +198,13 @@ grub_lspci_iter (grub_pci_device_t dev, (space & GRUB_PCI_ADDR_MEM_MASK), space & GRUB_PCI_ADDR_MEM_PREFETCH ? "prefetchable" : "non-prefetchable"); - + } else grub_printf ("\t32-bit memory space %d at 0x%016llx [%s]\n", (unsigned) ((reg - GRUB_PCI_REG_ADDRESSES) / sizeof (grub_uint32_t)) - 1, - (unsigned long long) + (unsigned long long) (space & GRUB_PCI_ADDR_MEM_MASK), space & GRUB_PCI_ADDR_MEM_PREFETCH ? "prefetchable" : "non-prefetchable"); --- a/grub-core/fs/cpio_common.c +++ b/grub-core/fs/cpio_common.c @@ -26,7 +26,9 @@ #include GRUB_MOD_LICENSE ("GPLv3+"); - +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif struct grub_archelp_data { grub_disk_t disk; @@ -108,7 +110,7 @@ grub_cpio_get_link_target (struct grub_a if (!ret) return NULL; - err = grub_disk_read (data->disk, 0, data->dofs, data->size, + err = grub_disk_read (data->disk, 0, data->dofs, data->size, ret); if (err) { --- a/grub-core/fs/hfs.c +++ b/grub-core/fs/hfs.c @@ -32,6 +32,9 @@ #include GRUB_MOD_LICENSE ("GPLv3+"); +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif #define GRUB_HFS_SBLOCK 2 #define GRUB_HFS_EMBED_HFSPLUS_SIG 0x482B @@ -882,7 +885,7 @@ grub_hfs_iterate_dir_it_dir (struct grub { struct grub_hfs_catalog_key *ckey = rec->key; struct grub_hfs_iterate_dir_node_found_ctx *ctx = hook_arg; - + /* Stop when the entries do not match anymore. */ if (ckey->parent_dir != ctx->dir_be) return 1; @@ -1076,7 +1079,7 @@ macroman_to_utf8 (char *to, const grub_u { *optr++ = ':'; continue; - } + } if (!(*iptr & 0x80)) { *optr++ = *iptr; @@ -1093,7 +1096,7 @@ utf8_to_macroman (grub_uint8_t *to, cons grub_uint8_t *end = to + 31; grub_uint8_t *optr = to; const char *iptr = from; - + while (*iptr && optr < end) { int i, clen; @@ -1103,7 +1106,7 @@ utf8_to_macroman (grub_uint8_t *to, cons *optr++ = '/'; iptr++; continue; - } + } if (!(*iptr & 0x80)) { *optr++ = *iptr++; @@ -1164,7 +1167,7 @@ lookup_file (grub_fshelp_node_t dir, *foundnode = grub_malloc (sizeof (struct grub_fshelp_node)); if (!*foundnode) return grub_errno; - + (*foundnode)->inode = grub_be_to_cpu32 (fdrec.dir.dirid); (*foundnode)->fdrec = fdrec; (*foundnode)->data = dir->data; @@ -1265,7 +1268,7 @@ grub_hfs_dir (grub_device_t device, cons .hook_data = hook_data }; grub_fshelp_node_t found = NULL; - + grub_dl_ref (my_mod); data = grub_hfs_mount (device->disk); @@ -1294,7 +1297,7 @@ grub_hfs_open (struct grub_file *file, c { struct grub_hfs_data *data; grub_fshelp_node_t found = NULL; - + grub_dl_ref (my_mod); data = grub_hfs_mount (file->device->disk); --- a/grub-core/fs/hfsplus.c +++ b/grub-core/fs/hfsplus.c @@ -19,7 +19,7 @@ /* HFS+ is documented at http://developer.apple.com/technotes/tn/tn1150.html */ -#define grub_fshelp_node grub_hfsplus_file +#define grub_fshelp_node grub_hfsplus_file #include #include #include @@ -34,6 +34,9 @@ GRUB_MOD_LICENSE ("GPLv3+"); +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif /* The type of node. */ enum grub_hfsplus_btnode_type { @@ -145,7 +148,7 @@ grub_hfsplus_read_block (grub_fshelp_nod { struct grub_hfsplus_btnode *nnode = 0; grub_disk_addr_t blksleft = fileblock; - struct grub_hfsplus_extent *extents = node->compressed + struct grub_hfsplus_extent *extents = node->compressed ? &node->resource_extents[0] : &node->extents[0]; while (1) @@ -461,7 +464,7 @@ grub_hfsplus_cmp_extkey (struct grub_hfs if (extkey_a->type < extkey_b->type) return -1; - + akey = grub_be_to_cpu32 (extkey_a->start); if (akey > extkey_b->start) return 1; @@ -548,7 +551,7 @@ grub_hfsplus_btree_search (struct grub_h struct grub_hfsplus_key_internal *key, int (*compare_keys) (struct grub_hfsplus_key *keya, struct grub_hfsplus_key_internal *keyb), - struct grub_hfsplus_btnode **matchnode, + struct grub_hfsplus_btnode **matchnode, grub_off_t *keyoffset) { grub_uint64_t currnode; --- a/grub-core/fs/jfs.c +++ b/grub-core/fs/jfs.c @@ -28,6 +28,9 @@ #include GRUB_MOD_LICENSE ("GPLv3+"); +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif #define GRUB_JFS_MAX_SYMLNK_CNT 8 #define GRUB_JFS_FILETYPE_MASK 0170000 --- a/grub-core/kern/efi/efi.c +++ b/grub-core/kern/efi/efi.c @@ -29,6 +29,9 @@ #include #include +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif /* The handle of GRUB itself. Filled in by the startup code. */ grub_efi_handle_t grub_efi_image_handle; @@ -201,7 +204,7 @@ grub_efi_set_variable(const char *var, c r = grub_efi_system_table->runtime_services; - status = efi_call_5 (r->set_variable, var16, guid, + status = efi_call_5 (r->set_variable, var16, guid, (GRUB_EFI_VARIABLE_NON_VOLATILE | GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS | GRUB_EFI_VARIABLE_RUNTIME_ACCESS), --- a/grub-core/loader/efi/chainloader.c +++ b/grub-core/loader/efi/chainloader.c @@ -41,6 +41,9 @@ #endif GRUB_MOD_LICENSE ("GPLv3+"); +#if __GNUC__ >= 9 +#pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#endif static grub_dl_t my_mod;