[PATCH 2/7] efi: Fix compiler warnings

Heinrich Schuchardt xypron.glpk at gmx.de
Sun Feb 7 22:49:36 CET 2021


On 2/7/21 10:27 PM, Simon Glass wrote:
> This occur when building on Raspberry Pi 400 (32-bit ARM). Fix them.
>
> Examples:
>
> cmd/efidebug.c: In function ‘do_efi_capsule_update’:
> cmd/efidebug.c:75:49: warning: cast from pointer to integer of different
> 	size [-Wpointer-to-int-cast]
>    ret = EFI_CALL(RT->update_capsule(&capsule, 1, (u64)NULL));
>                                                   ^
> include/efi_loader.h:104:9: note: in definition of macro ‘EFI_CALL’
>    typeof(exp) _r = exp; \
>           ^~~
> cmd/efidebug.c:75:49: warning: cast from pointer to integer of different
> 	size [-Wpointer-to-int-cast]
>    ret = EFI_CALL(RT->update_capsule(&capsule, 1, (u64)NULL));
>                                                   ^
> include/efi_loader.h:104:19: note: in definition of macro ‘EFI_CALL’
>    typeof(exp) _r = exp; \
>                     ^~~
>
> In file included from include/common.h:20,
>                   from lib/efi_loader/efi_capsule.c:9:
> lib/efi_loader/efi_capsule.c: In function ‘efi_update_capsule’:
> include/efi_loader.h:83:8: warning: format ‘%lu’ expects argument of type
> 	‘long unsigned int’, but argument 10 has type ‘size_t’
> 	{aka ‘unsigned int’} [-Wformat=]
>    debug("%sEFI: Entry %s(" format ")\n", __efi_nesting_inc(), \
>          ^~~~~~~~~~~~~~~~~~
> include/linux/printk.h:37:21: note: in definition of macro ‘pr_fmt’
>   #define pr_fmt(fmt) fmt
>                       ^~~
> include/log.h:229:2: note: in expansion of macro ‘log’
>    log(LOG_CATEGORY, LOGL_DEBUG, fmt, ##args); \
>    ^~~
> include/log.h:249:2: note: in expansion of macro ‘debug_cond’
>    debug_cond(_DEBUG, fmt, ##args)
>    ^~~~~~~~~~
> include/efi_loader.h:83:2: note: in expansion of macro ‘debug’
>    debug("%sEFI: Entry %s(" format ")\n", __efi_nesting_inc(), \
>    ^~~~~
> lib/efi_loader/efi_capsule.c:444:2: note: in expansion of macro ‘EFI_ENTRY’
>    EFI_ENTRY("%p, %lu, %llu\n", capsule_header_array, capsule_count,
>    ^~~~~~~~~
> lib/efi_loader/efi_capsule.c:444:19: note: format string is defined here
>    EFI_ENTRY("%p, %lu, %llu\n", capsule_header_array, capsule_count,
>                   ~~^
>                   %u
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>   cmd/efidebug.c                | 2 +-
>   lib/efi_loader/efi_capsule.c  | 4 ++--
>   lib/efi_loader/efi_firmware.c | 4 ++--
>   3 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/cmd/efidebug.c b/cmd/efidebug.c
> index bbbcb0a5464..09c41c950f7 100644
> --- a/cmd/efidebug.c
> +++ b/cmd/efidebug.c
> @@ -72,7 +72,7 @@ static int do_efi_capsule_update(struct cmd_tbl *cmdtp, int flag,
>   		       capsule->capsule_image_size);
>   	}
>
> -	ret = EFI_CALL(RT->update_capsule(&capsule, 1, (u64)NULL));
> +	ret = EFI_CALL(RT->update_capsule(&capsule, 1, (uintptr_t)NULL));

Thanks for addressing this issue.

According to the UEFI specification the third parameter is of type
EFI_PHYSICAL_ADDRESS i.e. u64.

Simply use 0 instead of (uintptr_t)NULL.

>   	if (ret) {
>   		printf("Cannot handle a capsule at %p", capsule);
>   		return CMD_RET_FAILURE;
> diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
> index 0d5a7b63ec8..1c0462ceb21 100644
> --- a/lib/efi_loader/efi_capsule.c
> +++ b/lib/efi_loader/efi_capsule.c
> @@ -441,7 +441,7 @@ efi_status_t EFIAPI efi_update_capsule(
>   	unsigned int i;
>   	efi_status_t ret;
>
> -	EFI_ENTRY("%p, %lu, %llu\n", capsule_header_array, capsule_count,
> +	EFI_ENTRY("%p, %zu, %llu\n", capsule_header_array, capsule_count,
>   		  scatter_gather_list);

ok

>
>   	if (!capsule_count) {
> @@ -501,7 +501,7 @@ efi_status_t EFIAPI efi_query_capsule_caps(
>   	unsigned int i;
>   	efi_status_t ret;
>
> -	EFI_ENTRY("%p, %lu, %p, %p\n", capsule_header_array, capsule_count,
> +	EFI_ENTRY("%p, %zu, %p, %p\n", capsule_header_array, capsule_count,

ok

>   		  maximum_capsule_size, reset_type);
>
>   	if (!maximum_capsule_size) {
> diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c
> index 5e401bbca2b..7a3cca27936 100644
> --- a/lib/efi_loader/efi_firmware.c
> +++ b/lib/efi_loader/efi_firmware.c
> @@ -299,7 +299,7 @@ efi_status_t EFIAPI efi_firmware_fit_set_image(
>   	efi_status_t (*progress)(efi_uintn_t completion),
>   	u16 **abort_reason)
>   {
> -	EFI_ENTRY("%p %d %p %ld %p %p %p\n", this, image_index, image,
> +	EFI_ENTRY("%p %d %p %zd %p %p %p\n", this, image_index, image,
>   		  image_size, vendor_code, progress, abort_reason);

ok

>
>   	if (!image || image_index != 1)
> @@ -414,7 +414,7 @@ efi_status_t EFIAPI efi_firmware_raw_set_image(
>   	efi_status_t status;
>   	efi_uintn_t capsule_payload_size;
>
> -	EFI_ENTRY("%p %d %p %ld %p %p %p\n", this, image_index, image,
> +	EFI_ENTRY("%p %d %p %zd %p %p %p\n", this, image_index, image,

ok

Otherwise

Reviewed-by: Heinrich Schuchardt <xypron.glpk at gmx.de>

>   		  image_size, vendor_code, progress, abort_reason);
>
>   	if (!image)
>



More information about the U-Boot mailing list