[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