From 44ab2d325b79d3ce6123495c5ce52410655a58fb Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sat, 9 Jun 2018 17:50:18 +0200 Subject: [PATCH] efi_loader: avoid initializer element is not constant When building with -pedantic the current definition of EFI_GUID() causes an error 'initializer element is not constant'. Currently EFI_GUID() is used both as an anonymous constant and as an intializer. A conversion to efi_guid_t is not allowable when using EFI_GUID() as an initializer. But it is needed when using it as an anonymous constant. We should not use EFI_GUID() for anything but an initializer. So let's introduce a variable where needed and remove the conversion. Signed-off-by: Heinrich Schuchardt Signed-off-by: Alexander Graf --- disk/part_efi.c | 9 +++++++-- include/efi.h | 3 +-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/disk/part_efi.c b/disk/part_efi.c index 5c1039f..2945892 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -23,6 +23,11 @@ DECLARE_GLOBAL_DATA_PTR; +/* + * GUID for basic data partions. + */ +static const efi_guid_t partition_basic_data_guid = PARTITION_BASIC_DATA_GUID; + #ifdef CONFIG_HAVE_BLOCK_DEVICE /** * efi_crc32() - EFI version of crc32 function @@ -502,12 +507,12 @@ int gpt_fill_pte(struct blk_desc *dev_desc, } else { /* default partition type GUID */ memcpy(bin_type_guid, - &PARTITION_BASIC_DATA_GUID, 16); + &partition_basic_data_guid, 16); } #else /* partition type GUID */ memcpy(gpt_e[i].partition_type_guid.b, - &PARTITION_BASIC_DATA_GUID, 16); + &partition_basic_data_guid, 16); #endif #if CONFIG_IS_ENABLED(PARTITION_UUIDS) diff --git a/include/efi.h b/include/efi.h index 98bddba..e30a3c5 100644 --- a/include/efi.h +++ b/include/efi.h @@ -89,12 +89,11 @@ typedef u64 efi_virtual_addr_t; typedef void *efi_handle_t; #define EFI_GUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ - ((efi_guid_t) \ {{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, \ ((a) >> 24) & 0xff, \ (b) & 0xff, ((b) >> 8) & 0xff, \ (c) & 0xff, ((c) >> 8) & 0xff, \ - (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) } }) + (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) } } /* Generic EFI table header */ struct efi_table_hdr {