[U-Boot,v2,3/7] dfu: Remove dependency on HUSH parser in SPL

Message ID 20181205175136.27119-4-afd@ti.com
State New
Delegated to: Tom Rini
Headers show
Series
  • Add USB boot to HS DRA7xx/AM57xx
Related show

Commit Message

Andrew F. Davis Dec. 5, 2018, 5:51 p.m.
CLI support with the HUSH parser is not currently SPL safe due to it's
use of realloc. That function is not defined for SPLs that use
SYS_MALLOC_SIMPLE. CLI support can be built in to SPL and some functions
do work, but use of some like run_command() will cause build to fail.
When no SPL code calls this function build works as the compiler removes
this unreachable code so the unresolved symbols are ignored.

If DFU support is enabled in SPL then MMU DFU support may get brought in
also, this code does make a call to run_command() causing build to fail
if the HUSH parser is not built-in. To break this odd and unneeded
dependency chain we use CONFIG_IS_ENABLED where appropriate to prevent
calls into HUSH code from SPL. This also removes our need to pull in the
rather unrelated source file when SPL_DFU is defined.

Signed-off-by: Andrew F. Davis <afd@ti.com>
---
 common/Makefile | 1 -
 common/cli.c    | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

Comments

Tom Rini Dec. 6, 2018, 9:40 p.m. | #1
On Wed, Dec 05, 2018 at 11:51:32AM -0600, Andrew F. Davis wrote:

> CLI support with the HUSH parser is not currently SPL safe due to it's
> use of realloc. That function is not defined for SPLs that use
> SYS_MALLOC_SIMPLE. CLI support can be built in to SPL and some functions
> do work, but use of some like run_command() will cause build to fail.
> When no SPL code calls this function build works as the compiler removes
> this unreachable code so the unresolved symbols are ignored.
> 
> If DFU support is enabled in SPL then MMU DFU support may get brought in
> also, this code does make a call to run_command() causing build to fail
> if the HUSH parser is not built-in. To break this odd and unneeded
> dependency chain we use CONFIG_IS_ENABLED where appropriate to prevent
> calls into HUSH code from SPL. This also removes our need to pull in the
> rather unrelated source file when SPL_DFU is defined.
> 
> Signed-off-by: Andrew F. Davis <afd@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>

Patch

diff --git a/common/Makefile b/common/Makefile
index 69cec69608..bbb03e1c57 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -67,7 +67,6 @@  ifdef CONFIG_SPL_BUILD
 ifdef CONFIG_SPL_DFU
 obj-$(CONFIG_DFU_OVER_USB) += dfu.o
 endif
-obj-$(CONFIG_SPL_DFU) += cli_hush.o
 obj-$(CONFIG_SPL_HASH_SUPPORT) += hash.o
 obj-$(CONFIG_TPL_HASH_SUPPORT) += hash.o
 obj-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o
diff --git a/common/cli.c b/common/cli.c
index 51b8d5f85c..fea8f8004c 100644
--- a/common/cli.c
+++ b/common/cli.c
@@ -27,7 +27,7 @@  DECLARE_GLOBAL_DATA_PTR;
  */
 int run_command(const char *cmd, int flag)
 {
-#ifndef CONFIG_HUSH_PARSER
+#if !CONFIG_IS_ENABLED(HUSH_PARSER)
 	/*
 	 * cli_run_command can return 0 or 1 for success, so clean up
 	 * its result.