[U-Boot] [PATCH 2/2] SPL: Fix build of CONFIG_SPL_NET_SUPPORT

Tom Rini trini at ti.com
Tue Mar 12 17:16:51 CET 2013


With CONFIG_SPL_NET_SUPPORT set we bring in most of the environment
related code.  This in turn means that while we discard the callback
saftey checks in the environment, we had still needed their
__start/__end linker symbols.  In most cases this had been working
because we generated u-boot.lst for the main U-Boot build prior to
creating u-boot-spl.lds.  With a sufficiently large machine this is not
the case and exposed this latent bug which is that as of f8cfcf1 there
are no callback linker entries so not __start/__end symbol was
generated.

As the environment is not user modifiable in this particular run-time
(for any variable that had a callback associated with it) we simply
provide an empty env_callback_init in SPL.

Cc: Joe Hershberger <joe.hershberger at ni.com>
Cc: Scott Wood <scottwood at freescale.com>
Tested-by: Tom Rini <trini at ti.com> (Ran with am335x_evm_usbspl build)
Signed-off-by: Tom Rini <trini at ti.com>
---
 common/Makefile  |    3 ---
 common/spl/spl.c |   12 ++++++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/common/Makefile b/common/Makefile
index 719fc23..0e11964 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -211,10 +211,7 @@ COBJS-y += cmd_nvedit.o
 COBJS-y += env_common.o
 COBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_flash.o
 COBJS-$(CONFIG_SPL_YMODEM_SUPPORT) += xyzModem.o
-COBJS-$(CONFIG_SPL_NET_SUPPORT) += cmd_nvedit.o
 COBJS-$(CONFIG_SPL_NET_SUPPORT) += env_attr.o
-COBJS-$(CONFIG_SPL_NET_SUPPORT) += env_callback.o
-COBJS-$(CONFIG_SPL_NET_SUPPORT) += env_common.o
 COBJS-$(CONFIG_SPL_NET_SUPPORT) += env_flags.o
 COBJS-$(CONFIG_SPL_NET_SUPPORT) += env_nowhere.o
 COBJS-$(CONFIG_SPL_NET_SUPPORT) += miiphyutil.o
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 6715e0d..1ac2e4b 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -32,6 +32,7 @@
 #include <image.h>
 #include <malloc.h>
 #include <linux/compiler.h>
+#include <env_callback.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -271,3 +272,14 @@ void preloader_console_init(void)
 	spl_display_print();
 #endif
 }
+
+/*
+ * When CONFIG_SPL_NET_SUPPORT is set, we bring in and require a large
+ * subset of the environment code.  However, as the environment is not
+ * modifable interactively in this case we remove the environment
+ * callback support from the binary.  To do so we must provide an empty
+ * env_callback_init function.
+ */
+void env_callback_init(ENTRY *var_entry)
+{
+}
-- 
1.7.9.5



More information about the U-Boot mailing list