This commit set CONFIG_HUSH_PARSER_2021 as the default to trigger the CI with this parser.
Nonetheless, the keymile (i.e. VENDOR_KM) board family is not compatible with new 2021 hush parser. Indeed, This boards used set_local_var() to store some variables as local shell. They then used get_local_var() to retrieve the variables values. Sadly, this two functions do not exist with CONFIG_HUSH_PARSER_2021. A patch was proposed to use environment variables rather than local variables but it does not tackle the problem, so complementary work is needed to make this boards use CONFIG_HUSH_PARSER_2021 [1]. We also remove a #undef of CONFIG_FEATURE_SH_STANDALONE as it does not exist in U-Boot and causes troubles in the CI. We also set CONFIG_LTO for kirkwoord sheevaplug and phytec bk4r1, otherwise it hits its board size limit. By enabling this option, we also had to add assembly for __gnu_thumb1_case_si. It was taken from upstream gcc and adapted as width suffix was removed for the add [2]. Signed-off-by: Francis Laniel <francis.lan...@amarulasolutions.com> [1] https://marc.info/?l=u-boot&m=165541917618725&w=2 [2] https://github.com/gcc-mirror/gcc/blob/4f181f9c7ee3efc509d185fdfda33be9018f1611/libgcc/config/arm/lib1funcs.S#L2156 --- arch/arm/lib/lib1funcs.S | 17 +++++++++++++++++ cmd/Kconfig | 3 ++- common/cli_hush_upstream.c | 1 - configs/bk4r1_defconfig | 1 + configs/sheevaplug_defconfig | 1 + 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S index de15d09e36..a1f44d9454 100644 --- a/arch/arm/lib/lib1funcs.S +++ b/arch/arm/lib/lib1funcs.S @@ -419,4 +419,21 @@ ENTRY(__gnu_thumb1_case_uhi) ret lr ENDPROC(__gnu_thumb1_case_uhi) .popsection + +/* Taken and adapted from: https://github.com/gcc-mirror/gcc/blob/4f181f9c7ee3efc509d185fdfda33be9018f1611/libgcc/config/arm/lib1funcs.S#L2156 */ +.pushsection .text.__gnu_thumb1_case_si, "ax" +ENTRY(__gnu_thumb1_case_si) + push {r0, r1} + mov r1, lr + adds r1, r1, #2 /* Align to word. */ + lsrs r1, r1, #2 + lsls r0, r0, #2 + lsls r1, r1, #2 + ldr r0, [r1, r0] + adds r0, r0, r1 + mov lr, r0 + pop {r0, r1} + mov pc, lr /* We know we were called from thumb code. */ +ENDPROC(__gnu_thumb1_case_si) +.popsection #endif diff --git a/cmd/Kconfig b/cmd/Kconfig index 1b9d04680d..d4809fcfa4 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -28,7 +28,7 @@ menu "Hush flavor to use" config HUSH_OLD_PARSER bool "Use hush old parser" - default y + default y if VENDOR_KM help This option enables the old flavor of hush based on hush Busybox from 2005. @@ -37,6 +37,7 @@ menu "Hush flavor to use" config HUSH_2021_PARSER bool "Use hush 2021 parser" + default y if !VENDOR_KM help This option enables the new flavor of hush based on hush Busybox from 2021. diff --git a/common/cli_hush_upstream.c b/common/cli_hush_upstream.c index 93796e87c5..78a13eeb62 100644 --- a/common/cli_hush_upstream.c +++ b/common/cli_hush_upstream.c @@ -427,7 +427,6 @@ #include "NUM_APPLETS.h" #if NUM_APPLETS == 1 /* STANDALONE does not make sense, and won't compile */ -# undef CONFIG_FEATURE_SH_STANDALONE # undef ENABLE_FEATURE_SH_STANDALONE # undef IF_FEATURE_SH_STANDALONE # undef IF_NOT_FEATURE_SH_STANDALONE diff --git a/configs/bk4r1_defconfig b/configs/bk4r1_defconfig index 66adeac725..95f0c30cde 100644 --- a/configs/bk4r1_defconfig +++ b/configs/bk4r1_defconfig @@ -18,6 +18,7 @@ CONFIG_TARGET_BK4R1=y CONFIG_SYS_LOAD_ADDR=0x82000000 CONFIG_SYS_MEMTEST_START=0x80010000 CONFIG_SYS_MEMTEST_END=0x87c00000 +CONFIG_LTO=y CONFIG_HAS_BOARD_SIZE_LIMIT=y CONFIG_BOARD_SIZE_LIMIT=520192 CONFIG_FIT=y diff --git a/configs/sheevaplug_defconfig b/configs/sheevaplug_defconfig index 2e4901b840..365f779cc8 100644 --- a/configs/sheevaplug_defconfig +++ b/configs/sheevaplug_defconfig @@ -16,6 +16,7 @@ CONFIG_ENV_OFFSET=0x80000 CONFIG_DEFAULT_DEVICE_TREE="kirkwood-sheevaplug" CONFIG_IDENT_STRING="\nMarvell-Sheevaplug" CONFIG_SYS_LOAD_ADDR=0x800000 +CONFIG_LTO=y CONFIG_HAS_BOARD_SIZE_LIMIT=y CONFIG_BOARD_SIZE_LIMIT=524288 CONFIG_BOOTDELAY=3 -- 2.34.1