On 14.08.24 14:40, Simon Glass wrote:
Hi Heinrich,

On Wed, 14 Aug 2024 at 01:14, Heinrich Schuchardt
<[email protected]> wrote:

uint64_t is defined as unsigned long long on 32bit ARM.
Convert uint64_t values to unsigned long long and use %llX for printing.

     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

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
  tools/mkeficapsule.c | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c
index f28008a0829..d346c217f09 100644
--- a/tools/mkeficapsule.c
+++ b/tools/mkeficapsule.c
@@ -691,8 +691,8 @@ 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",
-              capsule_auth_hdr->monotonic_count);
+       printf("EFI_FIRMWARE_IMAGE_AUTH.MONOTONIC_COUNT\t\t: %08llX\n",
+              (unsigned long long)capsule_auth_hdr->monotonic_count);
         printf("EFI_FIRMWARE_IMAGE_AUTH.AUTH_INFO.HDR.dwLENGTH\t: %08X\n",
                capsule_auth_hdr->auth_info.hdr.dwLength);
         printf("EFI_FIRMWARE_IMAGE_AUTH.AUTH_INFO.HDR.wREVISION\t: %08X\n",
@@ -724,10 +724,10 @@ 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",
-              image_hdr->update_hardware_instance);
-       printf("FMP_CAPSULE_IMAGE_HDR.IMAGE_CAPSULE_SUPPORT\t: %08lX\n",
-              image_hdr->image_capsule_support);
+       printf("FMP_CAPSULE_IMAGE_HDR.UPDATE_HARDWARE_INSTANCE\t: %08llX\n",
+              (unsigned long long)image_hdr->update_hardware_instance);
+       printf("FMP_CAPSULE_IMAGE_HDR.IMAGE_CAPSULE_SUPPORT\t: %08llX\n",
+              (unsigned long long)image_hdr->image_capsule_support);

These should be in lower-case hex, by the way. Also see inttypes.h

Why would you print some lines in lower case while the rest is upper case?

I have sent a second version using PRIX64 and avoiding the conversion.

Best regards

Heinrich




         printf("--------\n");
         if (image_hdr->image_capsule_support & CAPSULE_SUPPORT_AUTHENTICATION) 
{
--
2.45.2


Regards,
SImon

Reply via email to