[PATCH] image.h: Change android_image_get_dtb* to use uint and not u32

Eugeniu Rosca roscaeugeniu at gmail.com
Sun Feb 16 23:04:33 CET 2020


Hi Tom,

On Sun, Feb 16, 2020 at 11:53:23AM -0500, Tom Rini wrote:
> On Sun, Feb 16, 2020 at 05:23:14PM +0100, Eugeniu Rosca wrote:
> > On Fri, Feb 14, 2020 at 12:38:19PM -0500, Tom Rini wrote:
> > > The image.h header can be used fairly widely in U-Boot builds.  We
> > > cannot use u32 here as it may be used in cases where we don't have that
> > > typedef available and don't want to expose it either.  Use uint instead
> > > here.
> > > 
> > > Cc: Eugeniu Rosca <roscaeugeniu at gmail.com>
> > > Cc: Sam Protsenko <joe.skb7 at gmail.com>
> > > Signed-off-by: Tom Rini <trini at konsulko.com>
> > > ---
> > >  include/image.h | 6 +++---
> > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/include/image.h b/include/image.h
> > > index b316d167d8d7..1dc3b48d8689 100644
> > > --- a/include/image.h
> > > +++ b/include/image.h
> > > @@ -1425,9 +1425,9 @@ int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
> > >  			      ulong *rd_data, ulong *rd_len);
> > >  int android_image_get_second(const struct andr_img_hdr *hdr,
> > >  			      ulong *second_data, ulong *second_len);
> > > -bool android_image_get_dtbo(ulong hdr_addr, ulong *addr, u32 *size);
> > > -bool android_image_get_dtb_by_index(ulong hdr_addr, u32 index, ulong *addr,
> > > -				    u32 *size);
> > > +bool android_image_get_dtbo(ulong hdr_addr, ulong *addr, uint *size);
> > > +bool android_image_get_dtb_by_index(ulong hdr_addr, uint index, ulong *addr,
> > > +				    uint *size);
> > 
> > While I think the change is harmless and brings some consistency and
> > visual comfort when reviewing the types employed in 'include/image.h',
> > I can hardly imagine a real-life breakage introduced by u32 in
> > 'include/image.h'.
> 
> I ran in to this in practice with
> http://patchwork.ozlabs.org/project/uboot/list/?series=155410&state=*
> applied.

Applying this series to u-boot/master, I am running into below build
failure [1], which I believe is something you try to fix in this patch.

It looks to me that U-Boot's 'include/image.h' is used not only by
files which are compiled for the target device, but also by files
located in 'tools/', which are compiled for the host with -DUSE_HOSTCC.
After inspecting the 'tools/' path of U-Boot repository, it looks like
the definition of 'u32' is indeed missing there, so I believe that's
the root cause of the build failure.

W.r.t. 'android_image_*' functions, I really doubt that they were
designed to be compiled with USE_HOSTCC. If so, then IMHO we shouldn't
try to make them compliant with USE_HOSTCC compilation, since this
will impose additional constraints/requirements to the development style
of those functions. IMHO we should just hide the android_image functions
on enabling -DUSE_HOSTCC, as shown in [2]. What's your view on that?

[1] Build error after applying to u-boot/master below series:
   http://patchwork.ozlabs.org/project/uboot/list/?series=155410&state=*

In file included from include/u-boot/rsa-mod-exp.h:10,
                 from ./tools/../lib/rsa/rsa-verify.c:22,
                 from tools/lib/rsa/rsa-verify.c:1:
include/image.h:1440:58: error: unknown type name ‘u32’
 1440 | bool android_image_get_dtbo(ulong hdr_addr, ulong *addr, u32 *size);
      |                                                          ^~~
include/image.h:1441:53: error: unknown type name ‘u32’
 1441 | bool android_image_get_dtb_by_index(ulong hdr_addr, u32 index, ulong *addr,
      |                                                     ^~~
include/image.h:1442:9: error: unknown type name ‘u32’
 1442 |         u32 *size);
      |         ^~~
  HOSTCC  tools/asn1_compiler
make[1]: *** [scripts/Makefile.host:114: tools/lib/rsa/rsa-verify.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  HOSTLD  tools/mkenvimage
make: *** [Makefile:1728: tools] Error 2

[2] Hide the android_image_* functions when USE_HOSTCC is enabled
diff --git a/include/image.h b/include/image.h
index ebec329582eb..0cdb2165fdaf 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1429,7 +1429,7 @@ struct cipher_algo *image_get_cipher_algo(const char *full_name);
 #endif /* CONFIG_FIT_VERBOSE */
 #endif /* CONFIG_FIT */
 
-#if defined(CONFIG_ANDROID_BOOT_IMAGE)
+#if defined(CONFIG_ANDROID_BOOT_IMAGE) && !defined(USE_HOSTCC)
 struct andr_img_hdr;
 int android_image_check_header(const struct andr_img_hdr *hdr);
 int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
@@ -1449,7 +1449,7 @@ void android_print_contents(const struct andr_img_hdr *hdr);
 bool android_image_print_dtb_contents(ulong hdr_addr);
 #endif
 
-#endif /* CONFIG_ANDROID_BOOT_IMAGE */
+#endif /* CONFIG_ANDROID_BOOT_IMAGE && !USE_HOSTCC */
 
 /**
  * board_fit_config_name_match() - Check for a matching board name

-- 
Best Regards
Eugeniu Rosca


More information about the U-Boot mailing list