[PATCH] tools/mkeficapsule: correct printf codes

Mark Kettenis mark.kettenis at xs4all.nl
Wed Aug 14 15:05:22 CEST 2024


> From: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> Date: Wed, 14 Aug 2024 14:33:44 +0200
> 
> uint64_t is defined as unsigned long long on 32-bit ARM.
> Use PRIX64 for printing uint64_t.
> 
> This avoid a build failure on 32-bit systems:
> 
>     tools/mkeficapsule.c: In function 'dump_capsule_auth_header':
>     tools/mkeficapsule.c:694:66: warning: format '%lX' expects argument of
>     type 'long unsigned int', but argument 2 has type 'uint64_t'
>     {aka 'long long unsigned int'} [-Wformat=]
>     694 | printf("EFI_FIRMWARE_IMAGE_AUTH.MONOTONIC_COUNT\t\t: %08lX\n",
>         |                                                      ~~~~^
>         |                                                          |
>         |                                                          long unsigned int
>         |                                                      %08llX
> 

FWIW, on OpenBSD uint64_t is always "unsigned long long" even on
64-bit architectures.  So this should get rid of some warnings for us
as well.

Personally I prefer the casting approach of v1 over PRIX64, but the
latter is probably slightly more portable.

Reviewed-by: Mark Kettenis <kettenis at openbsd.org>

> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> 	use PRIX64 to print uint64_t
> ---
>  tools/mkeficapsule.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c
> index f28008a0829..1b53151d41a 100644
> --- a/tools/mkeficapsule.c
> +++ b/tools/mkeficapsule.c
> @@ -5,6 +5,7 @@
>   */
>  
>  #include <getopt.h>
> +#include <inttypes.h>
>  #include <pe.h>
>  #include <stdbool.h>
>  #include <stdint.h>
> @@ -691,7 +692,7 @@ static uint32_t dump_fmp_payload_header(
>  static void dump_capsule_auth_header(
>  	struct efi_firmware_image_authentication *capsule_auth_hdr)
>  {
> -	printf("EFI_FIRMWARE_IMAGE_AUTH.MONOTONIC_COUNT\t\t: %08lX\n",
> +	printf("EFI_FIRMWARE_IMAGE_AUTH.MONOTONIC_COUNT\t\t: %08" PRIX64 "\n",
>  	       capsule_auth_hdr->monotonic_count);
>  	printf("EFI_FIRMWARE_IMAGE_AUTH.AUTH_INFO.HDR.dwLENGTH\t: %08X\n",
>  	       capsule_auth_hdr->auth_info.hdr.dwLength);
> @@ -724,9 +725,9 @@ static void dump_fmp_capsule_image_header(
>  	       image_hdr->update_image_size);
>  	printf("FMP_CAPSULE_IMAGE_HDR.UPDATE_VENDOR_CODE_SIZE\t: %08X\n",
>  	       image_hdr->update_vendor_code_size);
> -	printf("FMP_CAPSULE_IMAGE_HDR.UPDATE_HARDWARE_INSTANCE\t: %08lX\n",
> +	printf("FMP_CAPSULE_IMAGE_HDR.UPDATE_HARDWARE_INSTANCE\t: %08" PRIX64 "\n",
>  	       image_hdr->update_hardware_instance);
> -	printf("FMP_CAPSULE_IMAGE_HDR.IMAGE_CAPSULE_SUPPORT\t: %08lX\n",
> +	printf("FMP_CAPSULE_IMAGE_HDR.IMAGE_CAPSULE_SUPPORT\t: %08" PRIX64 "\n",
>  	       image_hdr->image_capsule_support);
>  
>  	printf("--------\n");
> -- 
> 2.45.2
> 
> 


More information about the U-Boot mailing list