[U-Boot] [RFC PATCH v1] common: fix building image.c

Igor Opaniuk igor.opaniuk at toradex.com
Tue Aug 20 10:38:30 UTC 2019


Hi Tom,

On Tue, Aug 13, 2019 at 3:44 PM Igor Opaniuk <igor.opaniuk at gmail.com> wrote:
>
> From: Igor Opaniuk <igor.opaniuk at toradex.com>
>
> Wrap image_decomp() and all dependent functions with
> !ifdef(USE_HOSTCC) macro, as this function isn't used by
> any tool from /tools.
>
> Without this it leads to compilation issues (because of
> CONFIG_LZMA from newly added #include <generated/autoconf.h>
> statement, which pulls all these definitions):
>
> In file included from tools/common/image.c:1:0:
> ./tools/../common/image.c: In function ‘image_decomp’:
> ./tools/../common/image.c:428:9: warning: implicit declaration of function
> ‘gunzip’; did you mean ‘munmap’? [-Wimplicit-function-declaration]
>    ret = gunzip(load_buf, unc_len, image_buf, &image_len);
>          ^~~~~~
>          munmap
> ./tools/../common/image.c:450:3: error: unknown type name ‘SizeT’;
> did you mean ‘size_t’?
>    SizeT lzma_len = unc_len;
>    ^~~~~
>    size_t
> ./tools/../common/image.c:452:9: warning: implicit declaration of function
> ‘lzmaBuffToBuffDecompress’ [-Wimplicit-function-declaration]
>    ret = lzmaBuffToBuffDecompress(load_buf, &lzma_len,
>          ^~~~~~~~~~~~~~~~~~~~~~~~
> scripts/Makefile.host:114: recipe for target 'tools/common/image.o' failed
>
> Fixes: 2aa7f0fa51 ("habv4: tools: Avoid hardcoded CSF size for SPL target")
> Signed-off-by: Igor Opaniuk <igor.opaniuk at toradex.com>
> ---
>
>  common/image-fit.c | 5 ++++-
>  common/image.c     | 3 +--
>  2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/common/image-fit.c b/common/image-fit.c
> index e346fed550..a064f38510 100644
> --- a/common/image-fit.c
> +++ b/common/image-fit.c
> @@ -1728,6 +1728,7 @@ int fit_conf_get_prop_node(const void *fit, int noffset,
>         return fit_conf_get_prop_node_index(fit, noffset, prop_name, 0);
>  }
>
> +#ifndef USE_HOSTCC
>  static int fit_image_select(const void *fit, int rd_noffset, int verify)
>  {
>         fit_image_print(fit, rd_noffset, "   ");
> @@ -1743,6 +1744,7 @@ static int fit_image_select(const void *fit, int rd_noffset, int verify)
>
>         return 0;
>  }
> +#endif /* USE_HOSTCC */
>
>  int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name,
>                         ulong addr)
> @@ -1771,6 +1773,7 @@ int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name,
>         return noffset;
>  }
>
> +#ifndef USE_HOSTCC
>  /**
>   * fit_get_image_type_property() - get property name for IH_TYPE_...
>   *
> @@ -2009,6 +2012,7 @@ int fit_image_load(bootm_headers_t *images, ulong addr,
>                 } else {
>                         loadbuf = map_sysmem(load, max_decomp_len);
>                 }
> +
>                 if (image_decomp(comp, load, data, image_type,
>                                 loadbuf, buf, len, max_decomp_len, &load_end)) {
>                         printf("Error decompressing %s\n", prop_name);
> @@ -2060,7 +2064,6 @@ int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch,
>         return ret;
>  }
>
> -#ifndef USE_HOSTCC
>  int boot_get_fdt_fit(bootm_headers_t *images, ulong addr,
>                    const char **fit_unamep, const char **fit_uname_configp,
>                    int arch, ulong *datap, ulong *lenp)
> diff --git a/common/image.c b/common/image.c
> index 6da0513e8b..315ae89467 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -383,6 +383,7 @@ void image_print_contents(const void *ptr)
>         }
>  }
>
> +#ifndef USE_HOSTCC
>  /**
>   * print_decomp_msg() - Print a suitable decompression/loading message
>   *
> @@ -483,8 +484,6 @@ int image_decomp(int comp, ulong load, ulong image_start, int type,
>         return ret;
>  }
>
> -
> -#ifndef USE_HOSTCC
>  #if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)
>  /**
>   * image_get_ramdisk - get and verify ramdisk image
> --
> 2.17.1
>

I saw you archived this patch in Patchwork,
but unfortunately the issue is still actual for
u-boot-imx custodian tree as I'm still facing build issues:

In file included from tools/common/image.c:1:0:
./tools/../common/image.c: In function ‘image_decomp’:
./tools/../common/image.c:429:9: warning: implicit declaration of
function ‘gunzip’; did you mean ‘munmap’?
[-Wimplicit-function-declaration]
   ret = gunzip(load_buf, unc_len, image_buf, &image_len);
         ^~~~~~
         munmap

tools/common/image.o: In function `image_decomp':
image.c:(.text+0x297): undefined reference to `gunzip'
collect2: error: ld returned 1 exit status
scripts/Makefile.host:106: recipe for target 'tools/dumpimage' failed
make[1]: *** [tools/dumpimage] Error 1
Makefile:1588: recipe for target 'tools' failed
make: *** [tools] Error 2


Could you please delegate it to Stefano Babic, so he can at least
look into it?

Thanks

-- 
Best regards - Freundliche Grüsse - Meilleures salutations

Senior Development Engineer,
Igor Opaniuk

Toradex AG
Altsagenstrasse 5 | 6048 Horw/Luzern | Switzerland | T: +41 41 500 48
00 (main line)


More information about the U-Boot mailing list