[PATCH v4] lib: utils: fdt_fixup: Fix compile error

Anup Patel anup at brainfault.org
Sun Feb 26 21:22:14 PST 2023


On Tue, Feb 21, 2023 at 10:37 AM Xiang W <wxjstz at 126.com> wrote:
>
> When building with GCC-10 or older versions, it throws the following
> error:
>
>  CC-DEP    platform/generic/lib/utils/fdt/fdt_fixup.dep
>  CC        platform/generic/lib/utils/fdt/fdt_fixup.o
> lib/utils/fdt/fdt_fixup.c: In function 'fdt_reserved_memory_fixup':
> lib/utils/fdt/fdt_fixup.c:376:2: error: label at end of compound statement
>   376 |  next_entry:
>       |  ^~~~~~~~~~
>
> Remove the goto statement.
>
> Resolves: https://github.com/riscv-software-src/opensbi/issues/288
>
> Signed-off-by: Yu Chien Peter Lin <peterlin at andestech.com>
> Signed-off-by: Xiang W <wxjstz at 126.com>
> Reviewed-by: Anup Patel <anup at brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
> Changes in v4:
>  - Continue to fix the comment in Changes v3
>
> Changes in v3:
> - Fix a comment issue raised by Bin Meng
> - Changed the type of "overlap" from int to bool as suggested by Bin Meng
>
> Changes in v2:
> - Fix a comment issue raised by Andreas Schwab
>  lib/utils/fdt/fdt_fixup.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
>
>  lib/utils/fdt/fdt_fixup.c | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/lib/utils/fdt/fdt_fixup.c b/lib/utils/fdt/fdt_fixup.c
> index 619e4f5..c10179b 100644
> --- a/lib/utils/fdt/fdt_fixup.c
> +++ b/lib/utils/fdt/fdt_fixup.c
> @@ -361,19 +361,22 @@ int fdt_reserved_memory_fixup(void *fdt)
>                         return SBI_ENOSPC;
>                 }
>
> +               bool overlap = false;
>                 addr = reg->base;
>                 for (j = 0; j < i; j++) {
>                         if (addr == filtered_base[j]
>                             && filtered_order[j] < reg->order) {
> +                               overlap = true;
>                                 filtered_order[j] = reg->order;
> -                               goto next_entry;
> +                               break;
>                         }
>                 }
>
> -               filtered_base[i] = reg->base;
> -               filtered_order[i] = reg->order;
> -               i++;
> -       next_entry:
> +               if (!overlap) {
> +                       filtered_base[i] = reg->base;
> +                       filtered_order[i] = reg->order;
> +                       i++;
> +               }
>         }
>
>         for (j = 0; j < i; j++) {
> --
> 2.39.1
>



More information about the opensbi mailing list