On 11 August 2017 at 02:52, Pantelis Antoniou <pantelis.anton...@konsulko.com> wrote: > The most common trouble with overlays appears to be miscompiled > blobs without the -@ option. > > In case of an error, spit out a descriptive error message. > > Signed-off-by: Pantelis Antoniou <pantelis.anton...@konsulko.com> > --- > cmd/fdt.c | 8 ++++++++ > common/image-fit.c | 12 +++++++++++- > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/cmd/fdt.c b/cmd/fdt.c > index 05e19f8..9f192be 100644 > --- a/cmd/fdt.c > +++ b/cmd/fdt.c > @@ -654,6 +654,7 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) > unsigned long addr; > struct fdt_header *blob; > int ret; > + bool has_symbols; > > if (argc != 3) > return CMD_RET_USAGE; > @@ -666,9 +667,16 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) > if (!fdt_valid(&blob)) > return CMD_RET_FAILURE; > > + ret = fdt_path_offset(working_fdt, "/__symbols__"); > + has_symbols = ret >= 0; > + > ret = fdt_overlay_apply(working_fdt, blob); > if (ret) { > printf("fdt_overlay_apply(): %s\n", > fdt_strerror(ret)); > + if (!has_symbols) { > + printf("working fdt does did not have a > /__symbols__ node\n"); > + printf("make sure you've compiled with -@\n"); > + } > return CMD_RET_FAILURE; > } > } > diff --git a/common/image-fit.c b/common/image-fit.c > index cb089ea..28140f1 100644 > --- a/common/image-fit.c > +++ b/common/image-fit.c > @@ -1946,6 +1946,7 @@ int boot_get_fdt_fit(bootm_headers_t *images, ulong > addr, > const char *uname; > void *base, *ov; > int i, err, noffset, ov_noffset; > + bool has_symbols; > #endif > > fit_uname = fit_unamep ? *fit_unamep : NULL; > @@ -2038,9 +2039,18 @@ int boot_get_fdt_fit(bootm_headers_t *images, ulong > addr, > fdt_noffset = err; > goto out; > } > + > + err = fdt_path_offset(base, "/__symbols__"); > + has_symbols = err >= 0; > + > err = fdt_overlay_apply(base, ov); > if (err < 0) { > - printf("failed on fdt_overlay_apply\n"); > + printf("failed on fdt_overlay_apply(): %s\n", > + fdt_strerror(err)); > + if (!has_symbols) { > + printf("base fdt does did not have a > /__symbols__ node\n"); > + printf("make sure you've compiled with -@\n"); > + }
Can you put this code in a common function and call it from both places? Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot