Merge tag 'u-boot-imx-20211020' of https://source.denx.de/u-boot/custodians/u-boot-imx
[platform/kernel/u-boot.git] / tools / imx8image.c
index 019b875..fa8f227 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "imx8image.h"
+#include <image.h>
 
 static int p_idx;
 static int sector_size;
@@ -364,7 +365,7 @@ static void copy_file (int ifd, const char *datafile, int pad, int offset)
        struct stat sbuf;
        unsigned char *ptr;
        int tail;
-       int zero = 0;
+       uint64_t zero = 0;
        uint8_t zeros[4096];
        int size, ret;
 
@@ -555,7 +556,8 @@ static void set_image_array_entry(flash_header_v3_t *container,
                } else if (soc == QM && core == CORE_CA72) {
                        meta = IMAGE_A72_DEFAULT_META(custom_partition);
                } else {
-                       fprintf(stderr, "Error: invalid AP core id: %lu\n",
+                       fprintf(stderr,
+                               "Error: invalid AP core id: %" PRIu64 "\n",
                                core);
                        exit(EXIT_FAILURE);
                }
@@ -577,7 +579,9 @@ static void set_image_array_entry(flash_header_v3_t *container,
                        core = CORE_CM4_1;
                        meta = IMAGE_M4_1_DEFAULT_META(custom_partition);
                } else {
-                       fprintf(stderr, "Error: invalid m4 core id: %lu\n", core);
+                       fprintf(stderr,
+                               "Error: invalid m4 core id: %" PRIu64 "\n",
+                               core);
                        exit(EXIT_FAILURE);
                }
                img->hab_flags |= IMG_TYPE_EXEC;
@@ -674,7 +678,7 @@ static int get_container_image_start_pos(image_t *image_stack, uint32_t align)
                        fclose(fd);
 
                        if (header.tag != IVT_HEADER_TAG_B0) {
-                               fprintf(stderr, "header tag missmatched \n");
+                               fprintf(stderr, "header tag mismatched \n");
                                exit(EXIT_FAILURE);
                        } else {
                                file_off +=
@@ -812,6 +816,10 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
                case SCFW:
                case DATA:
                case MSG_BLOCK:
+                       if (container < 0) {
+                               fprintf(stderr, "No container found\n");
+                               exit(EXIT_FAILURE);
+                       }
                        check_file(&sbuf, img_sp->filename);
                        tmp_filename = img_sp->filename;
                        set_image_array_entry(&imx_header.fhdr[container],
@@ -825,6 +833,10 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
                        break;
 
                case SECO:
+                       if (container < 0) {
+                               fprintf(stderr, "No container found\n");
+                               exit(EXIT_FAILURE);
+                       }
                        check_file(&sbuf, img_sp->filename);
                        tmp_filename = img_sp->filename;
                        set_image_array_entry(&imx_header.fhdr[container],
@@ -906,17 +918,19 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
                exit(EXIT_FAILURE);
        }
 
-       /* Note: Image offset are not contained in the image */
-       tmp = flatten_container_header(&imx_header, container + 1, &size,
-                                      file_padding);
-       /* Write image header */
-       if (write(ofd, tmp, size) != size) {
-               fprintf(stderr, "error writing image hdr\n");
-               exit(EXIT_FAILURE);
-       }
+       if (container >= 0) {
+               /* Note: Image offset are not contained in the image */
+               tmp = flatten_container_header(&imx_header, container + 1,
+                                              &size, file_padding);
+               /* Write image header */
+               if (write(ofd, tmp, size) != size) {
+                       fprintf(stderr, "error writing image hdr\n");
+                       exit(EXIT_FAILURE);
+               }
 
-       /* Clean-up memory used by the headers */
-       free(tmp);
+               /* Clean-up memory used by the headers */
+               free(tmp);
+       }
 
        /*
         * step through the image stack again this time copying