[U-Boot] [PATCH] mkimage : Fix generating multi and script images

Simon Glass sjg at chromium.org
Mon Dec 7 05:31:05 CET 2015


Hi Philippe,

On 3 December 2015 at 14:11, Philippe De Swert
<philippedeswert at gmail.com> wrote:
> Seems 92a655c3 broke creating multi and script type images.
> Since the file1:file2:file3 string does not get split up,
> it fails on trying to open an non-existing file.
>
> mkimage -A arm -O linux -T multi -C none -d zImage:splash.bmp:device.dtb uimage
> tools/mkimage: Can't open zImage:splash.bmp:device.dtb: No such file or directory
>
> Since the sizes of the different parts seem to get added in the actual
> routine that handles multi and script type images, we can probably skip the
> bit of the code that causes the failure for that type of images.
>
> Signed-off-by: Philippe De Swert <philippedeswert at gmail.com>
> ---
>  tools/mkimage.c | 31 ++++++++++++++++++-------------
>  1 file changed, 18 insertions(+), 13 deletions(-)
>
> diff --git a/tools/mkimage.c b/tools/mkimage.c
> index 8af9d50..ae01cb1 100644
> --- a/tools/mkimage.c
> +++ b/tools/mkimage.c
> @@ -311,21 +311,26 @@ NXTARG:           ;
>                 exit (retval);
>         }
>
> -       dfd = open(params.datafile, O_RDONLY | O_BINARY);
> -       if (dfd < 0) {
> -               fprintf(stderr, "%s: Can't open %s: %s\n",
> -                       params.cmdname, params.datafile, strerror(errno));
> -               exit(EXIT_FAILURE);
> -       }
> +       if (!params.type == IH_TYPE_MULTI ||
> +           !params.type == IH_TYPE_SCRIPT) {

This breaks rockchip image generation. I'm not sure what the above two
lines are supposed to do, but if they are correct they are very
confusing. Can you please take a look? I'll send a revert in the
meantime.

> +               dfd = open(params.datafile, O_RDONLY | O_BINARY);
> +               if (dfd < 0) {
> +                       fprintf(stderr, "%s: Can't open %s: %s\n",
> +                               params.cmdname, params.datafile,
> +                               strerror(errno));
> +                       exit(EXIT_FAILURE);
> +               }
>
> -       if (fstat(dfd, &sbuf) < 0) {
> -               fprintf(stderr, "%s: Can't stat %s: %s\n",
> -                       params.cmdname, params.datafile, strerror(errno));
> -               exit(EXIT_FAILURE);
> -       }
> +               if (fstat(dfd, &sbuf) < 0) {
> +                       fprintf(stderr, "%s: Can't stat %s: %s\n",
> +                               params.cmdname, params.datafile,
> +                               strerror(errno));
> +                       exit(EXIT_FAILURE);
> +               }
>
> -       params.file_size = sbuf.st_size + tparams->header_size;
> -       close(dfd);
> +               params.file_size = sbuf.st_size + tparams->header_size;
> +               close(dfd);
> +       }
>
>         /*
>          * In case there an header with a variable
> --
> 2.1.4

Regards,
Simon


More information about the U-Boot mailing list