All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays
@ 2012-09-24  1:21 Marek Vasut
  2012-09-24  1:21 ` [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile Marek Vasut
                   ` (4 more replies)
  0 siblings, 5 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-24  1:21 UTC (permalink / raw)
  To: u-boot

This is a first stab at the linker-generated array. Basically, this
concept is a generic abstraction of how u_boot_cmd works today. The
patch 2/3 contains a huge pile of documentation which should clarify
most of the questions.

NOTE: Compile-testing in progress, but it works with m28evk and sandbox
      for now.

Marek Vasut (3):
  common: Add symbol handling for generic lists into Makefile
  common: Implement support for linker-generated arrays
  common: Add .u_boot_list into all linker files

 Makefile                                         |   21 +++-
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 +
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 +
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +
 arch/arm/cpu/ixp/u-boot.lds                      |    5 +
 arch/arm/cpu/u-boot.lds                          |    5 +
 arch/avr32/cpu/u-boot.lds                        |    5 +
 arch/blackfin/cpu/u-boot.lds                     |    4 +
 arch/microblaze/cpu/u-boot.lds                   |    5 +
 arch/nds32/cpu/n1213/u-boot.lds                  |    5 +
 arch/nios2/cpu/u-boot.lds                        |    5 +
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 +
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 +
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +
 arch/sandbox/cpu/u-boot.lds                      |    5 +
 arch/sh/cpu/sh2/u-boot.lds                       |    4 +
 arch/sh/cpu/sh3/u-boot.lds                       |    4 +
 arch/sh/cpu/sh4/u-boot.lds                       |    4 +
 arch/x86/cpu/u-boot.lds                          |    5 +
 board/BuS/eb_cpu5282/u-boot.lds                  |    5 +
 board/LEOX/elpt860/u-boot.lds                    |    5 +
 board/RPXClassic/u-boot.lds                      |    5 +
 board/RPXlite/u-boot.lds                         |    5 +
 board/RPXlite_dw/u-boot.lds                      |    5 +
 board/RRvision/u-boot.lds                        |    5 +
 board/actux1/u-boot.lds                          |    5 +
 board/actux2/u-boot.lds                          |    5 +
 board/actux3/u-boot.lds                          |    5 +
 board/adder/u-boot.lds                           |    5 +
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 +
 board/altera/nios2-generic/u-boot.lds            |    5 +
 board/amcc/acadia/u-boot-nand.lds                |    3 +
 board/amcc/bamboo/u-boot-nand.lds                |    3 +
 board/amcc/canyonlands/u-boot-nand.lds           |    3 +
 board/amcc/kilauea/u-boot-nand.lds               |    3 +
 board/amcc/sequoia/u-boot-nand.lds               |    3 +
 board/amcc/sequoia/u-boot-ram.lds                |    3 +
 board/amirix/ap1000/u-boot.lds                   |    5 +
 board/astro/mcf5373l/u-boot.lds                  |    5 +
 board/c2mon/u-boot.lds                           |    5 +
 board/cobra5272/u-boot.lds                       |    5 +
 board/cogent/u-boot.lds                          |    5 +
 board/dave/PPChameleonEVB/u-boot.lds             |    5 +
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +
 board/dbau1x00/u-boot.lds                        |    5 +
 board/dvlhost/u-boot.lds                         |    5 +
 board/eltec/mhpc/u-boot.lds                      |    5 +
 board/emk/top860/u-boot.lds                      |    5 +
 board/ep88x/u-boot.lds                           |    5 +
 board/esd/dasa_sim/u-boot.lds                    |    5 +
 board/esd/pmc440/u-boot-nand.lds                 |    3 +
 board/esd/tasreg/u-boot.lds                      |    5 +
 board/esteem192e/u-boot.lds                      |    5 +
 board/etx094/u-boot.lds                          |    5 +
 board/evb64260/u-boot.lds                        |    5 +
 board/fads/u-boot.lds                            |    5 +
 board/flagadm/u-boot.lds                         |    5 +
 board/freescale/m5208evbe/u-boot.lds             |    5 +
 board/freescale/m52277evb/u-boot.lds             |    5 +
 board/freescale/m5235evb/u-boot.lds              |    5 +
 board/freescale/m5249evb/u-boot.lds              |    5 +
 board/freescale/m5253demo/u-boot.lds             |    5 +
 board/freescale/m5253evbe/u-boot.lds             |    5 +
 board/freescale/m5271evb/u-boot.lds              |    5 +
 board/freescale/m5272c3/u-boot.lds               |    5 +
 board/freescale/m5275evb/u-boot.lds              |    5 +
 board/freescale/m5282evb/u-boot.lds              |    5 +
 board/freescale/m53017evb/u-boot.lds             |    5 +
 board/freescale/m5329evb/u-boot.lds              |    5 +
 board/freescale/m5373evb/u-boot.lds              |    5 +
 board/freescale/m54451evb/u-boot.lds             |    5 +
 board/freescale/m54455evb/u-boot.lds             |    5 +
 board/freescale/m547xevb/u-boot.lds              |    5 +
 board/freescale/m548xevb/u-boot.lds              |    5 +
 board/freescale/mx31ads/u-boot.lds               |    5 +
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +
 board/gaisler/gr_ep2s60/u-boot.lds               |    5 +
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +
 board/gaisler/grsim/u-boot.lds                   |    5 +
 board/gaisler/grsim_leon2/u-boot.lds             |    5 +
 board/gen860t/u-boot-flashenv.lds                |    4 +
 board/gen860t/u-boot.lds                         |    5 +
 board/genietv/u-boot.lds                         |    5 +
 board/gth2/u-boot.lds                            |    5 +
 board/hermes/u-boot.lds                          |    5 +
 board/hymod/u-boot.lds                           |    5 +
 board/icu862/u-boot.lds                          |    5 +
 board/idmr/u-boot.lds                            |    5 +
 board/incaip/u-boot.lds                          |    5 +
 board/ip860/u-boot.lds                           |    5 +
 board/ivm/u-boot.lds                             |    5 +
 board/korat/u-boot-F7FC.lds                      |    3 +
 board/kup/kup4k/u-boot.lds                       |    5 +
 board/kup/kup4x/u-boot.lds                       |    5 +
 board/lantec/u-boot.lds                          |    5 +
 board/lwmon/u-boot.lds                           |    5 +
 board/manroland/uc100/u-boot.lds                 |    5 +
 board/matrix_vision/mvsmr/u-boot.lds             |    5 +
 board/mbx8xx/u-boot.lds                          |    5 +
 board/micronas/vct/u-boot.lds                    |    5 +
 board/ml2/u-boot.lds                             |    5 +
 board/mousse/u-boot.lds                          |    5 +
 board/mvblue/u-boot.lds                          |    5 +
 board/netphone/u-boot.lds                        |    5 +
 board/netta/u-boot.lds                           |    5 +
 board/netta2/u-boot.lds                          |    5 +
 board/netvia/u-boot.lds                          |    5 +
 board/nx823/u-boot.lds                           |    5 +
 board/openrisc/openrisc-generic/u-boot.lds       |    5 +
 board/pb1x00/u-boot.lds                          |    5 +
 board/qemu-mips/u-boot.lds                       |    5 +
 board/qi/qi_lb60/u-boot.lds                      |    5 +
 board/quantum/u-boot.lds                         |    5 +
 board/r360mpi/u-boot.lds                         |    5 +
 board/rbc823/u-boot.lds                          |    5 +
 board/renesas/sh7757lcr/u-boot.lds               |    4 +
 board/rsdproto/u-boot.lds                        |    5 +
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +
 board/samsung/smdk6400/u-boot-nand.lds           |    7 +-
 board/sandpoint/u-boot.lds                       |    5 +
 board/siemens/IAD210/u-boot.lds                  |    5 +
 board/sixnet/u-boot.lds                          |    5 +
 board/snmc/qs850/u-boot.lds                      |    5 +
 board/snmc/qs860t/u-boot.lds                     |    5 +
 board/spc1920/u-boot.lds                         |    5 +
 board/spd8xx/u-boot.lds                          |    5 +
 board/stx/stxxtc/u-boot.lds                      |    5 +
 board/svm_sc8xx/u-boot.lds                       |    5 +
 board/tqc/tqm8xx/u-boot.lds                      |    5 +
 board/v37/u-boot.lds                             |    5 +
 board/vpac270/u-boot-spl.lds                     |    4 +
 board/westel/amx860/u-boot.lds                   |    5 +
 examples/standalone/mips.lds                     |    4 +
 examples/standalone/nds32.lds                    |    4 +
 examples/standalone/sparc.lds                    |    5 +
 include/linker_lists.h                           |  125 ++++++++++++++++++++++
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +
 nand_spl/board/karo/tx25/u-boot.lds              |    5 +
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +
 spl/Makefile                                     |   14 ++-
 153 files changed, 876 insertions(+), 5 deletions(-)
 create mode 100644 include/linker_lists.h

Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
@ 2012-09-24  1:21 ` Marek Vasut
  2012-09-24 15:36   ` Joe Hershberger
  2012-09-24  1:21 ` [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays Marek Vasut
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24  1:21 UTC (permalink / raw)
  To: u-boot

This patch adds essential components for generation of the contents of
the linker section that is used by the linker-generated array. All of
the contents is held in a separate file, u-boot.lst, which is generated
at runtime just before U-Boot is linked.

The purpose of this code is to especially generate the appropriate
boundary symbols around each subsection in the section carrying the
linker-generated arrays. Obviously, the interim linker code for actual
placement of the variables into the section is generated too. The
generated file, u-boot.lst, is included into u-boot.lds via the linker
INCLUDE directive in u-boot.lds .

Adjustments are made in the Makefile and spl/Makefile so that the
u-boot.lds and u-boot-spl.lds depend on their respective .lst files.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 Makefile     |   21 ++++++++++++++++++---
 spl/Makefile |   14 +++++++++++++-
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index e3a27c6..592987a 100644
--- a/Makefile
+++ b/Makefile
@@ -510,7 +510,10 @@ else
 GEN_UBOOT = \
 		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
 		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
+		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
+		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
 endif
@@ -543,8 +546,20 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
 $(LDSCRIPT):	depend
 		$(MAKE) -C $(dir $@) $(notdir $@)
 
-$(obj)u-boot.lds: $(LDSCRIPT)
-		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(obj)u-boot.lst: $(LIBBOARD) $(LIBS)
+	$(OBJDUMP) -h $(LIBBOARD) $(LIBS) | \
+	sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
+	sed 's/\.[^\.]\+$$//' | \
+	sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
+	sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed 's/#//g' | \
+	sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
+		-e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
+		-e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
+
+$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
+		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
diff --git a/spl/Makefile b/spl/Makefile
index d4cb668..545adfe 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -148,7 +148,19 @@ $(START):	depend
 $(LIBS):	depend
 	$(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
 
-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+$(obj)u-boot-spl.lst: $(LIBS)
+	$(OBJDUMP) -h $(LIBS) | \
+	sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
+	sed 's/\.[^\.]\+$$//' | \
+	sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
+	sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed 's/#//g' | \
+	sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
+		-e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
+		-e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
+
+$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
 	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@
 
 depend:	$(obj).depend
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays
  2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
  2012-09-24  1:21 ` [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-24  1:21 ` Marek Vasut
  2012-09-24 16:30   ` Joe Hershberger
  2012-09-24  1:21 ` [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files Marek Vasut
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24  1:21 UTC (permalink / raw)
  To: u-boot

This patch adds support for linker-generated array. These arrays
are a generalization of the U-Boot command declaration approach.

Basically, the idea is to generate an array, where elements of the
array are statically initialized at compiler time and each element
is declared separatelly at different place. Such array though can
later be accessed and used via special accessor.

The actual implementation relies on placing any variable that is to
represent an element of LG-array into subsection of .u_boot_list
linker section . Once compiled, it is possible to dump all symbols
placed in .u_boot_list section and generate appropriate bounds for
each subsection of the .u_boot_list section. Each such subsection
this contains .__start and .__end entries at the begining and end
respecitively.

This allows for simple run-time traversing of the array, since the
symbols are properly defined.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 include/linker_lists.h |  125 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 125 insertions(+)
 create mode 100644 include/linker_lists.h

diff --git a/include/linker_lists.h b/include/linker_lists.h
new file mode 100644
index 0000000..ffa95f6
--- /dev/null
+++ b/include/linker_lists.h
@@ -0,0 +1,125 @@
+/*
+ * include/linker_lists.h
+ *
+ * Implementation of linker-generated arrays
+ *
+ * Copyright (C) 2012 Marek Vasut <marex@denx.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+#ifndef __LINKER_LISTS_H__
+#define __LINKER_LISTS_H__
+
+/**
+ * ll_entry_declare() - Declare linker-generated array entry
+ * _type:	Data type of the entry
+ * _name:	Name of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots, for name concatenation)
+ * _section_d:	Subsection of u_boot_list in which this entry is placed
+ *		(with dots, for section concatenation)
+ *
+ * This macro declares a variable that is placed into a linker-generated
+ * array. This is a basic building block for more advanced use of linker-
+ * generated arrays. The user is expected to build their own macro wrapper
+ * around this one.
+ *
+ * A variable declared using this macro must be compile-time initialized
+ * and is as such placed into subsection of special section, .u_boot_list.
+ * The subsection is specified by the _section_[u,d] parameter, see below.
+ * The base name of the variable is _name, yet the actual variable is
+ * declared as concatenation of:
+ *
+ *   _u_boot_list_ + _section_u + _ + _name
+ *
+ * which ensures name uniqueness. This variable shall never be refered
+ * directly though.
+ *
+ * Special precaution must be made when using this macro:
+ *
+ * 1) The _type must not contain the "static" keyword, otherwise the entry
+ *    is not generated.
+ * 2) The _section_u and _section_d variables must match, the only difference
+ *    is that in _section_u is every dot "." character present in _section_d
+ *    replaced by a single underscore "_" character in _section_u. The actual
+ *    purpose of these parameters is to select proper subsection in the global
+ *    .u_boot_list section.
+ * 3) In case a section is declared that contains some array elements AND a
+ *    subsection of this section is declared and contains some elements, it is
+ *    imperative that the elements are of the same type.
+ * 4) In case an outer section is declared that contains some array elements
+ *    AND am inner subsection of this section is declared and contains some
+ *    elements, then when traversing the outer section, even the elements of
+ *    the inner sections are present in the array.
+ *
+ * Example of usage:
+ *
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ *	.x = 3,
+ *	.y = 4,
+ * };
+ */
+#define ll_entry_declare(_type, _name, _section_u, _section_d)		\
+	_type _u_boot_list_##_section_u##_##_name __attribute__((	\
+			unused,	aligned(4),				\
+			section(".u_boot_list."#_section_d"."#_name)));	\
+	_type _u_boot_list_##_section_u##_##_name
+
+/**
+ * ll_entry_start() - Point to first entry of linker-generated array
+ * _type:	Data type of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns (_type *) pointer to the very first entry of a
+ * linker-generated array placed into subsection of .u_boot_list section
+ * specified by _section_u argument.
+ *
+ * Example of usage:
+ *
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ */
+#define ll_entry_start(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		_type *_ll_result = &_u_boot_list_##_section_u##__start;\
+		_ll_result;						\
+	})
+
+/**
+ * ll_entry_count() - Return the number of elements in linker-generated array
+ * _type:	Data type of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns the number of elements of a linker-generated array
+ * placed into subsection of .u_boot_list section specified by _section_u
+ * argument. The result is of an unsigned int type.
+ *
+ * Example of usage:
+ *
+ * int i;
+ * const unsigned int count = ll_entry_count(struct my_sub_cmd, cmd_sub);
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ * for (i = 0; i < count; i++) {
+ *	printf("Entry %i, x=%i y=%i\n", i, msc->x, msc->y);
+ *	msc++;
+ * }
+ */
+#define ll_entry_count(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		extern _type _u_boot_list_##_section_u##__end;		\
+		unsigned int _ll_result =				\
+			&_u_boot_list_##_section_u##__end -		\
+			&_u_boot_list_##_section_u##__start;		\
+		_ll_result;						\
+	})
+
+#endif	/* __LINKER_LISTS_H__ */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
  2012-09-24  1:21 ` [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile Marek Vasut
  2012-09-24  1:21 ` [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays Marek Vasut
@ 2012-09-24  1:21 ` Marek Vasut
  2012-09-24 16:34   ` Joe Hershberger
  2012-09-24 17:29 ` [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Tom Rini
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
  4 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24  1:21 UTC (permalink / raw)
  To: u-boot

Add section for the linker-generated lists into all possible linker
files, so that everyone can easily use these lists. This is mostly
a mechanical adjustment.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +++++
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 ++++
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 ++++
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +++++
 arch/arm/cpu/ixp/u-boot.lds                      |    5 +++++
 arch/arm/cpu/u-boot.lds                          |    5 +++++
 arch/avr32/cpu/u-boot.lds                        |    5 +++++
 arch/blackfin/cpu/u-boot.lds                     |    4 ++++
 arch/microblaze/cpu/u-boot.lds                   |    5 +++++
 arch/nds32/cpu/n1213/u-boot.lds                  |    5 +++++
 arch/nios2/cpu/u-boot.lds                        |    5 +++++
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +++++
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +++++
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +++
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +++++
 arch/sandbox/cpu/u-boot.lds                      |    5 +++++
 arch/sh/cpu/sh2/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh3/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh4/u-boot.lds                       |    4 ++++
 arch/x86/cpu/u-boot.lds                          |    5 +++++
 board/BuS/eb_cpu5282/u-boot.lds                  |    5 +++++
 board/LEOX/elpt860/u-boot.lds                    |    5 +++++
 board/RPXClassic/u-boot.lds                      |    5 +++++
 board/RPXlite/u-boot.lds                         |    5 +++++
 board/RPXlite_dw/u-boot.lds                      |    5 +++++
 board/RRvision/u-boot.lds                        |    5 +++++
 board/actux1/u-boot.lds                          |    5 +++++
 board/actux2/u-boot.lds                          |    5 +++++
 board/actux3/u-boot.lds                          |    5 +++++
 board/adder/u-boot.lds                           |    5 +++++
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 ++++
 board/altera/nios2-generic/u-boot.lds            |    5 +++++
 board/amcc/acadia/u-boot-nand.lds                |    3 +++
 board/amcc/bamboo/u-boot-nand.lds                |    3 +++
 board/amcc/canyonlands/u-boot-nand.lds           |    3 +++
 board/amcc/kilauea/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-ram.lds                |    3 +++
 board/amirix/ap1000/u-boot.lds                   |    5 +++++
 board/astro/mcf5373l/u-boot.lds                  |    5 +++++
 board/c2mon/u-boot.lds                           |    5 +++++
 board/cobra5272/u-boot.lds                       |    5 +++++
 board/cogent/u-boot.lds                          |    5 +++++
 board/dave/PPChameleonEVB/u-boot.lds             |    5 +++++
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++++++
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +++++
 board/dbau1x00/u-boot.lds                        |    5 +++++
 board/dvlhost/u-boot.lds                         |    5 +++++
 board/eltec/mhpc/u-boot.lds                      |    5 +++++
 board/emk/top860/u-boot.lds                      |    5 +++++
 board/ep88x/u-boot.lds                           |    5 +++++
 board/esd/dasa_sim/u-boot.lds                    |    5 +++++
 board/esd/pmc440/u-boot-nand.lds                 |    3 +++
 board/esd/tasreg/u-boot.lds                      |    5 +++++
 board/esteem192e/u-boot.lds                      |    5 +++++
 board/etx094/u-boot.lds                          |    5 +++++
 board/evb64260/u-boot.lds                        |    5 +++++
 board/fads/u-boot.lds                            |    5 +++++
 board/flagadm/u-boot.lds                         |    5 +++++
 board/freescale/m5208evbe/u-boot.lds             |    5 +++++
 board/freescale/m52277evb/u-boot.lds             |    5 +++++
 board/freescale/m5235evb/u-boot.lds              |    5 +++++
 board/freescale/m5249evb/u-boot.lds              |    5 +++++
 board/freescale/m5253demo/u-boot.lds             |    5 +++++
 board/freescale/m5253evbe/u-boot.lds             |    5 +++++
 board/freescale/m5271evb/u-boot.lds              |    5 +++++
 board/freescale/m5272c3/u-boot.lds               |    5 +++++
 board/freescale/m5275evb/u-boot.lds              |    5 +++++
 board/freescale/m5282evb/u-boot.lds              |    5 +++++
 board/freescale/m53017evb/u-boot.lds             |    5 +++++
 board/freescale/m5329evb/u-boot.lds              |    5 +++++
 board/freescale/m5373evb/u-boot.lds              |    5 +++++
 board/freescale/m54451evb/u-boot.lds             |    5 +++++
 board/freescale/m54455evb/u-boot.lds             |    5 +++++
 board/freescale/m547xevb/u-boot.lds              |    5 +++++
 board/freescale/m548xevb/u-boot.lds              |    5 +++++
 board/freescale/mx31ads/u-boot.lds               |    5 +++++
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +++++
 board/gaisler/gr_ep2s60/u-boot.lds               |    5 +++++
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +++++
 board/gaisler/grsim/u-boot.lds                   |    5 +++++
 board/gaisler/grsim_leon2/u-boot.lds             |    5 +++++
 board/gen860t/u-boot-flashenv.lds                |    4 ++++
 board/gen860t/u-boot.lds                         |    5 +++++
 board/genietv/u-boot.lds                         |    5 +++++
 board/gth2/u-boot.lds                            |    5 +++++
 board/hermes/u-boot.lds                          |    5 +++++
 board/hymod/u-boot.lds                           |    5 +++++
 board/icu862/u-boot.lds                          |    5 +++++
 board/idmr/u-boot.lds                            |    5 +++++
 board/incaip/u-boot.lds                          |    5 +++++
 board/ip860/u-boot.lds                           |    5 +++++
 board/ivm/u-boot.lds                             |    5 +++++
 board/korat/u-boot-F7FC.lds                      |    3 +++
 board/kup/kup4k/u-boot.lds                       |    5 +++++
 board/kup/kup4x/u-boot.lds                       |    5 +++++
 board/lantec/u-boot.lds                          |    5 +++++
 board/lwmon/u-boot.lds                           |    5 +++++
 board/manroland/uc100/u-boot.lds                 |    5 +++++
 board/matrix_vision/mvsmr/u-boot.lds             |    5 +++++
 board/mbx8xx/u-boot.lds                          |    5 +++++
 board/micronas/vct/u-boot.lds                    |    5 +++++
 board/ml2/u-boot.lds                             |    5 +++++
 board/mousse/u-boot.lds                          |    5 +++++
 board/mvblue/u-boot.lds                          |    5 +++++
 board/netphone/u-boot.lds                        |    5 +++++
 board/netta/u-boot.lds                           |    5 +++++
 board/netta2/u-boot.lds                          |    5 +++++
 board/netvia/u-boot.lds                          |    5 +++++
 board/nx823/u-boot.lds                           |    5 +++++
 board/openrisc/openrisc-generic/u-boot.lds       |    5 +++++
 board/pb1x00/u-boot.lds                          |    5 +++++
 board/qemu-mips/u-boot.lds                       |    5 +++++
 board/qi/qi_lb60/u-boot.lds                      |    5 +++++
 board/quantum/u-boot.lds                         |    5 +++++
 board/r360mpi/u-boot.lds                         |    5 +++++
 board/rbc823/u-boot.lds                          |    5 +++++
 board/renesas/sh7757lcr/u-boot.lds               |    4 ++++
 board/rsdproto/u-boot.lds                        |    5 +++++
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +++++
 board/samsung/smdk6400/u-boot-nand.lds           |    7 ++++++-
 board/sandpoint/u-boot.lds                       |    5 +++++
 board/siemens/IAD210/u-boot.lds                  |    5 +++++
 board/sixnet/u-boot.lds                          |    5 +++++
 board/snmc/qs850/u-boot.lds                      |    5 +++++
 board/snmc/qs860t/u-boot.lds                     |    5 +++++
 board/spc1920/u-boot.lds                         |    5 +++++
 board/spd8xx/u-boot.lds                          |    5 +++++
 board/stx/stxxtc/u-boot.lds                      |    5 +++++
 board/svm_sc8xx/u-boot.lds                       |    5 +++++
 board/tqc/tqm8xx/u-boot.lds                      |    5 +++++
 board/v37/u-boot.lds                             |    5 +++++
 board/vpac270/u-boot-spl.lds                     |    4 ++++
 board/westel/amx860/u-boot.lds                   |    5 +++++
 examples/standalone/mips.lds                     |    4 ++++
 examples/standalone/nds32.lds                    |    4 ++++
 examples/standalone/sparc.lds                    |    5 +++++
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +++++
 nand_spl/board/karo/tx25/u-boot.lds              |    5 +++++
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +++++
 150 files changed, 720 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index dc6ba34..6ad9169 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__bss_start = .;
 	.bss : { *(.bss) }
 	__bss_end__ = .;
diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
index f8ea38c..2124b63 100644
--- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
index afd3381..d3f93ea 100644
--- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
index 8867e06..2051576 100644
--- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
@@ -47,6 +47,11 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 	__image_copy_end = .;
 	_end = .;
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index 7199de4..e08f10b 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index e49ca0c..18eaf73 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	__image_copy_end = .;
 
diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
index 0e532f2..5aef19b 100644
--- a/arch/avr32/cpu/u-boot.lds
+++ b/arch/avr32/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	_got = .;
 	.got : {
 		*(.got)
diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds
index 2b8d285..be70d81 100644
--- a/arch/blackfin/cpu/u-boot.lds
+++ b/arch/blackfin/cpu/u-boot.lds
@@ -119,6 +119,10 @@ SECTIONS
 		___u_boot_cmd_end = .;
 	} >ram_data
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >ram_data
+
 	.text_l1 :
 	{
 		. = ALIGN(4);
diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
index d033a28..86773b5e 100644
--- a/arch/microblaze/cpu/u-boot.lds
+++ b/arch/microblaze/cpu/u-boot.lds
@@ -56,6 +56,11 @@ SECTIONS
 		__u_boot_cmd_start = .;
 		*(.u_boot_cmd)
 		__u_boot_cmd_end = .;
+
+		. = ALIGN(4);
+		.u_boot_list : {
+	INCLUDE u-boot.lst;
+		}
 	}
 
 	.bss ALIGN(0x4):
diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds
index 1903420..48d5b90 100644
--- a/arch/nds32/cpu/n1213/u-boot.lds
+++ b/arch/nds32/cpu/n1213/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	_end = .;
 
diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds
index 4856bd3..33cd0e2 100644
--- a/arch/nios2/cpu/u-boot.lds
+++ b/arch/nios2/cpu/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
index 24823cd..049ae63 100644
--- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds
+++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds
index 7a4d927..d93c097 100644
--- a/arch/powerpc/cpu/mpc512x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc512x/u-boot.lds
@@ -61,6 +61,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds
index e02b213..2fbc379 100644
--- a/arch/powerpc/cpu/mpc5xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
index 0c6c54e..1574767 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
@@ -70,6 +70,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
index 5dcaec1..52755e6 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds
index 39bb42e..222f907 100644
--- a/arch/powerpc/cpu/mpc8220/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8220/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds
index b30ce76..bb16926 100644
--- a/arch/powerpc/cpu/mpc824x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc824x/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds
index 60b71ec..722d7fb 100644
--- a/arch/powerpc/cpu/mpc8260/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8260/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds
index 2f4b9ad..416bc07 100644
--- a/arch/powerpc/cpu/mpc83xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
index 8ba9399..5563b5f 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
@@ -74,6 +74,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
index 668158f..8315aa3 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
@@ -53,6 +53,10 @@ SECTIONS
 	}
 	_edata  =  .;
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(8);
 	__init_begin = .;
 	__init_end = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds
index efe34b7..009214b 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds
index 121e529..e3b19d4 100644
--- a/arch/powerpc/cpu/mpc86xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds
index 2466b79..005ec61 100644
--- a/arch/powerpc/cpu/ppc4xx/u-boot.lds
+++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds
@@ -82,6 +82,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
index 9960138..0a37657 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -28,6 +28,11 @@ SECTIONS
 	_u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	__u_boot_sandbox_option_start = .;
 	_u_boot_sandbox_getopt : { *(.u_boot_sandbox_getopt) }
 	__u_boot_sandbox_option_end = .;
diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds
index b86a822..2331152 100644
--- a/arch/sh/cpu/sh2/u-boot.lds
+++ b/arch/sh/cpu/sh2/u-boot.lds
@@ -80,6 +80,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 
 	PROVIDE (bss_start = .);
diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds
index 9bf8503..9d99434 100644
--- a/arch/sh/cpu/sh3/u-boot.lds
+++ b/arch/sh/cpu/sh3/u-boot.lds
@@ -86,6 +86,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds
index d9c70bc..8702c9e 100644
--- a/arch/sh/cpu/sh4/u-boot.lds
+++ b/arch/sh/cpu/sh4/u-boot.lds
@@ -83,6 +83,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds
index fe28030..aa2b653 100644
--- a/arch/x86/cpu/u-boot.lds
+++ b/arch/x86/cpu/u-boot.lds
@@ -39,6 +39,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
 
 	. = ALIGN(4);
diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/BuS/eb_cpu5282/u-boot.lds
+++ b/board/BuS/eb_cpu5282/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
index 5aaf6b3..d85943c 100644
--- a/board/LEOX/elpt860/u-boot.lds
+++ b/board/LEOX/elpt860/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXClassic/u-boot.lds
+++ b/board/RPXClassic/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite/u-boot.lds
+++ b/board/RPXlite/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite_dw/u-boot.lds
+++ b/board/RPXlite_dw/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
index 8385373..3c2c708 100644
--- a/board/RRvision/u-boot.lds
+++ b/board/RRvision/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds
index 9dbaa6f..e5d59db 100644
--- a/board/actux1/u-boot.lds
+++ b/board/actux1/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds
index 3575ed9..09bb7ab 100644
--- a/board/actux2/u-boot.lds
+++ b/board/actux2/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds
index 35aab29..71b6791 100644
--- a/board/actux3/u-boot.lds
+++ b/board/actux3/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds
index a762769..62afcb80 100644
--- a/board/adder/u-boot.lds
+++ b/board/adder/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds
index 52c986e..71f796a 100644
--- a/board/ait/cam_enc_4xx/u-boot-spl.lds
+++ b/board/ait/cam_enc_4xx/u-boot-spl.lds
@@ -48,6 +48,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	} >.sram
+	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
 		*(.rel*)
diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds
index 88ced62..764cc7d 100644
--- a/board/altera/nios2-generic/u-boot.lds
+++ b/board/altera/nios2-generic/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/acadia/u-boot-nand.lds
+++ b/board/amcc/acadia/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds
index 3ad8709..2382ea9 100644
--- a/board/amcc/bamboo/u-boot-nand.lds
+++ b/board/amcc/bamboo/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds
index 76f89f1..0816387 100644
--- a/board/amcc/canyonlands/u-boot-nand.lds
+++ b/board/amcc/canyonlands/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/kilauea/u-boot-nand.lds
+++ b/board/amcc/kilauea/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds
index 07ae8b1..94234de 100644
--- a/board/amcc/sequoia/u-boot-nand.lds
+++ b/board/amcc/sequoia/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds
index 423400a..0f594f5 100644
--- a/board/amcc/sequoia/u-boot-ram.lds
+++ b/board/amcc/sequoia/u-boot-ram.lds
@@ -68,6 +68,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amirix/ap1000/u-boot.lds b/board/amirix/ap1000/u-boot.lds
index cd8f5ce..575d390 100644
--- a/board/amirix/ap1000/u-boot.lds
+++ b/board/amirix/ap1000/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds
index a1d8e0f..d800805 100644
--- a/board/astro/mcf5373l/u-boot.lds
+++ b/board/astro/mcf5373l/u-boot.lds
@@ -113,6 +113,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
index b9b8e3c..a170f06 100644
--- a/board/c2mon/u-boot.lds
+++ b/board/c2mon/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/cobra5272/u-boot.lds
+++ b/board/cobra5272/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
index 2393d8d..3a3d988 100644
--- a/board/cogent/u-boot.lds
+++ b/board/cogent/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
index 3b10114..fb40e3d 100644
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ b/board/dave/PPChameleonEVB/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
index 6f6e065..f1b53aa 100644
--- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
@@ -47,6 +47,12 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+
 	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
index b3a41af..15fa53a 100644
--- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
@@ -58,6 +58,11 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__rel_dyn_start = .;
 	__rel_dyn_end = .;
 	__dynsym_start = .;
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/dbau1x00/u-boot.lds
+++ b/board/dbau1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds
index 01ec390..897263e 100644
--- a/board/dvlhost/u-boot.lds
+++ b/board/dvlhost/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/eltec/mhpc/u-boot.lds
+++ b/board/eltec/mhpc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds
index fb06648..887ee6b 100644
--- a/board/emk/top860/u-boot.lds
+++ b/board/emk/top860/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds
index 332b35a..0c5a03e 100644
--- a/board/ep88x/u-boot.lds
+++ b/board/ep88x/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
index b15948d..9a3249d 100644
--- a/board/esd/dasa_sim/u-boot.lds
+++ b/board/esd/dasa_sim/u-boot.lds
@@ -77,6 +77,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds
index 71f0fd2..d4ef403 100644
--- a/board/esd/pmc440/u-boot-nand.lds
+++ b/board/esd/pmc440/u-boot-nand.lds
@@ -106,6 +106,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/esd/tasreg/u-boot.lds
+++ b/board/esd/tasreg/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
index 163b83d..83d9ec0 100644
--- a/board/esteem192e/u-boot.lds
+++ b/board/esteem192e/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
index 8465937..a98ee23 100644
--- a/board/etx094/u-boot.lds
+++ b/board/etx094/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
index 2d031ef..1eb7f30 100644
--- a/board/evb64260/u-boot.lds
+++ b/board/evb64260/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
index 9ea0674..deee255 100644
--- a/board/fads/u-boot.lds
+++ b/board/fads/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/flagadm/u-boot.lds
+++ b/board/flagadm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds
index 6e39be1..e184013 100644
--- a/board/freescale/m5208evbe/u-boot.lds
+++ b/board/freescale/m5208evbe/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds
index 3e9f4c3..6214098 100644
--- a/board/freescale/m52277evb/u-boot.lds
+++ b/board/freescale/m52277evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds
index d39e734..9b5e5e2 100644
--- a/board/freescale/m5235evb/u-boot.lds
+++ b/board/freescale/m5235evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5249evb/u-boot.lds
+++ b/board/freescale/m5249evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds
index cbd2831..3487a8d 100644
--- a/board/freescale/m5253demo/u-boot.lds
+++ b/board/freescale/m5253demo/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5253evbe/u-boot.lds
+++ b/board/freescale/m5253evbe/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds
index 4717036..3a86350 100644
--- a/board/freescale/m5271evb/u-boot.lds
+++ b/board/freescale/m5271evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5272c3/u-boot.lds
+++ b/board/freescale/m5272c3/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds
index 6c2dfe8..b37b06b 100644
--- a/board/freescale/m5275evb/u-boot.lds
+++ b/board/freescale/m5275evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/freescale/m5282evb/u-boot.lds
+++ b/board/freescale/m5282evb/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds
index 80935f2..662bd31 100644
--- a/board/freescale/m53017evb/u-boot.lds
+++ b/board/freescale/m53017evb/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds
index 40af8bc..fe5be41 100644
--- a/board/freescale/m5329evb/u-boot.lds
+++ b/board/freescale/m5329evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds
index 19342ac..8ff6fc9 100644
--- a/board/freescale/m5373evb/u-boot.lds
+++ b/board/freescale/m5373evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds
index 45924b7..ea0984f 100644
--- a/board/freescale/m54451evb/u-boot.lds
+++ b/board/freescale/m54451evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds
index f341449..fe1b58c 100644
--- a/board/freescale/m54455evb/u-boot.lds
+++ b/board/freescale/m54455evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds
index 5472689..877eaf2 100644
--- a/board/freescale/m547xevb/u-boot.lds
+++ b/board/freescale/m547xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds
index cf3f38c..33e054b 100644
--- a/board/freescale/m548xevb/u-boot.lds
+++ b/board/freescale/m548xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds
index 79eb7ac..3db5dc3 100644
--- a/board/freescale/mx31ads/u-boot.lds
+++ b/board/freescale/mx31ads/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds
index 87cb8e3..416761b 100644
--- a/board/gaisler/gr_cpci_ax2000/u-boot.lds
+++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds
index 2fb44aa..43faf26 100644
--- a/board/gaisler/gr_ep2s60/u-boot.lds
+++ b/board/gaisler/gr_ep2s60/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds
index 8719e97..14c631e 100644
--- a/board/gaisler/gr_xc3s_1500/u-boot.lds
+++ b/board/gaisler/gr_xc3s_1500/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds
index 33890b5..4766465 100644
--- a/board/gaisler/grsim/u-boot.lds
+++ b/board/gaisler/grsim/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds
index cf6e502..cbd4ed6 100644
--- a/board/gaisler/grsim_leon2/u-boot.lds
+++ b/board/gaisler/grsim_leon2/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
index 5bb6c62..1302eaa 100644
--- a/board/gen860t/u-boot-flashenv.lds
+++ b/board/gen860t/u-boot-flashenv.lds
@@ -75,6 +75,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
index be99b51..de57dd1 100644
--- a/board/gen860t/u-boot.lds
+++ b/board/gen860t/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
index 1d66a9b..45c56bb 100644
--- a/board/genietv/u-boot.lds
+++ b/board/genietv/u-boot.lds
@@ -84,6 +84,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/gth2/u-boot.lds b/board/gth2/u-boot.lds
index 9fc417f..c415594 100644
--- a/board/gth2/u-boot.lds
+++ b/board/gth2/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
index ca97115..8b90f6c 100644
--- a/board/hermes/u-boot.lds
+++ b/board/hermes/u-boot.lds
@@ -76,6 +76,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
index 1309f20..83d2dd4 100644
--- a/board/hymod/u-boot.lds
+++ b/board/hymod/u-boot.lds
@@ -114,6 +114,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
index 93c79a6..23d4405 100644
--- a/board/icu862/u-boot.lds
+++ b/board/icu862/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/idmr/u-boot.lds
+++ b/board/idmr/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/incaip/u-boot.lds
+++ b/board/incaip/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/ip860/u-boot.lds
+++ b/board/ip860/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
index 1e843eb..d0d9a37 100644
--- a/board/ivm/u-boot.lds
+++ b/board/ivm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds
index 6a017e3..da33f00 100644
--- a/board/korat/u-boot-F7FC.lds
+++ b/board/korat/u-boot-F7FC.lds
@@ -112,6 +112,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4k/u-boot.lds
+++ b/board/kup/kup4k/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4x/u-boot.lds
+++ b/board/kup/kup4x/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
index de0b355..9360839 100644
--- a/board/lantec/u-boot.lds
+++ b/board/lantec/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
index 8bf7324..7dfa157 100644
--- a/board/lwmon/u-boot.lds
+++ b/board/lwmon/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds
index 731cec9..d291d60 100644
--- a/board/manroland/uc100/u-boot.lds
+++ b/board/manroland/uc100/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds
index 57c37de..2445b97 100644
--- a/board/matrix_vision/mvsmr/u-boot.lds
+++ b/board/matrix_vision/mvsmr/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/mbx8xx/u-boot.lds
+++ b/board/mbx8xx/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/micronas/vct/u-boot.lds b/board/micronas/vct/u-boot.lds
index 3a05ef9..273d190 100644
--- a/board/micronas/vct/u-boot.lds
+++ b/board/micronas/vct/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	. = ALIGN(4);
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
index 9f9ddb8..a6cad6d 100644
--- a/board/ml2/u-boot.lds
+++ b/board/ml2/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
index dae2cfc..863468e 100644
--- a/board/mousse/u-boot.lds
+++ b/board/mousse/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
index 11624d2..4610de9 100644
--- a/board/mvblue/u-boot.lds
+++ b/board/mvblue/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netphone/u-boot.lds
+++ b/board/netphone/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta/u-boot.lds
+++ b/board/netta/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta2/u-boot.lds
+++ b/board/netta2/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netvia/u-boot.lds
+++ b/board/netvia/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/nx823/u-boot.lds
+++ b/board/nx823/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds
index 1aed197..bc610bd 100644
--- a/board/openrisc/openrisc-generic/u-boot.lds
+++ b/board/openrisc/openrisc-generic/u-boot.lds
@@ -30,6 +30,11 @@ SECTIONS
 	 .u_boot_cmd : { *(.u_boot_cmd) } > ram
 	 __u_boot_cmd_end = .;
 
+	 . = ALIGN(4);
+	 .u_boot_list : {
+	INCLUDE u-boot.lst;
+	 }
+
 	.rodata : {
 		*(.rodata);
 		*(.rodata.*)
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds
index bd0dee1..cac9188 100644
--- a/board/pb1x00/u-boot.lds
+++ b/board/pb1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds
index 9460b20..1f37e8b 100644
--- a/board/qemu-mips/u-boot.lds
+++ b/board/qemu-mips/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	__u_boot_cmd_start = .;
 	*(.u_boot_cmd)
 	__u_boot_cmd_end = .;
+
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
 	}
 
 	uboot_end_data = .;
diff --git a/board/qi/qi_lb60/u-boot.lds b/board/qi/qi_lb60/u-boot.lds
index 7317652..e1bb826 100644
--- a/board/qi/qi_lb60/u-boot.lds
+++ b/board/qi/qi_lb60/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 
diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/quantum/u-boot.lds
+++ b/board/quantum/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
index 2fa085a..181468d 100644
--- a/board/r360mpi/u-boot.lds
+++ b/board/r360mpi/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
index d943fb6..50c3eee 100644
--- a/board/rbc823/u-boot.lds
+++ b/board/rbc823/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds
index 38ebe88..cff6ff5 100644
--- a/board/renesas/sh7757lcr/u-boot.lds
+++ b/board/renesas/sh7757lcr/u-boot.lds
@@ -85,6 +85,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
index a729c52..ee651d4 100644
--- a/board/rsdproto/u-boot.lds
+++ b/board/rsdproto/u-boot.lds
@@ -101,6 +101,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/samsung/smdk5250/smdk5250-uboot-spl.lds b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
index d78dd77..c6e6414 100644
--- a/board/samsung/smdk5250/smdk5250-uboot-spl.lds
+++ b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
@@ -48,6 +48,11 @@ SECTIONS
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+	. = ALIGN(4);
+
 	/* Align .machine_param on 256 byte boundary for easier searching */
 	.machine_param ALIGN(0x100) : { *(.machine_param) } >.sram
 	. = ALIGN(4);
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds
index f162815..27693f0e 100644
--- a/board/samsung/smdk6400/u-boot-nand.lds
+++ b/board/samsung/smdk6400/u-boot-nand.lds
@@ -51,7 +51,12 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
-	. = ALIGN(4);
+	. = align(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = align(4);
 	.mmudata : { *(.mmudata) }
 
 	. = ALIGN(4);
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
index e382fd1..a4421a7 100644
--- a/board/sandpoint/u-boot.lds
+++ b/board/sandpoint/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
index 0e78e4f..3532d3b 100644
--- a/board/siemens/IAD210/u-boot.lds
+++ b/board/siemens/IAD210/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
index 02d1980..4153927 100644
--- a/board/sixnet/u-boot.lds
+++ b/board/sixnet/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
index 9ab248a..039597e 100644
--- a/board/snmc/qs850/u-boot.lds
+++ b/board/snmc/qs850/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/snmc/qs860t/u-boot.lds
+++ b/board/snmc/qs860t/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/spc1920/u-boot.lds
+++ b/board/spc1920/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
index a84e7fd..ada68f1 100644
--- a/board/spd8xx/u-boot.lds
+++ b/board/spd8xx/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/stx/stxxtc/u-boot.lds
+++ b/board/stx/stxxtc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
index c65f022..af83956 100644
--- a/board/svm_sc8xx/u-boot.lds
+++ b/board/svm_sc8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds
index 4f08be6..226cfc1 100644
--- a/board/tqc/tqm8xx/u-boot.lds
+++ b/board/tqc/tqm8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
index e62d53d..feb3870 100644
--- a/board/v37/u-boot.lds
+++ b/board/v37/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds
index 1958c2f..5c8edbd 100644
--- a/board/vpac270/u-boot-spl.lds
+++ b/board/vpac270/u-boot-spl.lds
@@ -57,6 +57,10 @@ SECTIONS
 		*(.data)
 	}
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
index 3470b43..e642a3a 100644
--- a/board/westel/amx860/u-boot.lds
+++ b/board/westel/amx860/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/examples/standalone/mips.lds b/examples/standalone/mips.lds
index 5f766ed..4540c7e 100644
--- a/examples/standalone/mips.lds
+++ b/examples/standalone/mips.lds
@@ -39,6 +39,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data  : { *(.data*) }
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = .;
 	_gp = ALIGN(16) + 0x7ff0;
 
diff --git a/examples/standalone/nds32.lds b/examples/standalone/nds32.lds
index 50b4c4b..9d25db1 100644
--- a/examples/standalone/nds32.lds
+++ b/examples/standalone/nds32.lds
@@ -36,6 +36,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(.data) }
 
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 
 	.got : {
diff --git a/examples/standalone/sparc.lds b/examples/standalone/sparc.lds
index 9733daa..7fddebc 100644
--- a/examples/standalone/sparc.lds
+++ b/examples/standalone/sparc.lds
@@ -46,6 +46,11 @@ SECTIONS
 	{
 		*(.data)
 	}
+
+	.u_boot_list : {
+		INCLUDE u-boot-spl.lst;
+	}
+
 	. = ALIGN(4);
 	__data_end = .;
 
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds
index d2b08f6..8332710 100644
--- a/nand_spl/board/freescale/mx31pdk/u-boot.lds
+++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds
index d2b08f6..8332710 100644
--- a/nand_spl/board/karo/tx25/u-boot.lds
+++ b/nand_spl/board/karo/tx25/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds
index 567f635..7ceae32 100644
--- a/nand_spl/board/samsung/smdk6400/u-boot.lds
+++ b/nand_spl/board/samsung/smdk6400/u-boot.lds
@@ -55,6 +55,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 	__rel_dyn_start = .;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24  1:21 ` [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-24 15:36   ` Joe Hershberger
  2012-09-24 16:04     ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 15:36 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Sun, Sep 23, 2012 at 8:21 PM, Marek Vasut <marex@denx.de> wrote:
> This patch adds essential components for generation of the contents of
> the linker section that is used by the linker-generated array. All of
> the contents is held in a separate file, u-boot.lst, which is generated
> at runtime just before U-Boot is linked.
>
> The purpose of this code is to especially generate the appropriate
> boundary symbols around each subsection in the section carrying the
> linker-generated arrays. Obviously, the interim linker code for actual
> placement of the variables into the section is generated too. The
> generated file, u-boot.lst, is included into u-boot.lds via the linker
> INCLUDE directive in u-boot.lds .
>
> Adjustments are made in the Makefile and spl/Makefile so that the
> u-boot.lds and u-boot-spl.lds depend on their respective .lst files.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>
> ---
>  Makefile     |   21 ++++++++++++++++++---
>  spl/Makefile |   14 +++++++++++++-
>  2 files changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index e3a27c6..592987a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -510,7 +510,10 @@ else
>  GEN_UBOOT = \
>                 UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
>                 sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
> -               cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
> +               UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
> +               sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
> +               cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
> +                       $$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
>                         --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
>                         -Map u-boot.map -o u-boot
>  endif
> @@ -543,8 +546,20 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
>  $(LDSCRIPT):   depend
>                 $(MAKE) -C $(dir $@) $(notdir $@)
>
> -$(obj)u-boot.lds: $(LDSCRIPT)
> -               $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
> +$(obj)u-boot.lst: $(LIBBOARD) $(LIBS)
> +       $(OBJDUMP) -h $(LIBBOARD) $(LIBS) | \
> +       sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
> +       sed 's/\.[^\.]\+$$//' | \
> +       sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
> +       sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
> +       LC_COLLATE=C sort -u | \
> +       sed 's/#//g' | \
> +       sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
> +               -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
> +               -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@

It might be nice to litter this with comments indicating what you're
accomplishing at each step.

> +
> +$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
> +               $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
>
>  nand_spl:      $(TIMESTAMP_FILE) $(VERSION_FILE) depend
>                 $(MAKE) -C nand_spl/board/$(BOARDDIR) all
> diff --git a/spl/Makefile b/spl/Makefile
> index d4cb668..545adfe 100644
> --- a/spl/Makefile
> +++ b/spl/Makefile
> @@ -148,7 +148,19 @@ $(START):  depend
>  $(LIBS):       depend
>         $(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
>
> -$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
> +$(obj)u-boot-spl.lst: $(LIBS)
> +       $(OBJDUMP) -h $(LIBS) | \
> +       sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
> +       sed 's/\.[^\.]\+$$//' | \
> +       sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
> +       sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
> +       LC_COLLATE=C sort -u | \
> +       sed 's/#//g' | \
> +       sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
> +               -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
> +               -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@

Could you not reuse this complicated logic by defining a make function
and then call + eval it?  Something like this:

define list_rule_template
$(1) : $(2)
        $(OBJDUMP) -h $^ | \
        sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
        sed 's/\.[^\.]\+$$//' | \
        sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
        sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
        LC_COLLATE=C sort -u | \
        sed 's/#//g' | \
        sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
                -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
                -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
endef
...
$(eval $(call list_rule_template,$(obj)u-boot.lst,$(LIBBOARD) $(LIBS)))
...
$(eval $(call list_rule_template,$(obj)u-boot-spl.lst,$(LIBS)))

> +
> +$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
>         $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@

-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24 15:36   ` Joe Hershberger
@ 2012-09-24 16:04     ` Marek Vasut
  2012-09-24 17:00       ` Joe Hershberger
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 16:04 UTC (permalink / raw)
  To: u-boot

Dear Joe Hershberger,

> Hi Marek,
[...]

It's a RFC, lemme explain:

> > -$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
> > +$(obj)u-boot-spl.lst: $(LIBS)
> > +       $(OBJDUMP) -h $(LIBS) | \

Dump the section headers in all object files

> > +       sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \

Filter only \.u_boot_list.* symbols

> > +       sed 's/\.[^\.]\+$$//' | \

Remove the last .[^.]$ from each line. That's because the last part behind . is 
the name of the variable, we don't need that for generation of subsection 
boundary symbols.

> > +       sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \

For each line in format .u_boot_list.x.y.z, generate a list of as such (list of 
substrings with . as separator):
.u_boot_list.x.y.z
.u_boot_list.x.y
.u_boot_list.x
.u_boot_list

> > +       sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \

For each line, print the line thrice, first time append \a at the end, second @ 
and third ~. Also replace each dot with .# . See [1] and look for the list under 
"The order_end Keyword" section.

> > +       LC_COLLATE=C sort -u | \

Sort the list, it's imperative to use the C collating here, because of [1]. This 
results in lines ending with \a float above all lines ending with either @ or 
continuing with further dots. Same goes for ~, which falls at the end.

> > +       sed 's/#//g' | \

Remove the hashes.

> > +       sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
> > +               -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
> > +               -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@

Replace \a with __start ... so this defines the subsection start marker, ~ with 
__end for subsection end marker and lines ending with @ with the 
SORT(subsection.*) so they catch the contents of subsection.

> Could you not reuse this complicated logic by defining a make function
> and then call + eval it?  Something like this:


Can you elaborate more? I don't quite get it ... :-(

> define list_rule_template
> $(1) : $(2)
>         $(OBJDUMP) -h $^ | \
>         sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
>         sed 's/\.[^\.]\+$$//' | \
>         sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
>         sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
>         LC_COLLATE=C sort -u | \
>         sed 's/#//g' | \
>         sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
>                 -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
>                 -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
> endef
> ...
> $(eval $(call list_rule_template,$(obj)u-boot.lst,$(LIBBOARD) $(LIBS)))
> ...
> $(eval $(call list_rule_template,$(obj)u-boot-spl.lst,$(LIBS)))
> 
> > +
> > +$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
> > 
> >         $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< >
> >         $@
> 
> -Joe

[1] http://pubs.opengroup.org/onlinepubs/007908799/xbd/locale.html

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays
  2012-09-24  1:21 ` [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays Marek Vasut
@ 2012-09-24 16:30   ` Joe Hershberger
  2012-09-24 16:52     ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 16:30 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Sun, Sep 23, 2012 at 8:21 PM, Marek Vasut <marex@denx.de> wrote:
> This patch adds support for linker-generated array. These arrays
> are a generalization of the U-Boot command declaration approach.
>
> Basically, the idea is to generate an array, where elements of the
> array are statically initialized at compiler time and each element
> is declared separatelly at different place. Such array though can
> later be accessed and used via special accessor.
>
> The actual implementation relies on placing any variable that is to
> represent an element of LG-array into subsection of .u_boot_list
> linker section . Once compiled, it is possible to dump all symbols
> placed in .u_boot_list section and generate appropriate bounds for
> each subsection of the .u_boot_list section. Each such subsection
> this contains .__start and .__end entries at the begining and end
> respecitively.
>
> This allows for simple run-time traversing of the array, since the
> symbols are properly defined.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>
> ---
>  include/linker_lists.h |  125 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 125 insertions(+)
>  create mode 100644 include/linker_lists.h
>
> diff --git a/include/linker_lists.h b/include/linker_lists.h
> new file mode 100644
> index 0000000..ffa95f6
> --- /dev/null
> +++ b/include/linker_lists.h
> @@ -0,0 +1,125 @@
> +/*
> + * include/linker_lists.h
> + *
> + * Implementation of linker-generated arrays
> + *
> + * Copyright (C) 2012 Marek Vasut <marex@denx.de>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + */
> +#ifndef __LINKER_LISTS_H__
> +#define __LINKER_LISTS_H__
> +
> +/**
> + * ll_entry_declare() - Declare linker-generated array entry
> + * _type:      Data type of the entry
> + * _name:      Name of the entry
> + * _section_u: Subsection of u_boot_list in which this entry is placed
> + *             (with underscores instead of dots, for name concatenation)
> + * _section_d: Subsection of u_boot_list in which this entry is placed
> + *             (with dots, for section concatenation)
> + *
> + * This macro declares a variable that is placed into a linker-generated
> + * array. This is a basic building block for more advanced use of linker-
> + * generated arrays. The user is expected to build their own macro wrapper
> + * around this one.
> + *
> + * A variable declared using this macro must be compile-time initialized
> + * and is as such placed into subsection of special section, .u_boot_list.
> + * The subsection is specified by the _section_[u,d] parameter, see below.
> + * The base name of the variable is _name, yet the actual variable is
> + * declared as concatenation of:
> + *
> + *   _u_boot_list_ + _section_u + _ + _name
> + *
> + * which ensures name uniqueness. This variable shall never be refered
> + * directly though.
> + *
> + * Special precaution must be made when using this macro:
> + *
> + * 1) The _type must not contain the "static" keyword, otherwise the entry
> + *    is not generated.
> + * 2) The _section_u and _section_d variables must match, the only difference
> + *    is that in _section_u is every dot "." character present in _section_d
> + *    replaced by a single underscore "_" character in _section_u. The actual
> + *    purpose of these parameters is to select proper subsection in the global
> + *    .u_boot_list section.
> + * 3) In case a section is declared that contains some array elements AND a
> + *    subsection of this section is declared and contains some elements, it is
> + *    imperative that the elements are of the same type.
> + * 4) In case an outer section is declared that contains some array elements
> + *    AND am inner subsection of this section is declared and contains some
> + *    elements, then when traversing the outer section, even the elements of
> + *    the inner sections are present in the array.
> + *
> + * Example of usage:
> + *
> + * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
> + *     .x = 3,
> + *     .y = 4,
> + * };
> + */
> +#define ll_entry_declare(_type, _name, _section_u, _section_d)         \
> +       _type _u_boot_list_##_section_u##_##_name __attribute__((       \
> +                       unused, aligned(4),                             \
> +                       section(".u_boot_list."#_section_d"."#_name))); \
> +       _type _u_boot_list_##_section_u##_##_name

Why repeat the "_type _u_boot_list_##_section_u##_##_name" instead of
just leaving the semicolon off after the __attribute__()?

> +
> +/**
> + * ll_entry_start() - Point to first entry of linker-generated array
> + * _type:      Data type of the entry
> + * _section_u: Subsection of u_boot_list in which this entry is placed
> + *             (with underscores instead of dots)
> + *
> + * This function returns (_type *) pointer to the very first entry of a
> + * linker-generated array placed into subsection of .u_boot_list section
> + * specified by _section_u argument.
> + *
> + * Example of usage:
> + *
> + * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
> + */
> +#define ll_entry_start(_type, _section_u)                              \
> +       ({                                                              \
> +               extern _type _u_boot_list_##_section_u##__start;        \
> +               _type *_ll_result = &_u_boot_list_##_section_u##__start;\
> +               _ll_result;                                             \
> +       })

Tricky.  I didn't realize this gcc extension existed.

> +
> +/**
> + * ll_entry_count() - Return the number of elements in linker-generated array
> + * _type:      Data type of the entry
> + * _section_u: Subsection of u_boot_list in which this entry is placed
> + *             (with underscores instead of dots)
> + *
> + * This function returns the number of elements of a linker-generated array
> + * placed into subsection of .u_boot_list section specified by _section_u
> + * argument. The result is of an unsigned int type.
> + *
> + * Example of usage:
> + *
> + * int i;
> + * const unsigned int count = ll_entry_count(struct my_sub_cmd, cmd_sub);
> + * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
> + * for (i = 0; i < count; i++) {
> + *     printf("Entry %i, x=%i y=%i\n", i, msc->x, msc->y);
> + *     msc++;
> + * }
> + */
> +#define ll_entry_count(_type, _section_u)                              \
> +       ({                                                              \
> +               extern _type _u_boot_list_##_section_u##__start;        \
> +               extern _type _u_boot_list_##_section_u##__end;          \
> +               unsigned int _ll_result =                               \
> +                       &_u_boot_list_##_section_u##__end -             \
> +                       &_u_boot_list_##_section_u##__start;            \
> +               _ll_result;                                             \
> +       })
> +
> +#endif /* __LINKER_LISTS_H__ */
> --
> 1.7.10.4
>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24  1:21 ` [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files Marek Vasut
@ 2012-09-24 16:34   ` Joe Hershberger
  2012-09-24 16:53     ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 16:34 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Sun, Sep 23, 2012 at 8:21 PM, Marek Vasut <marex@denx.de> wrote:
> Add section for the linker-generated lists into all possible linker
> files, so that everyone can easily use these lists. This is mostly
> a mechanical adjustment.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>
> ---
>  arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +++++
>  arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 ++++
>  arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 ++++
>  arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +++++
>  arch/arm/cpu/ixp/u-boot.lds                      |    5 +++++
>  arch/arm/cpu/u-boot.lds                          |    5 +++++
>  arch/avr32/cpu/u-boot.lds                        |    5 +++++
>  arch/blackfin/cpu/u-boot.lds                     |    4 ++++
>  arch/microblaze/cpu/u-boot.lds                   |    5 +++++
>  arch/nds32/cpu/n1213/u-boot.lds                  |    5 +++++
>  arch/nios2/cpu/u-boot.lds                        |    5 +++++
>  arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +++++
>  arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +++++
>  arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +++
>  arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 ++++
>  arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 ++++
>  arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +++++
>  arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +++++
>  arch/sandbox/cpu/u-boot.lds                      |    5 +++++
>  arch/sh/cpu/sh2/u-boot.lds                       |    4 ++++
>  arch/sh/cpu/sh3/u-boot.lds                       |    4 ++++
>  arch/sh/cpu/sh4/u-boot.lds                       |    4 ++++
>  arch/x86/cpu/u-boot.lds                          |    5 +++++
>  board/BuS/eb_cpu5282/u-boot.lds                  |    5 +++++
>  board/LEOX/elpt860/u-boot.lds                    |    5 +++++
>  board/RPXClassic/u-boot.lds                      |    5 +++++
>  board/RPXlite/u-boot.lds                         |    5 +++++
>  board/RPXlite_dw/u-boot.lds                      |    5 +++++
>  board/RRvision/u-boot.lds                        |    5 +++++
>  board/actux1/u-boot.lds                          |    5 +++++
>  board/actux2/u-boot.lds                          |    5 +++++
>  board/actux3/u-boot.lds                          |    5 +++++
>  board/adder/u-boot.lds                           |    5 +++++
>  board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 ++++
>  board/altera/nios2-generic/u-boot.lds            |    5 +++++
>  board/amcc/acadia/u-boot-nand.lds                |    3 +++
>  board/amcc/bamboo/u-boot-nand.lds                |    3 +++
>  board/amcc/canyonlands/u-boot-nand.lds           |    3 +++
>  board/amcc/kilauea/u-boot-nand.lds               |    3 +++
>  board/amcc/sequoia/u-boot-nand.lds               |    3 +++
>  board/amcc/sequoia/u-boot-ram.lds                |    3 +++
>  board/amirix/ap1000/u-boot.lds                   |    5 +++++
>  board/astro/mcf5373l/u-boot.lds                  |    5 +++++
>  board/c2mon/u-boot.lds                           |    5 +++++
>  board/cobra5272/u-boot.lds                       |    5 +++++
>  board/cogent/u-boot.lds                          |    5 +++++
>  board/dave/PPChameleonEVB/u-boot.lds             |    5 +++++
>  board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++++++
>  board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +++++
>  board/dbau1x00/u-boot.lds                        |    5 +++++
>  board/dvlhost/u-boot.lds                         |    5 +++++
>  board/eltec/mhpc/u-boot.lds                      |    5 +++++
>  board/emk/top860/u-boot.lds                      |    5 +++++
>  board/ep88x/u-boot.lds                           |    5 +++++
>  board/esd/dasa_sim/u-boot.lds                    |    5 +++++
>  board/esd/pmc440/u-boot-nand.lds                 |    3 +++
>  board/esd/tasreg/u-boot.lds                      |    5 +++++
>  board/esteem192e/u-boot.lds                      |    5 +++++
>  board/etx094/u-boot.lds                          |    5 +++++
>  board/evb64260/u-boot.lds                        |    5 +++++
>  board/fads/u-boot.lds                            |    5 +++++
>  board/flagadm/u-boot.lds                         |    5 +++++
>  board/freescale/m5208evbe/u-boot.lds             |    5 +++++
>  board/freescale/m52277evb/u-boot.lds             |    5 +++++
>  board/freescale/m5235evb/u-boot.lds              |    5 +++++
>  board/freescale/m5249evb/u-boot.lds              |    5 +++++
>  board/freescale/m5253demo/u-boot.lds             |    5 +++++
>  board/freescale/m5253evbe/u-boot.lds             |    5 +++++
>  board/freescale/m5271evb/u-boot.lds              |    5 +++++
>  board/freescale/m5272c3/u-boot.lds               |    5 +++++
>  board/freescale/m5275evb/u-boot.lds              |    5 +++++
>  board/freescale/m5282evb/u-boot.lds              |    5 +++++
>  board/freescale/m53017evb/u-boot.lds             |    5 +++++
>  board/freescale/m5329evb/u-boot.lds              |    5 +++++
>  board/freescale/m5373evb/u-boot.lds              |    5 +++++
>  board/freescale/m54451evb/u-boot.lds             |    5 +++++
>  board/freescale/m54455evb/u-boot.lds             |    5 +++++
>  board/freescale/m547xevb/u-boot.lds              |    5 +++++
>  board/freescale/m548xevb/u-boot.lds              |    5 +++++
>  board/freescale/mx31ads/u-boot.lds               |    5 +++++
>  board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +++++
>  board/gaisler/gr_ep2s60/u-boot.lds               |    5 +++++
>  board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +++++
>  board/gaisler/grsim/u-boot.lds                   |    5 +++++
>  board/gaisler/grsim_leon2/u-boot.lds             |    5 +++++
>  board/gen860t/u-boot-flashenv.lds                |    4 ++++
>  board/gen860t/u-boot.lds                         |    5 +++++
>  board/genietv/u-boot.lds                         |    5 +++++
>  board/gth2/u-boot.lds                            |    5 +++++
>  board/hermes/u-boot.lds                          |    5 +++++
>  board/hymod/u-boot.lds                           |    5 +++++
>  board/icu862/u-boot.lds                          |    5 +++++
>  board/idmr/u-boot.lds                            |    5 +++++
>  board/incaip/u-boot.lds                          |    5 +++++
>  board/ip860/u-boot.lds                           |    5 +++++
>  board/ivm/u-boot.lds                             |    5 +++++
>  board/korat/u-boot-F7FC.lds                      |    3 +++
>  board/kup/kup4k/u-boot.lds                       |    5 +++++
>  board/kup/kup4x/u-boot.lds                       |    5 +++++
>  board/lantec/u-boot.lds                          |    5 +++++
>  board/lwmon/u-boot.lds                           |    5 +++++
>  board/manroland/uc100/u-boot.lds                 |    5 +++++
>  board/matrix_vision/mvsmr/u-boot.lds             |    5 +++++
>  board/mbx8xx/u-boot.lds                          |    5 +++++
>  board/micronas/vct/u-boot.lds                    |    5 +++++
>  board/ml2/u-boot.lds                             |    5 +++++
>  board/mousse/u-boot.lds                          |    5 +++++
>  board/mvblue/u-boot.lds                          |    5 +++++
>  board/netphone/u-boot.lds                        |    5 +++++
>  board/netta/u-boot.lds                           |    5 +++++
>  board/netta2/u-boot.lds                          |    5 +++++
>  board/netvia/u-boot.lds                          |    5 +++++
>  board/nx823/u-boot.lds                           |    5 +++++
>  board/openrisc/openrisc-generic/u-boot.lds       |    5 +++++
>  board/pb1x00/u-boot.lds                          |    5 +++++
>  board/qemu-mips/u-boot.lds                       |    5 +++++
>  board/qi/qi_lb60/u-boot.lds                      |    5 +++++
>  board/quantum/u-boot.lds                         |    5 +++++
>  board/r360mpi/u-boot.lds                         |    5 +++++
>  board/rbc823/u-boot.lds                          |    5 +++++
>  board/renesas/sh7757lcr/u-boot.lds               |    4 ++++
>  board/rsdproto/u-boot.lds                        |    5 +++++
>  board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +++++
>  board/samsung/smdk6400/u-boot-nand.lds           |    7 ++++++-
>  board/sandpoint/u-boot.lds                       |    5 +++++
>  board/siemens/IAD210/u-boot.lds                  |    5 +++++
>  board/sixnet/u-boot.lds                          |    5 +++++
>  board/snmc/qs850/u-boot.lds                      |    5 +++++
>  board/snmc/qs860t/u-boot.lds                     |    5 +++++
>  board/spc1920/u-boot.lds                         |    5 +++++
>  board/spd8xx/u-boot.lds                          |    5 +++++
>  board/stx/stxxtc/u-boot.lds                      |    5 +++++
>  board/svm_sc8xx/u-boot.lds                       |    5 +++++
>  board/tqc/tqm8xx/u-boot.lds                      |    5 +++++
>  board/v37/u-boot.lds                             |    5 +++++
>  board/vpac270/u-boot-spl.lds                     |    4 ++++
>  board/westel/amx860/u-boot.lds                   |    5 +++++
>  examples/standalone/mips.lds                     |    4 ++++
>  examples/standalone/nds32.lds                    |    4 ++++
>  examples/standalone/sparc.lds                    |    5 +++++
>  nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +++++
>  nand_spl/board/karo/tx25/u-boot.lds              |    5 +++++
>  nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +++++
>  150 files changed, 720 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
> index dc6ba34..6ad9169 100644
> --- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
> +++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
> @@ -53,6 +53,11 @@ SECTIONS
>         __u_boot_cmd_end = .;

While you're touching all these files, why not replace the
__u_boot_cmd* implementation with this as well.  There's no need to
leave a special case in there as well is there?

>
>         . = ALIGN(4);
> +       .u_boot_list : {
> +       INCLUDE u-boot.lst;
> +       }
> +
> +       . = ALIGN(4);
>         __bss_start = .;
>         .bss : { *(.bss) }
>         __bss_end__ = .;

-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays
  2012-09-24 16:30   ` Joe Hershberger
@ 2012-09-24 16:52     ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 16:52 UTC (permalink / raw)
  To: u-boot

Dear Joe Hershberger,

[...]

> > +#define ll_entry_declare(_type, _name, _section_u, _section_d)         \
> > +       _type _u_boot_list_##_section_u##_##_name __attribute__((       \
> > +                       unused, aligned(4),                             \
> > +                       section(".u_boot_list."#_section_d"."#_name))); \
> > +       _type _u_boot_list_##_section_u##_##_name
> 
> Why repeat the "_type _u_boot_list_##_section_u##_##_name" instead of
> just leaving the semicolon off after the __attribute__()?

Good idea. Do you like my documentation fairytail btw ? :p

> > +
> > +/**
> > + * ll_entry_start() - Point to first entry of linker-generated array
> > + * _type:      Data type of the entry
> > + * _section_u: Subsection of u_boot_list in which this entry is placed
> > + *             (with underscores instead of dots)
> > + *
> > + * This function returns (_type *) pointer to the very first entry of a
> > + * linker-generated array placed into subsection of .u_boot_list section
> > + * specified by _section_u argument.
> > + *
> > + * Example of usage:
> > + *
> > + * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
> > + */
> > +#define ll_entry_start(_type, _section_u)                              \
> > +       ({                                                              \
> > +               extern _type _u_boot_list_##_section_u##__start;        \
> > +               _type *_ll_result = &_u_boot_list_##_section_u##__start;\
> > +               _ll_result;                                             \
> > +       })
> 
> Tricky.  I didn't realize this gcc extension existed.

All this is a horrible pile of tricks

[...]

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 16:34   ` Joe Hershberger
@ 2012-09-24 16:53     ` Marek Vasut
  2012-09-24 17:06       ` Tom Rini
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 16:53 UTC (permalink / raw)
  To: u-boot

Dear Joe Hershberger,

[...]

> While you're touching all these files, why not replace the
> __u_boot_cmd* implementation with this as well.  There's no need to
> leave a special case in there as well is there?

Not in the first stab, it can be indeed done later, but now I'd like to avoid 
breakage. Besides, replacing u_boot_cmd would break bisectability, I want to 
preserve it and rather apply more patches slowly than less patches recklessly.

> >         . = ALIGN(4);
> > 
> > +       .u_boot_list : {
> > +       INCLUDE u-boot.lst;
> > +       }
> > +
> > +       . = ALIGN(4);
> > 
> >         __bss_start = .;
> >         .bss : { *(.bss) }
> >         __bss_end__ = .;
> 
> -Joe

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24 16:04     ` Marek Vasut
@ 2012-09-24 17:00       ` Joe Hershberger
  2012-09-24 17:08         ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 17:00 UTC (permalink / raw)
  To: u-boot

Hi Marex,

On Mon, Sep 24, 2012 at 11:04 AM, Marek Vasut <marex@denx.de> wrote:
> Dear Joe Hershberger,

[...]

>> Could you not reuse this complicated logic by defining a make function
>> and then call + eval it?  Something like this:
>
>
> Can you elaborate more? I don't quite get it ... :-(

Consolidate the complicated rule that only differs by target and
sources into a single place.  I also replaced your duplication of the
sources in the rule with "$^"

>> define list_rule_template
>> $(1) : $(2)
>>         $(OBJDUMP) -h $^ | \
>>         sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
>>         sed 's/\.[^\.]\+$$//' | \
>>         sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
>>         sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
>>         LC_COLLATE=C sort -u | \
>>         sed 's/#//g' | \
>>         sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
>>                 -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
>>                 -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
>> endef
>> ...

Then you instantiate the rule at each place in the Makefile where you
need it, passing the target and sources:

>> $(eval $(call list_rule_template,$(obj)u-boot.lst,$(LIBBOARD) $(LIBS)))
>> ...
>> $(eval $(call list_rule_template,$(obj)u-boot-spl.lst,$(LIBS)))
>>
>> > +
>> > +$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
>> >
>> >         $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< >
>> >         $@
>>

-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 16:53     ` Marek Vasut
@ 2012-09-24 17:06       ` Tom Rini
  2012-09-24 17:09         ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Tom Rini @ 2012-09-24 17:06 UTC (permalink / raw)
  To: u-boot

On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
> Dear Joe Hershberger,
> 
> [...]
> 
> > While you're touching all these files, why not replace the
> > __u_boot_cmd* implementation with this as well.  There's no need to
> > leave a special case in there as well is there?
> 
> Not in the first stab, it can be indeed done later, but now I'd like to avoid 
> breakage. Besides, replacing u_boot_cmd would break bisectability, I want to 
> preserve it and rather apply more patches slowly than less patches recklessly.

Agreed.  We need to work hard to make sure we do lots of incremental
steps here to make sure breakage can be bisected.  Making use of the
'exec' step in git rebase is very helpful for making sure this is the
case too, btw.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120924/3f1864fc/attachment.pgp>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24 17:00       ` Joe Hershberger
@ 2012-09-24 17:08         ` Marek Vasut
  2012-09-24 17:43           ` Joe Hershberger
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 17:08 UTC (permalink / raw)
  To: u-boot

Dear Joe Hershberger,

> Hi Marex,
> 
> On Mon, Sep 24, 2012 at 11:04 AM, Marek Vasut <marex@denx.de> wrote:
> > Dear Joe Hershberger,
> 
> [...]
> 
> >> Could you not reuse this complicated logic by defining a make function
> > 
> >> and then call + eval it?  Something like this:
> > Can you elaborate more? I don't quite get it ... :-(
> 
> Consolidate the complicated rule that only differs by target and
> sources into a single place.  I also replaced your duplication of the
> sources in the rule with "$^"

Ok, I get it ... and where do I put this consolidation ?

> >> define list_rule_template
> >> $(1) : $(2)
> >> 
> >>         $(OBJDUMP) -h $^ | \
> >>         sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
> >>         sed 's/\.[^\.]\+$$//' | \
> >>         sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
> >>         sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
> >>         LC_COLLATE=C sort -u | \
> >>         sed 's/#//g' | \
> >>         sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
> >>         
> >>                 -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
> >>                 -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
> >> 
> >> endef
> >> ...
> 
> Then you instantiate the rule at each place in the Makefile where you
> 
> need it, passing the target and sources:
> >> $(eval $(call list_rule_template,$(obj)u-boot.lst,$(LIBBOARD) $(LIBS)))
> >> ...
> >> $(eval $(call list_rule_template,$(obj)u-boot-spl.lst,$(LIBS)))
> >> 
> >> > +
> >> > +$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
> >> > 
> >> >         $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $<
> >> >         > $@
> 
> -Joe

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 17:06       ` Tom Rini
@ 2012-09-24 17:09         ` Marek Vasut
  2012-09-24 17:18           ` Tom Rini
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 17:09 UTC (permalink / raw)
  To: u-boot

Dear Tom Rini,

> On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
> > Dear Joe Hershberger,
> > 
> > [...]
> > 
> > > While you're touching all these files, why not replace the
> > > __u_boot_cmd* implementation with this as well.  There's no need to
> > > leave a special case in there as well is there?
> > 
> > Not in the first stab, it can be indeed done later, but now I'd like to
> > avoid breakage. Besides, replacing u_boot_cmd would break bisectability,
> > I want to preserve it and rather apply more patches slowly than less
> > patches recklessly.
> 
> Agreed.  We need to work hard to make sure we do lots of incremental
> steps here to make sure breakage can be bisected.

+1 (actually +inf.)

> Making use of the
> 'exec' step in git rebase is very helpful for making sure this is the
> case too, btw.

exec step ?

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 17:09         ` Marek Vasut
@ 2012-09-24 17:18           ` Tom Rini
  2012-09-24 17:23             ` Joe Hershberger
  2012-09-24 17:25             ` Marek Vasut
  0 siblings, 2 replies; 47+ messages in thread
From: Tom Rini @ 2012-09-24 17:18 UTC (permalink / raw)
  To: u-boot

On Mon, Sep 24, 2012 at 07:09:35PM +0200, Marek Vasut wrote:
> Dear Tom Rini,
> 
> > On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
> > > Dear Joe Hershberger,
> > > 
> > > [...]
> > > 
> > > > While you're touching all these files, why not replace the
> > > > __u_boot_cmd* implementation with this as well.  There's no need to
> > > > leave a special case in there as well is there?
> > > 
> > > Not in the first stab, it can be indeed done later, but now I'd like to
> > > avoid breakage. Besides, replacing u_boot_cmd would break bisectability,
> > > I want to preserve it and rather apply more patches slowly than less
> > > patches recklessly.
> > 
> > Agreed.  We need to work hard to make sure we do lots of incremental
> > steps here to make sure breakage can be bisected.
> 
> +1 (actually +inf.)
> 
> > Making use of the
> > 'exec' step in git rebase is very helpful for making sure this is the
> > case too, btw.
> 
> exec step ?

Yes, in 'git rebase -i' you can insert exec lines after each commit such
as:
pick 12345 Commit 1
exec script-that-runs-MAKEALL.sh
pick 6789a Commit 2
exec script-that-runs-MAKEALL.sh

I use my MAKEALL wrapper (http://pastebin.com/fNhG4iCd but I've updated
a bit more since I uploaded that) and --log `git rev-parse --short HEAD`
so I can see what's gone on for every step in a series.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120924/192ce0c0/attachment.pgp>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 17:18           ` Tom Rini
@ 2012-09-24 17:23             ` Joe Hershberger
  2012-09-24 18:07               ` Tom Rini
  2012-09-24 17:25             ` Marek Vasut
  1 sibling, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 17:23 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On Mon, Sep 24, 2012 at 12:18 PM, Tom Rini <trini@ti.com> wrote:
> On Mon, Sep 24, 2012 at 07:09:35PM +0200, Marek Vasut wrote:
>> Dear Tom Rini,
>>
>> > On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
>> > > Dear Joe Hershberger,
>> > >
>> > > [...]
>> > >
>> > > > While you're touching all these files, why not replace the
>> > > > __u_boot_cmd* implementation with this as well.  There's no need to
>> > > > leave a special case in there as well is there?
>> > >
>> > > Not in the first stab, it can be indeed done later, but now I'd like to
>> > > avoid breakage. Besides, replacing u_boot_cmd would break bisectability,
>> > > I want to preserve it and rather apply more patches slowly than less
>> > > patches recklessly.
>> >
>> > Agreed.  We need to work hard to make sure we do lots of incremental
>> > steps here to make sure breakage can be bisected.
>>
>> +1 (actually +inf.)
>>
>> > Making use of the
>> > 'exec' step in git rebase is very helpful for making sure this is the
>> > case too, btw.
>>
>> exec step ?
>
> Yes, in 'git rebase -i' you can insert exec lines after each commit such
> as:
> pick 12345 Commit 1
> exec script-that-runs-MAKEALL.sh
> pick 6789a Commit 2
> exec script-that-runs-MAKEALL.sh
>
> I use my MAKEALL wrapper (http://pastebin.com/fNhG4iCd but I've updated
> a bit more since I uploaded that) and --log `git rev-parse --short HEAD`
> so I can see what's gone on for every step in a series.

That's interesting.  I've been using git-test-sequence for a similar
purpose.  It doesn't require the exec steps to be added manually,
though.

http://dustin.github.com/2010/03/28/git-test-sequence.html

-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 17:18           ` Tom Rini
  2012-09-24 17:23             ` Joe Hershberger
@ 2012-09-24 17:25             ` Marek Vasut
  1 sibling, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 17:25 UTC (permalink / raw)
  To: u-boot

Dear Tom Rini,

> On Mon, Sep 24, 2012 at 07:09:35PM +0200, Marek Vasut wrote:
> > Dear Tom Rini,
> > 
> > > On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
> > > > Dear Joe Hershberger,
> > > > 
> > > > [...]
> > > > 
> > > > > While you're touching all these files, why not replace the
> > > > > __u_boot_cmd* implementation with this as well.  There's no need to
> > > > > leave a special case in there as well is there?
> > > > 
> > > > Not in the first stab, it can be indeed done later, but now I'd like
> > > > to avoid breakage. Besides, replacing u_boot_cmd would break
> > > > bisectability, I want to preserve it and rather apply more patches
> > > > slowly than less patches recklessly.
> > > 
> > > Agreed.  We need to work hard to make sure we do lots of incremental
> > > steps here to make sure breakage can be bisected.
> > 
> > +1 (actually +inf.)
> > 
> > > Making use of the
> > > 'exec' step in git rebase is very helpful for making sure this is the
> > > case too, btw.
> > 
> > exec step ?
> 
> Yes, in 'git rebase -i' you can insert exec lines after each commit such
> as:
> pick 12345 Commit 1
> exec script-that-runs-MAKEALL.sh
> pick 6789a Commit 2
> exec script-that-runs-MAKEALL.sh
> 
> I use my MAKEALL wrapper (http://pastebin.com/fNhG4iCd but I've updated
> a bit more since I uploaded that) and --log `git rev-parse --short HEAD`
> so I can see what's gone on for every step in a series.

I guess you have one hell of a badass computer cluster then ;-)

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays
  2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
                   ` (2 preceding siblings ...)
  2012-09-24  1:21 ` [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files Marek Vasut
@ 2012-09-24 17:29 ` Tom Rini
  2012-09-24 17:42   ` Marek Vasut
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
  4 siblings, 1 reply; 47+ messages in thread
From: Tom Rini @ 2012-09-24 17:29 UTC (permalink / raw)
  To: u-boot

On Mon, Sep 24, 2012 at 03:21:54AM +0200, Marek Vasut wrote:

> This is a first stab at the linker-generated array. Basically, this
> concept is a generic abstraction of how u_boot_cmd works today. The
> patch 2/3 contains a huge pile of documentation which should clarify
> most of the questions.
> 
> NOTE: Compile-testing in progress, but it works with m28evk and sandbox
>       for now.
> 
> Marek Vasut (3):
>   common: Add symbol handling for generic lists into Makefile
>   common: Implement support for linker-generated arrays
>   common: Add .u_boot_list into all linker files

So... it's a generic version of the u_boot_cmd infrastructure.  Do you
start using this in DM?  Would it be a lot of work to make patch #4 be
converting u_boot_cmd?  Or do you just want to say, once folks are happy
with this of course, that the first bits of DM will depend on this
series being merged?  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120924/bb8d200c/attachment.pgp>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays
  2012-09-24 17:29 ` [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Tom Rini
@ 2012-09-24 17:42   ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-24 17:42 UTC (permalink / raw)
  To: u-boot

Dear Tom Rini,

> On Mon, Sep 24, 2012 at 03:21:54AM +0200, Marek Vasut wrote:
> > This is a first stab at the linker-generated array. Basically, this
> > concept is a generic abstraction of how u_boot_cmd works today. The
> > patch 2/3 contains a huge pile of documentation which should clarify
> > most of the questions.
> > 
> > NOTE: Compile-testing in progress, but it works with m28evk and sandbox
> > 
> >       for now.
> > 
> > Marek Vasut (3):
> >   common: Add symbol handling for generic lists into Makefile
> >   common: Implement support for linker-generated arrays
> >   common: Add .u_boot_list into all linker files
> 
> So... it's a generic version of the u_boot_cmd infrastructure.  Do you
> start using this in DM?

Exactly

> Would it be a lot of work to make patch #4 be
> converting u_boot_cmd?

I don't want to. I want to do it in a separate patch. One reason is because this 
might be used where u_boot_cmd is not. Other reason is that this will eventually 
replace u_boot_cmd, but I want that in a separate patch (I do have that in 
works).

> Or do you just want to say, once folks are happy
> with this of course, that the first bits of DM will depend on this
> series being merged?

DM will depend on this, yes

> Thanks!

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile
  2012-09-24 17:08         ` Marek Vasut
@ 2012-09-24 17:43           ` Joe Hershberger
  0 siblings, 0 replies; 47+ messages in thread
From: Joe Hershberger @ 2012-09-24 17:43 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Mon, Sep 24, 2012 at 12:08 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Joe Hershberger,
>
>> Hi Marex,
>>
>> On Mon, Sep 24, 2012 at 11:04 AM, Marek Vasut <marex@denx.de> wrote:
>> > Dear Joe Hershberger,
>>
>> [...]
>>
>> >> Could you not reuse this complicated logic by defining a make function
>> >
>> >> and then call + eval it?  Something like this:
>> > Can you elaborate more? I don't quite get it ... :-(
>>
>> Consolidate the complicated rule that only differs by target and
>> sources into a single place.  I also replaced your duplication of the
>> sources in the rule with "$^"
>
> Ok, I get it ... and where do I put this consolidation ?

I would just put it in tools/linker_list.mk and include it in the Makefiles.

>> >> define list_rule_template
>> >> $(1) : $(2)
>> >>
>> >>         $(OBJDUMP) -h $^ | \
>> >>         sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$/\1/p' | \
>> >>         sed 's/\.[^\.]\+$$//' | \
>> >>         sed -n ':s /^.\+$$/ { p;s/^\(.*\)\.[^\.]*$$/\1/;b s }' | \
>> >>         sed -n 's/\./.#/g;h;s/$$/\a/p;g;s/$$/@/p;g;s/$$/~/p;' | \
>> >>         LC_COLLATE=C sort -u | \
>> >>         sed 's/#//g' | \
>> >>         sed -n -e '/\a$$/ { s/\./_/g;s/\a$$/__start = .;/p; }'\
>> >>
>> >>                 -e '/~$$/ { s/\./_/g;s/~$$/__end = .;/p; }'\
>> >>                 -e '/@$$/ { s/\(.*\)@$$/*(SORT(\1.*));/p }' >$@
>> >>
>> >> endef
>> >> ...
>>
>> Then you instantiate the rule at each place in the Makefile where you
>>
>> need it, passing the target and sources:
>> >> $(eval $(call list_rule_template,$(obj)u-boot.lst,$(LIBBOARD) $(LIBS)))
>> >> ...
>> >> $(eval $(call list_rule_template,$(obj)u-boot-spl.lst,$(LIBS)))
>> >>
>> >> > +
>> >> > +$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot-spl.lst depend
>> >> >
>> >> >         $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $<
>> >> >         > $@

-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files
  2012-09-24 17:23             ` Joe Hershberger
@ 2012-09-24 18:07               ` Tom Rini
  0 siblings, 0 replies; 47+ messages in thread
From: Tom Rini @ 2012-09-24 18:07 UTC (permalink / raw)
  To: u-boot

On Mon, Sep 24, 2012 at 12:23:10PM -0500, Joe Hershberger wrote:
> Hi Tom,
> 
> On Mon, Sep 24, 2012 at 12:18 PM, Tom Rini <trini@ti.com> wrote:
> > On Mon, Sep 24, 2012 at 07:09:35PM +0200, Marek Vasut wrote:
> >> Dear Tom Rini,
> >>
> >> > On Mon, Sep 24, 2012 at 06:53:19PM +0200, Marek Vasut wrote:
> >> > > Dear Joe Hershberger,
> >> > >
> >> > > [...]
> >> > >
> >> > > > While you're touching all these files, why not replace the
> >> > > > __u_boot_cmd* implementation with this as well.  There's no need to
> >> > > > leave a special case in there as well is there?
> >> > >
> >> > > Not in the first stab, it can be indeed done later, but now I'd like to
> >> > > avoid breakage. Besides, replacing u_boot_cmd would break bisectability,
> >> > > I want to preserve it and rather apply more patches slowly than less
> >> > > patches recklessly.
> >> >
> >> > Agreed.  We need to work hard to make sure we do lots of incremental
> >> > steps here to make sure breakage can be bisected.
> >>
> >> +1 (actually +inf.)
> >>
> >> > Making use of the
> >> > 'exec' step in git rebase is very helpful for making sure this is the
> >> > case too, btw.
> >>
> >> exec step ?
> >
> > Yes, in 'git rebase -i' you can insert exec lines after each commit such
> > as:
> > pick 12345 Commit 1
> > exec script-that-runs-MAKEALL.sh
> > pick 6789a Commit 2
> > exec script-that-runs-MAKEALL.sh
> >
> > I use my MAKEALL wrapper (http://pastebin.com/fNhG4iCd but I've updated
> > a bit more since I uploaded that) and --log `git rev-parse --short HEAD`
> > so I can see what's gone on for every step in a series.
> 
> That's interesting.  I've been using git-test-sequence for a similar
> purpose.  It doesn't require the exec steps to be added manually,
> though.
> 
> http://dustin.github.com/2010/03/28/git-test-sequence.html

+1 to git test-squence as well.  I think the reason I didn't use that
after a while was that MAKEALL didn't non-zero exit on warnings.  Of
course since I've moved on to logging all output from each step to
verfiy by hand, test-sequence would also work great here.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120924/f38620ad/attachment.pgp>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [RFC] [PATCH 0/3 v2] Linker-generated arrays
  2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
                   ` (3 preceding siblings ...)
  2012-09-24 17:29 ` [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Tom Rini
@ 2012-09-25 16:11 ` Marek Vasut
  2012-09-25 16:11   ` [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile Marek Vasut
                     ` (3 more replies)
  4 siblings, 4 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 16:11 UTC (permalink / raw)
  To: u-boot

This is a first stab at the linker-generated array. Basically, this
concept is a generic abstraction of how u_boot_cmd works today. The
patch 2/3 contains a huge pile of documentation which should clarify
most of the questions.

Marek Vasut (3):
  common: Add symbol handling for generic lists into Makefile
  common: Implement support for linker-generated arrays
  common: Add .u_boot_list into all linker files

 Makefile                                         |   10 +-
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 +
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 +
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +
 arch/arm/cpu/ixp/u-boot.lds                      |    5 +
 arch/arm/cpu/u-boot.lds                          |    5 +
 arch/avr32/cpu/u-boot.lds                        |    5 +
 arch/blackfin/cpu/u-boot.lds                     |    4 +
 arch/microblaze/cpu/u-boot.lds                   |    5 +
 arch/nds32/cpu/n1213/u-boot.lds                  |    5 +
 arch/nios2/cpu/u-boot.lds                        |    5 +
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 +
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 +
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +
 arch/sandbox/cpu/u-boot.lds                      |    5 +
 arch/sh/cpu/sh2/u-boot.lds                       |    4 +
 arch/sh/cpu/sh3/u-boot.lds                       |    4 +
 arch/sh/cpu/sh4/u-boot.lds                       |    4 +
 arch/x86/cpu/u-boot.lds                          |    5 +
 board/BuS/eb_cpu5282/u-boot.lds                  |    5 +
 board/LEOX/elpt860/u-boot.lds                    |    5 +
 board/RPXClassic/u-boot.lds                      |    5 +
 board/RPXlite/u-boot.lds                         |    5 +
 board/RPXlite_dw/u-boot.lds                      |    5 +
 board/RRvision/u-boot.lds                        |    5 +
 board/actux1/u-boot.lds                          |    5 +
 board/actux2/u-boot.lds                          |    5 +
 board/actux3/u-boot.lds                          |    5 +
 board/adder/u-boot.lds                           |    5 +
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 +
 board/altera/nios2-generic/u-boot.lds            |    5 +
 board/amcc/acadia/u-boot-nand.lds                |    3 +
 board/amcc/bamboo/u-boot-nand.lds                |    3 +
 board/amcc/canyonlands/u-boot-nand.lds           |    3 +
 board/amcc/kilauea/u-boot-nand.lds               |    3 +
 board/amcc/sequoia/u-boot-nand.lds               |    3 +
 board/amcc/sequoia/u-boot-ram.lds                |    3 +
 board/amirix/ap1000/u-boot.lds                   |    5 +
 board/astro/mcf5373l/u-boot.lds                  |    5 +
 board/c2mon/u-boot.lds                           |    5 +
 board/cobra5272/u-boot.lds                       |    5 +
 board/cogent/u-boot.lds                          |    5 +
 board/dave/PPChameleonEVB/u-boot.lds             |    5 +
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +
 board/dbau1x00/u-boot.lds                        |    5 +
 board/dvlhost/u-boot.lds                         |    5 +
 board/eltec/mhpc/u-boot.lds                      |    5 +
 board/emk/top860/u-boot.lds                      |    5 +
 board/ep88x/u-boot.lds                           |    5 +
 board/esd/dasa_sim/u-boot.lds                    |    5 +
 board/esd/pmc440/u-boot-nand.lds                 |    3 +
 board/esd/tasreg/u-boot.lds                      |    5 +
 board/esteem192e/u-boot.lds                      |    5 +
 board/etx094/u-boot.lds                          |    5 +
 board/evb64260/u-boot.lds                        |    5 +
 board/fads/u-boot.lds                            |    5 +
 board/flagadm/u-boot.lds                         |    5 +
 board/freescale/m5208evbe/u-boot.lds             |    5 +
 board/freescale/m52277evb/u-boot.lds             |    5 +
 board/freescale/m5235evb/u-boot.lds              |    5 +
 board/freescale/m5249evb/u-boot.lds              |    5 +
 board/freescale/m5253demo/u-boot.lds             |    5 +
 board/freescale/m5253evbe/u-boot.lds             |    5 +
 board/freescale/m5271evb/u-boot.lds              |    5 +
 board/freescale/m5272c3/u-boot.lds               |    5 +
 board/freescale/m5275evb/u-boot.lds              |    5 +
 board/freescale/m5282evb/u-boot.lds              |    5 +
 board/freescale/m53017evb/u-boot.lds             |    5 +
 board/freescale/m5329evb/u-boot.lds              |    5 +
 board/freescale/m5373evb/u-boot.lds              |    5 +
 board/freescale/m54451evb/u-boot.lds             |    5 +
 board/freescale/m54455evb/u-boot.lds             |    5 +
 board/freescale/m547xevb/u-boot.lds              |    5 +
 board/freescale/m548xevb/u-boot.lds              |    5 +
 board/freescale/mx31ads/u-boot.lds               |    5 +
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +
 board/gaisler/gr_ep2s60/u-boot.lds               |    5 +
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +
 board/gaisler/grsim/u-boot.lds                   |    5 +
 board/gaisler/grsim_leon2/u-boot.lds             |    5 +
 board/gen860t/u-boot-flashenv.lds                |    4 +
 board/gen860t/u-boot.lds                         |    5 +
 board/genietv/u-boot.lds                         |    5 +
 board/gth2/u-boot.lds                            |    5 +
 board/hermes/u-boot.lds                          |    5 +
 board/hymod/u-boot.lds                           |    5 +
 board/icu862/u-boot.lds                          |    5 +
 board/idmr/u-boot.lds                            |    5 +
 board/incaip/u-boot.lds                          |    5 +
 board/ip860/u-boot.lds                           |    5 +
 board/ivm/u-boot.lds                             |    5 +
 board/korat/u-boot-F7FC.lds                      |    3 +
 board/kup/kup4k/u-boot.lds                       |    5 +
 board/kup/kup4x/u-boot.lds                       |    5 +
 board/lantec/u-boot.lds                          |    5 +
 board/lwmon/u-boot.lds                           |    5 +
 board/manroland/uc100/u-boot.lds                 |    5 +
 board/matrix_vision/mvsmr/u-boot.lds             |    5 +
 board/mbx8xx/u-boot.lds                          |    5 +
 board/micronas/vct/u-boot.lds                    |    5 +
 board/ml2/u-boot.lds                             |    5 +
 board/mousse/u-boot.lds                          |    5 +
 board/mvblue/u-boot.lds                          |    5 +
 board/netphone/u-boot.lds                        |    5 +
 board/netta/u-boot.lds                           |    5 +
 board/netta2/u-boot.lds                          |    5 +
 board/netvia/u-boot.lds                          |    5 +
 board/nx823/u-boot.lds                           |    5 +
 board/openrisc/openrisc-generic/u-boot.lds       |    5 +
 board/pb1x00/u-boot.lds                          |    5 +
 board/qemu-mips/u-boot.lds                       |    5 +
 board/qi/qi_lb60/u-boot.lds                      |    5 +
 board/quantum/u-boot.lds                         |    5 +
 board/r360mpi/u-boot.lds                         |    5 +
 board/rbc823/u-boot.lds                          |    5 +
 board/renesas/sh7757lcr/u-boot.lds               |    4 +
 board/rsdproto/u-boot.lds                        |    5 +
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +
 board/samsung/smdk6400/u-boot-nand.lds           |    7 +-
 board/sandpoint/u-boot.lds                       |    5 +
 board/siemens/IAD210/u-boot.lds                  |    5 +
 board/sixnet/u-boot.lds                          |    5 +
 board/snmc/qs850/u-boot.lds                      |    5 +
 board/snmc/qs860t/u-boot.lds                     |    5 +
 board/spc1920/u-boot.lds                         |    5 +
 board/spd8xx/u-boot.lds                          |    5 +
 board/stx/stxxtc/u-boot.lds                      |    5 +
 board/svm_sc8xx/u-boot.lds                       |    5 +
 board/tqc/tqm8xx/u-boot.lds                      |    5 +
 board/v37/u-boot.lds                             |    5 +
 board/vpac270/u-boot-spl.lds                     |    4 +
 board/westel/amx860/u-boot.lds                   |    5 +
 config.mk                                        |    2 +
 examples/standalone/mips.lds                     |    4 +
 examples/standalone/nds32.lds                    |    4 +
 examples/standalone/sparc.lds                    |    5 +
 helper.mk                                        |   62 +++++++++++
 include/linker_lists.h                           |  124 ++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile      |    6 +-
 nand_spl/board/freescale/mpc8569mds/Makefile     |    6 +-
 nand_spl/board/freescale/mpc8572ds/Makefile      |    6 +-
 nand_spl/board/freescale/mx31pdk/Makefile        |    6 +-
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +
 nand_spl/board/freescale/p1010rdb/Makefile       |    6 +-
 nand_spl/board/freescale/p1023rds/Makefile       |    6 +-
 nand_spl/board/freescale/p1_p2_rdb/Makefile      |    6 +-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile   |    6 +-
 nand_spl/board/karo/tx25/Makefile                |    6 +-
 nand_spl/board/karo/tx25/u-boot.lds              |    5 +
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +
 spl/Makefile                                     |    3 +-
 164 files changed, 953 insertions(+), 23 deletions(-)
 create mode 100644 helper.mk
 create mode 100644 include/linker_lists.h

Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
@ 2012-09-25 16:11   ` Marek Vasut
  2012-09-25 20:12     ` Wolfgang Denk
  2012-09-25 16:11   ` [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays Marek Vasut
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 16:11 UTC (permalink / raw)
  To: u-boot

This patch adds essential components for generation of the contents of
the linker section that is used by the linker-generated array. All of
the contents is held in a separate file, u-boot.lst, which is generated
at runtime just before U-Boot is linked.

The purpose of this code is to especially generate the appropriate
boundary symbols around each subsection in the section carrying the
linker-generated arrays. Obviously, the interim linker code for actual
placement of the variables into the section is generated too. The
generated file, u-boot.lst, is included into u-boot.lds via the linker
INCLUDE directive in u-boot.lds .

Adjustments are made in the Makefile and spl/Makefile so that the
u-boot.lds and u-boot-spl.lds depend on their respective .lst files.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 Makefile                                       |   10 ++--
 config.mk                                      |    2 +
 helper.mk                                      |   62 ++++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile    |    6 ++-
 nand_spl/board/freescale/mpc8569mds/Makefile   |    6 ++-
 nand_spl/board/freescale/mpc8572ds/Makefile    |    6 ++-
 nand_spl/board/freescale/mx31pdk/Makefile      |    6 ++-
 nand_spl/board/freescale/p1010rdb/Makefile     |    6 ++-
 nand_spl/board/freescale/p1023rds/Makefile     |    6 ++-
 nand_spl/board/freescale/p1_p2_rdb/Makefile    |    6 ++-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile |    6 ++-
 nand_spl/board/karo/tx25/Makefile              |    6 ++-
 spl/Makefile                                   |    3 +-
 13 files changed, 109 insertions(+), 22 deletions(-)
 create mode 100644 helper.mk

V2: - Move all the regex goo that generates u-boot.lst into helper.mk
    - Implant the eval call idea from Joe
    - Fix the nand spl boards where the builds failed.
    - Continue my documentation quest
      (no, I'm not planning to become a writer ;-) )

diff --git a/Makefile b/Makefile
index e3a27c6..864432e 100644
--- a/Makefile
+++ b/Makefile
@@ -510,7 +510,10 @@ else
 GEN_UBOOT = \
 		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
 		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
+		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
+		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
 endif
@@ -543,8 +546,9 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
 $(LDSCRIPT):	depend
 		$(MAKE) -C $(dir $@) $(notdir $@)
 
-$(obj)u-boot.lds: $(LDSCRIPT)
-		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
+$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
+		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
diff --git a/config.mk b/config.mk
index c3822a2..d2ed5bf 100644
--- a/config.mk
+++ b/config.mk
@@ -23,6 +23,8 @@
 
 #########################################################################
 
+include $(TOPDIR)/helper.mk
+
 ifeq ($(CURDIR),$(SRCTREE))
 dir :=
 else
diff --git a/helper.mk b/helper.mk
new file mode 100644
index 0000000..e9177ff
--- /dev/null
+++ b/helper.mk
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2012 Marek Vasut <marex@denx.de>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+#########################################################################
+
+##
+# make_u_boot_list - Generate contents of u_boot_list section
+# 1:		The name of the resulting file (usually u-boot.lst)
+# 2:		Files to analyze for possible u_boot_list entries
+#
+# This function generates the contents of the u_boot_list section,
+# including all the border symbols for it's subsections. The operation
+# of this function is as follows, numbering goes per lines:
+#
+# 1) Dump the ELF header sections from all files supplied via $(2)
+# 2) Filter out all other stuff that does not belong into .u_boot_list
+#    section. Also, fix up the lines so that the resulting output is
+#    is in format ".u_boot_list.*".
+# 3) Remove the last .something$, since that only contains the name
+#    of the variable to be put into a subsection. This name is irelevant
+#    for generation of border symbols, thus of no interest, remove it.
+# 4) Take each line and for every dot "." in that line, print the whole
+#    line until that dot "." . This is important so that we have all
+#    parent border symbols generated as well.
+# 5) Load every line and firstly append "\a" at the end and print the
+#    line. Next, append "@" at the end and print the line. Finally,
+#    append "~" at the end of line. This will make sense in conjunction
+#    with 6) and 7).
+# 6) Sort the lines. It is imperative to use LC_COLLATE=C here because
+#    with this, the "\a" symbol is first and "~" symbol is last. Any
+#    other symbols fall inbetween. Symbols like "@", which marks the
+#    end of current line (representing current section) and ".", which
+#    means the line continues and thus represents subsection.
+# 7) With such ordering, all lines ending with "\a" will float at the
+#    begining of all lines with the same prefix. Thus it is easy to
+#    replace "\a" with __start and make it the __start border symbol.
+#    Very similarly for "~", which will be always at the bottom and so
+#    can be replaced by "__end" and made into the __end border symbol.
+#    Finally, every line ending with "@" symbol will be transformed
+#    into " *(SORT(${line}*)); " format, which in the linker parlance
+#    will allow it to trap all symbols relevant to the subsection.
+#
+define make_u_boot_list
+$(1): $(2)
+	$(OBJDUMP) -h $(2) | \
+	sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/p' | \
+	sed 's/\.[^\.]\+$$$$//' | \
+	sed -n ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
+	sed -n 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed -n -e '/\a$$$$/ { s/\./_/g;s/\a$$$$/__start = .;/p; }'\
+		-e '/~$$$$/ { s/\./_/g;s/~$$$$/__end = .;/p; }'\
+		-e '/@$$$$/ { s/\(.*\)@$$$$/*(SORT(\1.*));/p }' > $(1)
+endef
diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile
index 43da3df..fb6bcd6 100644
--- a/nand_spl/board/freescale/mpc8536ds/Makefile
+++ b/nand_spl/board/freescale/mpc8536ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile
index 43da3df..fb6bcd6 100644
--- a/nand_spl/board/freescale/mpc8569mds/Makefile
+++ b/nand_spl/board/freescale/mpc8569mds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile
index 43da3df..fb6bcd6 100644
--- a/nand_spl/board/freescale/mpc8572ds/Makefile
+++ b/nand_spl/board/freescale/mpc8572ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile
index 87784d2..62a7adf 100644
--- a/nand_spl/board/freescale/mx31pdk/Makefile
+++ b/nand_spl/board/freescale/mx31pdk/Makefile
@@ -6,6 +6,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -36,8 +37,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile
index 8d240ea..5d49ec9 100644
--- a/nand_spl/board/freescale/p1010rdb/Makefile
+++ b/nand_spl/board/freescale/p1010rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile
index 168e868..37fda4a 100644
--- a/nand_spl/board/freescale/p1023rds/Makefile
+++ b/nand_spl/board/freescale/p1023rds/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -56,8 +57,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
index 43da3df..fb6bcd6 100644
--- a/nand_spl/board/freescale/p1_p2_rdb/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
index 475cc49..f9effd2 100644
--- a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile
index 0336346..2ac1b7c 100644
--- a/nand_spl/board/karo/tx25/Makefile
+++ b/nand_spl/board/karo/tx25/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -57,8 +58,9 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/spl/Makefile b/spl/Makefile
index d4cb668..f3e74b9 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -148,7 +148,8 @@ $(START):	depend
 $(LIBS):	depend
 	$(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
 
-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBS)))
+$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot.lst depend
 	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@
 
 depend:	$(obj).depend
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
  2012-09-25 16:11   ` [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-25 16:11   ` Marek Vasut
  2012-09-25 20:16     ` Wolfgang Denk
  2012-09-29  1:45     ` Joe Hershberger
  2012-09-25 16:12   ` [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files Marek Vasut
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  3 siblings, 2 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 16:11 UTC (permalink / raw)
  To: u-boot

This patch adds support for linker-generated array. These arrays
are a generalization of the U-Boot command declaration approach.

Basically, the idea is to generate an array, where elements of the
array are statically initialized at compiler time and each element
is declared separatelly at different place. Such array though can
later be accessed and used via special accessor.

The actual implementation relies on placing any variable that is to
represent an element of LG-array into subsection of .u_boot_list
linker section . Once compiled, it is possible to dump all symbols
placed in .u_boot_list section and generate appropriate bounds for
each subsection of the .u_boot_list section. Each such subsection
this contains .__start and .__end entries at the begining and end
respecitively.

This allows for simple run-time traversing of the array, since the
symbols are properly defined.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 include/linker_lists.h |  124 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 124 insertions(+)
 create mode 100644 include/linker_lists.h

V2: Don't define the variable twice in ll_entry_declare()

diff --git a/include/linker_lists.h b/include/linker_lists.h
new file mode 100644
index 0000000..27ae40b
--- /dev/null
+++ b/include/linker_lists.h
@@ -0,0 +1,124 @@
+/*
+ * include/linker_lists.h
+ *
+ * Implementation of linker-generated arrays
+ *
+ * Copyright (C) 2012 Marek Vasut <marex@denx.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+#ifndef __LINKER_LISTS_H__
+#define __LINKER_LISTS_H__
+
+/**
+ * ll_entry_declare() - Declare linker-generated array entry
+ * _type:	Data type of the entry
+ * _name:	Name of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots, for name concatenation)
+ * _section_d:	Subsection of u_boot_list in which this entry is placed
+ *		(with dots, for section concatenation)
+ *
+ * This macro declares a variable that is placed into a linker-generated
+ * array. This is a basic building block for more advanced use of linker-
+ * generated arrays. The user is expected to build their own macro wrapper
+ * around this one.
+ *
+ * A variable declared using this macro must be compile-time initialized
+ * and is as such placed into subsection of special section, .u_boot_list.
+ * The subsection is specified by the _section_[u,d] parameter, see below.
+ * The base name of the variable is _name, yet the actual variable is
+ * declared as concatenation of:
+ *
+ *   _u_boot_list_ + _section_u + _ + _name
+ *
+ * which ensures name uniqueness. This variable shall never be refered
+ * directly though.
+ *
+ * Special precaution must be made when using this macro:
+ *
+ * 1) The _type must not contain the "static" keyword, otherwise the entry
+ *    is not generated.
+ * 2) The _section_u and _section_d variables must match, the only difference
+ *    is that in _section_u is every dot "." character present in _section_d
+ *    replaced by a single underscore "_" character in _section_u. The actual
+ *    purpose of these parameters is to select proper subsection in the global
+ *    .u_boot_list section.
+ * 3) In case a section is declared that contains some array elements AND a
+ *    subsection of this section is declared and contains some elements, it is
+ *    imperative that the elements are of the same type.
+ * 4) In case an outer section is declared that contains some array elements
+ *    AND am inner subsection of this section is declared and contains some
+ *    elements, then when traversing the outer section, even the elements of
+ *    the inner sections are present in the array.
+ *
+ * Example of usage:
+ *
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ *	.x = 3,
+ *	.y = 4,
+ * };
+ */
+#define ll_entry_declare(_type, _name, _section_u, _section_d)		\
+	_type _u_boot_list_##_section_u##_##_name __attribute__((	\
+			unused,	aligned(4),				\
+			section(".u_boot_list."#_section_d"."#_name)))
+
+/**
+ * ll_entry_start() - Point to first entry of linker-generated array
+ * _type:	Data type of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns (_type *) pointer to the very first entry of a
+ * linker-generated array placed into subsection of .u_boot_list section
+ * specified by _section_u argument.
+ *
+ * Example of usage:
+ *
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ */
+#define ll_entry_start(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		_type *_ll_result = &_u_boot_list_##_section_u##__start;\
+		_ll_result;						\
+	})
+
+/**
+ * ll_entry_count() - Return the number of elements in linker-generated array
+ * _type:	Data type of the entry
+ * _section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns the number of elements of a linker-generated array
+ * placed into subsection of .u_boot_list section specified by _section_u
+ * argument. The result is of an unsigned int type.
+ *
+ * Example of usage:
+ *
+ * int i;
+ * const unsigned int count = ll_entry_count(struct my_sub_cmd, cmd_sub);
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ * for (i = 0; i < count; i++) {
+ *	printf("Entry %i, x=%i y=%i\n", i, msc->x, msc->y);
+ *	msc++;
+ * }
+ */
+#define ll_entry_count(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		extern _type _u_boot_list_##_section_u##__end;		\
+		unsigned int _ll_result =				\
+			&_u_boot_list_##_section_u##__end -		\
+			&_u_boot_list_##_section_u##__start;		\
+		_ll_result;						\
+	})
+
+#endif	/* __LINKER_LISTS_H__ */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
  2012-09-25 16:11   ` [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile Marek Vasut
  2012-09-25 16:11   ` [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays Marek Vasut
@ 2012-09-25 16:12   ` Marek Vasut
  2012-09-25 16:43     ` Otavio Salvador
  2012-09-25 20:17     ` Wolfgang Denk
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  3 siblings, 2 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 16:12 UTC (permalink / raw)
  To: u-boot

Add section for the linker-generated lists into all possible linker
files, so that everyone can easily use these lists. This is mostly
a mechanical adjustment.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +++++
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 ++++
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 ++++
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +++++
 arch/arm/cpu/ixp/u-boot.lds                      |    5 +++++
 arch/arm/cpu/u-boot.lds                          |    5 +++++
 arch/avr32/cpu/u-boot.lds                        |    5 +++++
 arch/blackfin/cpu/u-boot.lds                     |    4 ++++
 arch/microblaze/cpu/u-boot.lds                   |    5 +++++
 arch/nds32/cpu/n1213/u-boot.lds                  |    5 +++++
 arch/nios2/cpu/u-boot.lds                        |    5 +++++
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +++++
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +++++
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +++
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +++++
 arch/sandbox/cpu/u-boot.lds                      |    5 +++++
 arch/sh/cpu/sh2/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh3/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh4/u-boot.lds                       |    4 ++++
 arch/x86/cpu/u-boot.lds                          |    5 +++++
 board/BuS/eb_cpu5282/u-boot.lds                  |    5 +++++
 board/LEOX/elpt860/u-boot.lds                    |    5 +++++
 board/RPXClassic/u-boot.lds                      |    5 +++++
 board/RPXlite/u-boot.lds                         |    5 +++++
 board/RPXlite_dw/u-boot.lds                      |    5 +++++
 board/RRvision/u-boot.lds                        |    5 +++++
 board/actux1/u-boot.lds                          |    5 +++++
 board/actux2/u-boot.lds                          |    5 +++++
 board/actux3/u-boot.lds                          |    5 +++++
 board/adder/u-boot.lds                           |    5 +++++
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 ++++
 board/altera/nios2-generic/u-boot.lds            |    5 +++++
 board/amcc/acadia/u-boot-nand.lds                |    3 +++
 board/amcc/bamboo/u-boot-nand.lds                |    3 +++
 board/amcc/canyonlands/u-boot-nand.lds           |    3 +++
 board/amcc/kilauea/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-ram.lds                |    3 +++
 board/amirix/ap1000/u-boot.lds                   |    5 +++++
 board/astro/mcf5373l/u-boot.lds                  |    5 +++++
 board/c2mon/u-boot.lds                           |    5 +++++
 board/cobra5272/u-boot.lds                       |    5 +++++
 board/cogent/u-boot.lds                          |    5 +++++
 board/dave/PPChameleonEVB/u-boot.lds             |    5 +++++
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++++++
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +++++
 board/dbau1x00/u-boot.lds                        |    5 +++++
 board/dvlhost/u-boot.lds                         |    5 +++++
 board/eltec/mhpc/u-boot.lds                      |    5 +++++
 board/emk/top860/u-boot.lds                      |    5 +++++
 board/ep88x/u-boot.lds                           |    5 +++++
 board/esd/dasa_sim/u-boot.lds                    |    5 +++++
 board/esd/pmc440/u-boot-nand.lds                 |    3 +++
 board/esd/tasreg/u-boot.lds                      |    5 +++++
 board/esteem192e/u-boot.lds                      |    5 +++++
 board/etx094/u-boot.lds                          |    5 +++++
 board/evb64260/u-boot.lds                        |    5 +++++
 board/fads/u-boot.lds                            |    5 +++++
 board/flagadm/u-boot.lds                         |    5 +++++
 board/freescale/m5208evbe/u-boot.lds             |    5 +++++
 board/freescale/m52277evb/u-boot.lds             |    5 +++++
 board/freescale/m5235evb/u-boot.lds              |    5 +++++
 board/freescale/m5249evb/u-boot.lds              |    5 +++++
 board/freescale/m5253demo/u-boot.lds             |    5 +++++
 board/freescale/m5253evbe/u-boot.lds             |    5 +++++
 board/freescale/m5271evb/u-boot.lds              |    5 +++++
 board/freescale/m5272c3/u-boot.lds               |    5 +++++
 board/freescale/m5275evb/u-boot.lds              |    5 +++++
 board/freescale/m5282evb/u-boot.lds              |    5 +++++
 board/freescale/m53017evb/u-boot.lds             |    5 +++++
 board/freescale/m5329evb/u-boot.lds              |    5 +++++
 board/freescale/m5373evb/u-boot.lds              |    5 +++++
 board/freescale/m54451evb/u-boot.lds             |    5 +++++
 board/freescale/m54455evb/u-boot.lds             |    5 +++++
 board/freescale/m547xevb/u-boot.lds              |    5 +++++
 board/freescale/m548xevb/u-boot.lds              |    5 +++++
 board/freescale/mx31ads/u-boot.lds               |    5 +++++
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +++++
 board/gaisler/gr_ep2s60/u-boot.lds               |    5 +++++
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +++++
 board/gaisler/grsim/u-boot.lds                   |    5 +++++
 board/gaisler/grsim_leon2/u-boot.lds             |    5 +++++
 board/gen860t/u-boot-flashenv.lds                |    4 ++++
 board/gen860t/u-boot.lds                         |    5 +++++
 board/genietv/u-boot.lds                         |    5 +++++
 board/gth2/u-boot.lds                            |    5 +++++
 board/hermes/u-boot.lds                          |    5 +++++
 board/hymod/u-boot.lds                           |    5 +++++
 board/icu862/u-boot.lds                          |    5 +++++
 board/idmr/u-boot.lds                            |    5 +++++
 board/incaip/u-boot.lds                          |    5 +++++
 board/ip860/u-boot.lds                           |    5 +++++
 board/ivm/u-boot.lds                             |    5 +++++
 board/korat/u-boot-F7FC.lds                      |    3 +++
 board/kup/kup4k/u-boot.lds                       |    5 +++++
 board/kup/kup4x/u-boot.lds                       |    5 +++++
 board/lantec/u-boot.lds                          |    5 +++++
 board/lwmon/u-boot.lds                           |    5 +++++
 board/manroland/uc100/u-boot.lds                 |    5 +++++
 board/matrix_vision/mvsmr/u-boot.lds             |    5 +++++
 board/mbx8xx/u-boot.lds                          |    5 +++++
 board/micronas/vct/u-boot.lds                    |    5 +++++
 board/ml2/u-boot.lds                             |    5 +++++
 board/mousse/u-boot.lds                          |    5 +++++
 board/mvblue/u-boot.lds                          |    5 +++++
 board/netphone/u-boot.lds                        |    5 +++++
 board/netta/u-boot.lds                           |    5 +++++
 board/netta2/u-boot.lds                          |    5 +++++
 board/netvia/u-boot.lds                          |    5 +++++
 board/nx823/u-boot.lds                           |    5 +++++
 board/openrisc/openrisc-generic/u-boot.lds       |    5 +++++
 board/pb1x00/u-boot.lds                          |    5 +++++
 board/qemu-mips/u-boot.lds                       |    5 +++++
 board/qi/qi_lb60/u-boot.lds                      |    5 +++++
 board/quantum/u-boot.lds                         |    5 +++++
 board/r360mpi/u-boot.lds                         |    5 +++++
 board/rbc823/u-boot.lds                          |    5 +++++
 board/renesas/sh7757lcr/u-boot.lds               |    4 ++++
 board/rsdproto/u-boot.lds                        |    5 +++++
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +++++
 board/samsung/smdk6400/u-boot-nand.lds           |    7 ++++++-
 board/sandpoint/u-boot.lds                       |    5 +++++
 board/siemens/IAD210/u-boot.lds                  |    5 +++++
 board/sixnet/u-boot.lds                          |    5 +++++
 board/snmc/qs850/u-boot.lds                      |    5 +++++
 board/snmc/qs860t/u-boot.lds                     |    5 +++++
 board/spc1920/u-boot.lds                         |    5 +++++
 board/spd8xx/u-boot.lds                          |    5 +++++
 board/stx/stxxtc/u-boot.lds                      |    5 +++++
 board/svm_sc8xx/u-boot.lds                       |    5 +++++
 board/tqc/tqm8xx/u-boot.lds                      |    5 +++++
 board/v37/u-boot.lds                             |    5 +++++
 board/vpac270/u-boot-spl.lds                     |    4 ++++
 board/westel/amx860/u-boot.lds                   |    5 +++++
 examples/standalone/mips.lds                     |    4 ++++
 examples/standalone/nds32.lds                    |    4 ++++
 examples/standalone/sparc.lds                    |    5 +++++
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +++++
 nand_spl/board/karo/tx25/u-boot.lds              |    5 +++++
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +++++
 150 files changed, 720 insertions(+), 1 deletion(-)

V2: Fix a few board linker files where the compile failed.

diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index dc6ba34..6ad9169 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__bss_start = .;
 	.bss : { *(.bss) }
 	__bss_end__ = .;
diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
index f8ea38c..dd12607 100644
--- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
index afd3381..65f80c2 100644
--- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
index 8867e06..b1b357f 100644
--- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
@@ -47,6 +47,11 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 	__image_copy_end = .;
 	_end = .;
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index 7199de4..e08f10b 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index e49ca0c..18eaf73 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	__image_copy_end = .;
 
diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
index 0e532f2..5aef19b 100644
--- a/arch/avr32/cpu/u-boot.lds
+++ b/arch/avr32/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	_got = .;
 	.got : {
 		*(.got)
diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds
index 2b8d285..be70d81 100644
--- a/arch/blackfin/cpu/u-boot.lds
+++ b/arch/blackfin/cpu/u-boot.lds
@@ -119,6 +119,10 @@ SECTIONS
 		___u_boot_cmd_end = .;
 	} >ram_data
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >ram_data
+
 	.text_l1 :
 	{
 		. = ALIGN(4);
diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
index d033a28..86773b5e 100644
--- a/arch/microblaze/cpu/u-boot.lds
+++ b/arch/microblaze/cpu/u-boot.lds
@@ -56,6 +56,11 @@ SECTIONS
 		__u_boot_cmd_start = .;
 		*(.u_boot_cmd)
 		__u_boot_cmd_end = .;
+
+		. = ALIGN(4);
+		.u_boot_list : {
+	INCLUDE u-boot.lst;
+		}
 	}
 
 	.bss ALIGN(0x4):
diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds
index 1903420..48d5b90 100644
--- a/arch/nds32/cpu/n1213/u-boot.lds
+++ b/arch/nds32/cpu/n1213/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	_end = .;
 
diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds
index 4856bd3..33cd0e2 100644
--- a/arch/nios2/cpu/u-boot.lds
+++ b/arch/nios2/cpu/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
index 24823cd..049ae63 100644
--- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds
+++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds
index 7a4d927..d93c097 100644
--- a/arch/powerpc/cpu/mpc512x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc512x/u-boot.lds
@@ -61,6 +61,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds
index e02b213..2fbc379 100644
--- a/arch/powerpc/cpu/mpc5xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
index 0c6c54e..1574767 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
@@ -70,6 +70,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
index 5dcaec1..52755e6 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds
index 39bb42e..222f907 100644
--- a/arch/powerpc/cpu/mpc8220/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8220/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds
index b30ce76..bb16926 100644
--- a/arch/powerpc/cpu/mpc824x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc824x/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds
index 60b71ec..722d7fb 100644
--- a/arch/powerpc/cpu/mpc8260/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8260/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds
index 2f4b9ad..416bc07 100644
--- a/arch/powerpc/cpu/mpc83xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
index 8ba9399..5563b5f 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
@@ -74,6 +74,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
index 668158f..6c8ae9a 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
@@ -53,6 +53,10 @@ SECTIONS
 	}
 	_edata  =  .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(8);
 	__init_begin = .;
 	__init_end = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds
index efe34b7..009214b 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds
index 121e529..e3b19d4 100644
--- a/arch/powerpc/cpu/mpc86xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds
index 2466b79..005ec61 100644
--- a/arch/powerpc/cpu/ppc4xx/u-boot.lds
+++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds
@@ -82,6 +82,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
index 9960138..0a37657 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -28,6 +28,11 @@ SECTIONS
 	_u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	__u_boot_sandbox_option_start = .;
 	_u_boot_sandbox_getopt : { *(.u_boot_sandbox_getopt) }
 	__u_boot_sandbox_option_end = .;
diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds
index b86a822..2331152 100644
--- a/arch/sh/cpu/sh2/u-boot.lds
+++ b/arch/sh/cpu/sh2/u-boot.lds
@@ -80,6 +80,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 
 	PROVIDE (bss_start = .);
diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds
index 9bf8503..9d99434 100644
--- a/arch/sh/cpu/sh3/u-boot.lds
+++ b/arch/sh/cpu/sh3/u-boot.lds
@@ -86,6 +86,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds
index d9c70bc..8702c9e 100644
--- a/arch/sh/cpu/sh4/u-boot.lds
+++ b/arch/sh/cpu/sh4/u-boot.lds
@@ -83,6 +83,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds
index fe28030..aa2b653 100644
--- a/arch/x86/cpu/u-boot.lds
+++ b/arch/x86/cpu/u-boot.lds
@@ -39,6 +39,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
 
 	. = ALIGN(4);
diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/BuS/eb_cpu5282/u-boot.lds
+++ b/board/BuS/eb_cpu5282/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
index 5aaf6b3..d85943c 100644
--- a/board/LEOX/elpt860/u-boot.lds
+++ b/board/LEOX/elpt860/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXClassic/u-boot.lds
+++ b/board/RPXClassic/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite/u-boot.lds
+++ b/board/RPXlite/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite_dw/u-boot.lds
+++ b/board/RPXlite_dw/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
index 8385373..3c2c708 100644
--- a/board/RRvision/u-boot.lds
+++ b/board/RRvision/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds
index 9dbaa6f..e5d59db 100644
--- a/board/actux1/u-boot.lds
+++ b/board/actux1/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds
index 3575ed9..09bb7ab 100644
--- a/board/actux2/u-boot.lds
+++ b/board/actux2/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds
index 35aab29..71b6791 100644
--- a/board/actux3/u-boot.lds
+++ b/board/actux3/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds
index a762769..62afcb80 100644
--- a/board/adder/u-boot.lds
+++ b/board/adder/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds
index 52c986e..9403c3c 100644
--- a/board/ait/cam_enc_4xx/u-boot-spl.lds
+++ b/board/ait/cam_enc_4xx/u-boot-spl.lds
@@ -48,6 +48,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
 		*(.rel*)
diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds
index 88ced62..764cc7d 100644
--- a/board/altera/nios2-generic/u-boot.lds
+++ b/board/altera/nios2-generic/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/acadia/u-boot-nand.lds
+++ b/board/amcc/acadia/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds
index 3ad8709..2382ea9 100644
--- a/board/amcc/bamboo/u-boot-nand.lds
+++ b/board/amcc/bamboo/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds
index 76f89f1..0816387 100644
--- a/board/amcc/canyonlands/u-boot-nand.lds
+++ b/board/amcc/canyonlands/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/kilauea/u-boot-nand.lds
+++ b/board/amcc/kilauea/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds
index 07ae8b1..94234de 100644
--- a/board/amcc/sequoia/u-boot-nand.lds
+++ b/board/amcc/sequoia/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds
index 423400a..0f594f5 100644
--- a/board/amcc/sequoia/u-boot-ram.lds
+++ b/board/amcc/sequoia/u-boot-ram.lds
@@ -68,6 +68,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amirix/ap1000/u-boot.lds b/board/amirix/ap1000/u-boot.lds
index cd8f5ce..575d390 100644
--- a/board/amirix/ap1000/u-boot.lds
+++ b/board/amirix/ap1000/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds
index a1d8e0f..d800805 100644
--- a/board/astro/mcf5373l/u-boot.lds
+++ b/board/astro/mcf5373l/u-boot.lds
@@ -113,6 +113,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
index b9b8e3c..a170f06 100644
--- a/board/c2mon/u-boot.lds
+++ b/board/c2mon/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/cobra5272/u-boot.lds
+++ b/board/cobra5272/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
index 2393d8d..3a3d988 100644
--- a/board/cogent/u-boot.lds
+++ b/board/cogent/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
index 3b10114..fb40e3d 100644
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ b/board/dave/PPChameleonEVB/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
index 6f6e065..f1b53aa 100644
--- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
@@ -47,6 +47,12 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+
 	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
index b3a41af..15fa53a 100644
--- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
@@ -58,6 +58,11 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__rel_dyn_start = .;
 	__rel_dyn_end = .;
 	__dynsym_start = .;
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/dbau1x00/u-boot.lds
+++ b/board/dbau1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds
index 01ec390..897263e 100644
--- a/board/dvlhost/u-boot.lds
+++ b/board/dvlhost/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/eltec/mhpc/u-boot.lds
+++ b/board/eltec/mhpc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds
index fb06648..887ee6b 100644
--- a/board/emk/top860/u-boot.lds
+++ b/board/emk/top860/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds
index 332b35a..0c5a03e 100644
--- a/board/ep88x/u-boot.lds
+++ b/board/ep88x/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
index b15948d..9a3249d 100644
--- a/board/esd/dasa_sim/u-boot.lds
+++ b/board/esd/dasa_sim/u-boot.lds
@@ -77,6 +77,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds
index 71f0fd2..d4ef403 100644
--- a/board/esd/pmc440/u-boot-nand.lds
+++ b/board/esd/pmc440/u-boot-nand.lds
@@ -106,6 +106,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/esd/tasreg/u-boot.lds
+++ b/board/esd/tasreg/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
index 163b83d..83d9ec0 100644
--- a/board/esteem192e/u-boot.lds
+++ b/board/esteem192e/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
index 8465937..a98ee23 100644
--- a/board/etx094/u-boot.lds
+++ b/board/etx094/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
index 2d031ef..1eb7f30 100644
--- a/board/evb64260/u-boot.lds
+++ b/board/evb64260/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
index 9ea0674..deee255 100644
--- a/board/fads/u-boot.lds
+++ b/board/fads/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/flagadm/u-boot.lds
+++ b/board/flagadm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds
index 6e39be1..e184013 100644
--- a/board/freescale/m5208evbe/u-boot.lds
+++ b/board/freescale/m5208evbe/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds
index 3e9f4c3..6214098 100644
--- a/board/freescale/m52277evb/u-boot.lds
+++ b/board/freescale/m52277evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds
index d39e734..9b5e5e2 100644
--- a/board/freescale/m5235evb/u-boot.lds
+++ b/board/freescale/m5235evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5249evb/u-boot.lds
+++ b/board/freescale/m5249evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds
index cbd2831..3487a8d 100644
--- a/board/freescale/m5253demo/u-boot.lds
+++ b/board/freescale/m5253demo/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5253evbe/u-boot.lds
+++ b/board/freescale/m5253evbe/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds
index 4717036..3a86350 100644
--- a/board/freescale/m5271evb/u-boot.lds
+++ b/board/freescale/m5271evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5272c3/u-boot.lds
+++ b/board/freescale/m5272c3/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds
index 6c2dfe8..b37b06b 100644
--- a/board/freescale/m5275evb/u-boot.lds
+++ b/board/freescale/m5275evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/freescale/m5282evb/u-boot.lds
+++ b/board/freescale/m5282evb/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds
index 80935f2..662bd31 100644
--- a/board/freescale/m53017evb/u-boot.lds
+++ b/board/freescale/m53017evb/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds
index 40af8bc..fe5be41 100644
--- a/board/freescale/m5329evb/u-boot.lds
+++ b/board/freescale/m5329evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds
index 19342ac..8ff6fc9 100644
--- a/board/freescale/m5373evb/u-boot.lds
+++ b/board/freescale/m5373evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds
index 45924b7..ea0984f 100644
--- a/board/freescale/m54451evb/u-boot.lds
+++ b/board/freescale/m54451evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds
index f341449..fe1b58c 100644
--- a/board/freescale/m54455evb/u-boot.lds
+++ b/board/freescale/m54455evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds
index 5472689..877eaf2 100644
--- a/board/freescale/m547xevb/u-boot.lds
+++ b/board/freescale/m547xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds
index cf3f38c..33e054b 100644
--- a/board/freescale/m548xevb/u-boot.lds
+++ b/board/freescale/m548xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds
index 79eb7ac..3db5dc3 100644
--- a/board/freescale/mx31ads/u-boot.lds
+++ b/board/freescale/mx31ads/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds
index 87cb8e3..416761b 100644
--- a/board/gaisler/gr_cpci_ax2000/u-boot.lds
+++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds
index 2fb44aa..43faf26 100644
--- a/board/gaisler/gr_ep2s60/u-boot.lds
+++ b/board/gaisler/gr_ep2s60/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds
index 8719e97..14c631e 100644
--- a/board/gaisler/gr_xc3s_1500/u-boot.lds
+++ b/board/gaisler/gr_xc3s_1500/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds
index 33890b5..4766465 100644
--- a/board/gaisler/grsim/u-boot.lds
+++ b/board/gaisler/grsim/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds
index cf6e502..cbd4ed6 100644
--- a/board/gaisler/grsim_leon2/u-boot.lds
+++ b/board/gaisler/grsim_leon2/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
index 5bb6c62..1302eaa 100644
--- a/board/gen860t/u-boot-flashenv.lds
+++ b/board/gen860t/u-boot-flashenv.lds
@@ -75,6 +75,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
index be99b51..de57dd1 100644
--- a/board/gen860t/u-boot.lds
+++ b/board/gen860t/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
index 1d66a9b..45c56bb 100644
--- a/board/genietv/u-boot.lds
+++ b/board/genietv/u-boot.lds
@@ -84,6 +84,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/gth2/u-boot.lds b/board/gth2/u-boot.lds
index 9fc417f..c415594 100644
--- a/board/gth2/u-boot.lds
+++ b/board/gth2/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
index ca97115..8b90f6c 100644
--- a/board/hermes/u-boot.lds
+++ b/board/hermes/u-boot.lds
@@ -76,6 +76,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
index 1309f20..83d2dd4 100644
--- a/board/hymod/u-boot.lds
+++ b/board/hymod/u-boot.lds
@@ -114,6 +114,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
index 93c79a6..23d4405 100644
--- a/board/icu862/u-boot.lds
+++ b/board/icu862/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/idmr/u-boot.lds
+++ b/board/idmr/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/incaip/u-boot.lds
+++ b/board/incaip/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/ip860/u-boot.lds
+++ b/board/ip860/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
index 1e843eb..d0d9a37 100644
--- a/board/ivm/u-boot.lds
+++ b/board/ivm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds
index 6a017e3..da33f00 100644
--- a/board/korat/u-boot-F7FC.lds
+++ b/board/korat/u-boot-F7FC.lds
@@ -112,6 +112,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4k/u-boot.lds
+++ b/board/kup/kup4k/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4x/u-boot.lds
+++ b/board/kup/kup4x/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
index de0b355..9360839 100644
--- a/board/lantec/u-boot.lds
+++ b/board/lantec/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
index 8bf7324..7dfa157 100644
--- a/board/lwmon/u-boot.lds
+++ b/board/lwmon/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds
index 731cec9..d291d60 100644
--- a/board/manroland/uc100/u-boot.lds
+++ b/board/manroland/uc100/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds
index 57c37de..2445b97 100644
--- a/board/matrix_vision/mvsmr/u-boot.lds
+++ b/board/matrix_vision/mvsmr/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/mbx8xx/u-boot.lds
+++ b/board/mbx8xx/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/micronas/vct/u-boot.lds b/board/micronas/vct/u-boot.lds
index 3a05ef9..273d190 100644
--- a/board/micronas/vct/u-boot.lds
+++ b/board/micronas/vct/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	. = ALIGN(4);
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
index 9f9ddb8..a6cad6d 100644
--- a/board/ml2/u-boot.lds
+++ b/board/ml2/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
index dae2cfc..863468e 100644
--- a/board/mousse/u-boot.lds
+++ b/board/mousse/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
index 11624d2..4610de9 100644
--- a/board/mvblue/u-boot.lds
+++ b/board/mvblue/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netphone/u-boot.lds
+++ b/board/netphone/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta/u-boot.lds
+++ b/board/netta/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta2/u-boot.lds
+++ b/board/netta2/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netvia/u-boot.lds
+++ b/board/netvia/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/nx823/u-boot.lds
+++ b/board/nx823/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds
index 1aed197..bc610bd 100644
--- a/board/openrisc/openrisc-generic/u-boot.lds
+++ b/board/openrisc/openrisc-generic/u-boot.lds
@@ -30,6 +30,11 @@ SECTIONS
 	 .u_boot_cmd : { *(.u_boot_cmd) } > ram
 	 __u_boot_cmd_end = .;
 
+	 . = ALIGN(4);
+	 .u_boot_list : {
+	INCLUDE u-boot.lst;
+	 }
+
 	.rodata : {
 		*(.rodata);
 		*(.rodata.*)
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds
index bd0dee1..cac9188 100644
--- a/board/pb1x00/u-boot.lds
+++ b/board/pb1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds
index 9460b20..1f37e8b 100644
--- a/board/qemu-mips/u-boot.lds
+++ b/board/qemu-mips/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	__u_boot_cmd_start = .;
 	*(.u_boot_cmd)
 	__u_boot_cmd_end = .;
+
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
 	}
 
 	uboot_end_data = .;
diff --git a/board/qi/qi_lb60/u-boot.lds b/board/qi/qi_lb60/u-boot.lds
index 7317652..e1bb826 100644
--- a/board/qi/qi_lb60/u-boot.lds
+++ b/board/qi/qi_lb60/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 
diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/quantum/u-boot.lds
+++ b/board/quantum/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
index 2fa085a..181468d 100644
--- a/board/r360mpi/u-boot.lds
+++ b/board/r360mpi/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
index d943fb6..50c3eee 100644
--- a/board/rbc823/u-boot.lds
+++ b/board/rbc823/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds
index 38ebe88..cff6ff5 100644
--- a/board/renesas/sh7757lcr/u-boot.lds
+++ b/board/renesas/sh7757lcr/u-boot.lds
@@ -85,6 +85,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
index a729c52..ee651d4 100644
--- a/board/rsdproto/u-boot.lds
+++ b/board/rsdproto/u-boot.lds
@@ -101,6 +101,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/samsung/smdk5250/smdk5250-uboot-spl.lds b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
index d78dd77..c6e6414 100644
--- a/board/samsung/smdk5250/smdk5250-uboot-spl.lds
+++ b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
@@ -48,6 +48,11 @@ SECTIONS
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+	. = ALIGN(4);
+
 	/* Align .machine_param on 256 byte boundary for easier searching */
 	.machine_param ALIGN(0x100) : { *(.machine_param) } >.sram
 	. = ALIGN(4);
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds
index f162815..27693f0e 100644
--- a/board/samsung/smdk6400/u-boot-nand.lds
+++ b/board/samsung/smdk6400/u-boot-nand.lds
@@ -51,7 +51,12 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
-	. = ALIGN(4);
+	. = align(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = align(4);
 	.mmudata : { *(.mmudata) }
 
 	. = ALIGN(4);
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
index e382fd1..a4421a7 100644
--- a/board/sandpoint/u-boot.lds
+++ b/board/sandpoint/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
index 0e78e4f..3532d3b 100644
--- a/board/siemens/IAD210/u-boot.lds
+++ b/board/siemens/IAD210/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
index 02d1980..4153927 100644
--- a/board/sixnet/u-boot.lds
+++ b/board/sixnet/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
index 9ab248a..039597e 100644
--- a/board/snmc/qs850/u-boot.lds
+++ b/board/snmc/qs850/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/snmc/qs860t/u-boot.lds
+++ b/board/snmc/qs860t/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/spc1920/u-boot.lds
+++ b/board/spc1920/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
index a84e7fd..ada68f1 100644
--- a/board/spd8xx/u-boot.lds
+++ b/board/spd8xx/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/stx/stxxtc/u-boot.lds
+++ b/board/stx/stxxtc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
index c65f022..af83956 100644
--- a/board/svm_sc8xx/u-boot.lds
+++ b/board/svm_sc8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds
index 4f08be6..226cfc1 100644
--- a/board/tqc/tqm8xx/u-boot.lds
+++ b/board/tqc/tqm8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
index e62d53d..feb3870 100644
--- a/board/v37/u-boot.lds
+++ b/board/v37/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds
index 1958c2f..b3551dd 100644
--- a/board/vpac270/u-boot-spl.lds
+++ b/board/vpac270/u-boot-spl.lds
@@ -57,6 +57,10 @@ SECTIONS
 		*(.data)
 	}
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
index 3470b43..e642a3a 100644
--- a/board/westel/amx860/u-boot.lds
+++ b/board/westel/amx860/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/examples/standalone/mips.lds b/examples/standalone/mips.lds
index 5f766ed..65c654d 100644
--- a/examples/standalone/mips.lds
+++ b/examples/standalone/mips.lds
@@ -39,6 +39,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data  : { *(.data*) }
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = .;
 	_gp = ALIGN(16) + 0x7ff0;
 
diff --git a/examples/standalone/nds32.lds b/examples/standalone/nds32.lds
index 50b4c4b..4e581ad 100644
--- a/examples/standalone/nds32.lds
+++ b/examples/standalone/nds32.lds
@@ -36,6 +36,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(.data) }
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.got : {
diff --git a/examples/standalone/sparc.lds b/examples/standalone/sparc.lds
index 9733daa..908a9be 100644
--- a/examples/standalone/sparc.lds
+++ b/examples/standalone/sparc.lds
@@ -46,6 +46,11 @@ SECTIONS
 	{
 		*(.data)
 	}
+
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 	__data_end = .;
 
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds
index d2b08f6..363690f 100644
--- a/nand_spl/board/freescale/mx31pdk/u-boot.lds
+++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds
index d2b08f6..8332710 100644
--- a/nand_spl/board/karo/tx25/u-boot.lds
+++ b/nand_spl/board/karo/tx25/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds
index 567f635..7ceae32 100644
--- a/nand_spl/board/samsung/smdk6400/u-boot.lds
+++ b/nand_spl/board/samsung/smdk6400/u-boot.lds
@@ -55,6 +55,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 	__rel_dyn_start = .;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files
  2012-09-25 16:12   ` [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files Marek Vasut
@ 2012-09-25 16:43     ` Otavio Salvador
  2012-09-25 16:54       ` Marek Vasut
  2012-09-25 20:17     ` Wolfgang Denk
  1 sibling, 1 reply; 47+ messages in thread
From: Otavio Salvador @ 2012-09-25 16:43 UTC (permalink / raw)
  To: u-boot

On Tue, Sep 25, 2012 at 1:12 PM, Marek Vasut <marex@denx.de> wrote:
> Add section for the linker-generated lists into all possible linker
> files, so that everyone can easily use these lists. This is mostly
> a mechanical adjustment.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>

This has a mix of indentation; I did not check every file but it seems
not consistent.

-- 
Otavio Salvador                             O.S. Systems
E-mail: otavio at ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files
  2012-09-25 16:43     ` Otavio Salvador
@ 2012-09-25 16:54       ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 16:54 UTC (permalink / raw)
  To: u-boot

Dear Otavio Salvador,

> On Tue, Sep 25, 2012 at 1:12 PM, Marek Vasut <marex@denx.de> wrote:
> > Add section for the linker-generated lists into all possible linker
> > files, so that everyone can easily use these lists. This is mostly
> > a mechanical adjustment.
> > 
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Joe Hershberger <joe.hershberger@gmail.com>
> > Cc: Mike Frysinger <vapier@gentoo.org>
> 
> This has a mix of indentation; I did not check every file but it seems
> not consistent.

It's not due to the patch, but because the indent in those linker files is 
frakked up ... 

find . -name u-boot.lds | \
xargs -i sed -i "s/^\([ \t]*\)\(__u_boot_cmd_end[\t ]*=[\t ]*\.[\t ]*;
\)$/\1\2\n\n\1. = ALIGN(4);\n\1.u_boot_list : {\n\tINCLUDE u-boot.lst;\n\1}/" {}

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile
  2012-09-25 16:11   ` [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-25 20:12     ` Wolfgang Denk
  2012-09-25 20:22       ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Wolfgang Denk @ 2012-09-25 20:12 UTC (permalink / raw)
  To: u-boot

Dear Marek Vasut,

In message <1348589520-14395-2-git-send-email-marex@denx.de> you wrote:
> This patch adds essential components for generation of the contents of
> the linker section that is used by the linker-generated array. All of
> the contents is held in a separate file, u-boot.lst, which is generated
> at runtime just before U-Boot is linked.
...
> --- a/Makefile
> +++ b/Makefile
> @@ -510,7 +510,10 @@ else
>  GEN_UBOOT = \
>  		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
>  		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
> -		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
> +		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
> +		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
> +		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
> +			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \

I dislike the exact duplication of the commands here.

Would it not make sense to provide some function / script to do that?


> +$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
> +$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
> +		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@

I think this needs a comment to explain what sort of magic you are
invoking here.

...
> --- /dev/null
> +++ b/helper.mk
...
> +	$(OBJDUMP) -h $(2) | \
> +	sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/p' | \
> +	sed 's/\.[^\.]\+$$$$//' | \
> +	sed -n ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
> +	sed -n 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
...

Why exactly do you need 4 invocations of sed here?  Seems just like a
waste of processes to me.

>  LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
> +LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst

BTW:  what exactly is "LST" supposed to mean?

> +$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
> +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
> +	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@

Comment needed.


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Ein weiser Herrscher kann in einem gro?en Land  mehr  Gutes  bewirken
als  in  einem kleinen - ein dummer Herrscher aber auch viel mehr Un-
fug. Da weise Herrscher seltener sind als dumme, war ich schon  immer
gegen gro?e Reiche skeptisch.                   - Herbert Rosendorfer

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-25 16:11   ` [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays Marek Vasut
@ 2012-09-25 20:16     ` Wolfgang Denk
  2012-09-25 20:24       ` Marek Vasut
  2012-09-29  1:45     ` Joe Hershberger
  1 sibling, 1 reply; 47+ messages in thread
From: Wolfgang Denk @ 2012-09-25 20:16 UTC (permalink / raw)
  To: u-boot

Dear Marek Vasut,

In message <1348589520-14395-3-git-send-email-marex@denx.de> you wrote:
> This patch adds support for linker-generated array. These arrays
> are a generalization of the U-Boot command declaration approach.
...

>                                         ... Such array though can
> later be accessed and used via special accessor.

Can you please translate this to me?  I don't get what it means.


> The actual implementation relies on placing any variable that is to
> represent an element of LG-array into subsection of .u_boot_list

"into subsection" ? Do you mean "into a subsection", or "into a
specific subsection" or what?

...
> --- /dev/null
> +++ b/include/linker_lists.h
...
> +/**
> + * ll_entry_declare() - Declare linker-generated array entry
...

Incorrect multiline comment style. Please fix globally.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When dreams become more important than reality, you give  up  travel,
building,  creating;  you even forget how to repair the machines left
behind by your ancestors. You just  sit  living  and  reliving  other
lives left behind in the thought records.
	-- Vina, "The Menagerie" ("The Cage"), stardate unknown

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files
  2012-09-25 16:12   ` [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files Marek Vasut
  2012-09-25 16:43     ` Otavio Salvador
@ 2012-09-25 20:17     ` Wolfgang Denk
  2012-09-25 20:25       ` Marek Vasut
  1 sibling, 1 reply; 47+ messages in thread
From: Wolfgang Denk @ 2012-09-25 20:17 UTC (permalink / raw)
  To: u-boot

Dear Marek Vasut,

In message <1348589520-14395-4-git-send-email-marex@denx.de> you wrote:
> Add section for the linker-generated lists into all possible linker
> files, so that everyone can easily use these lists. This is mostly
> a mechanical adjustment.

How well has this been tested?

My understanding is that in theory this change should still produce
the very same binary images as before?  So did you compare the
binaries?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Virtue is a relative term.
	-- Spock, "Friday's Child", stardate 3499.1

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile
  2012-09-25 20:12     ` Wolfgang Denk
@ 2012-09-25 20:22       ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 20:22 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,

> Dear Marek Vasut,
> 
> In message <1348589520-14395-2-git-send-email-marex@denx.de> you wrote:
> > This patch adds essential components for generation of the contents of
> > the linker section that is used by the linker-generated array. All of
> > the contents is held in a separate file, u-boot.lst, which is generated
> > at runtime just before U-Boot is linked.
> 
> ...
> 
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -510,7 +510,10 @@ else
> > 
> >  GEN_UBOOT = \
> >  
> >  		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
> >  		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|
uniq`;\
> > 
> > -		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM 
$(__OBJS)
> > \ +		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
> > +		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|
uniq`;\
> > +		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
> > +			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
> 
> I dislike the exact duplication of the commands here.

These shall begone once the cmd stuff is flipped over to these generic lists.

> Would it not make sense to provide some function / script to do that?

How do you like helper.mk ? %^) But see above, I think it'll grow pointless 
soon.

> > +$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
> > +$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
> > +		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< 
>$@
> 
> I think this needs a comment to explain what sort of magic you are
> invoking here.
> 
> ...
> 
> > --- /dev/null
> > +++ b/helper.mk
> 
> ...
> 
> > +	$(OBJDUMP) -h $(2) | \
> > +	sed -n -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/p' | \
> > +	sed 's/\.[^\.]\+$$$$//' | \
> > +	sed -n ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
> > +	sed -n 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
> 
> ...
> 
> Why exactly do you need 4 invocations of sed here?  Seems just like a
> waste of processes to me.
> 
> >  LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
> > 
> > +LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
> 
> BTW:  what exactly is "LST" supposed to mean?

LIST ... that's from Supaplex, there was this levels.lst file IIRC ;-)

> > +$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
> > +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
> > +	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
> 
> Comment needed.

The eval call ... ?

> 
> Best regards,
> 
> Wolfgang Denk

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-25 20:16     ` Wolfgang Denk
@ 2012-09-25 20:24       ` Marek Vasut
  2012-09-26  7:01         ` Wolfgang Denk
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 20:24 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,

> Dear Marek Vasut,
> 
> In message <1348589520-14395-3-git-send-email-marex@denx.de> you wrote:
> > This patch adds support for linker-generated array. These arrays
> > are a generalization of the U-Boot command declaration approach.
> 
> ...
> 
> >                                         ... Such array though can
> > 
> > later be accessed and used via special accessor.
> 
> Can you please translate this to me?  I don't get what it means.

That you call a function that returns the pointer to the first member of the 
array.

> 
> > The actual implementation relies on placing any variable that is to
> > represent an element of LG-array into subsection of .u_boot_list
> 
> "into subsection" ? Do you mean "into a subsection", or "into a
> specific subsection" or what?


... into a matching subsection ...

> ...
> 
> > --- /dev/null
> > +++ b/include/linker_lists.h
> 
> ...
> 
> > +/**
> > + * ll_entry_declare() - Declare linker-generated array entry
> 
> ...
> 
> Incorrect multiline comment style. Please fix globally.

You mean what ...

/**
 *

This? Kernel-doc style ...

> Best regards,
> 
> Wolfgang Denk

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files
  2012-09-25 20:17     ` Wolfgang Denk
@ 2012-09-25 20:25       ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-25 20:25 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,

> Dear Marek Vasut,
> 
> In message <1348589520-14395-4-git-send-email-marex@denx.de> you wrote:
> > Add section for the linker-generated lists into all possible linker
> > files, so that everyone can easily use these lists. This is mostly
> > a mechanical adjustment.
> 
> How well has this been tested?
> 
> My understanding is that in theory this change should still produce
> the very same binary images as before?  So did you compare the
> binaries?

It's been compile-tested.I did not compare the binaries.

> Best regards,
> 
> Wolfgang Denk

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-25 20:24       ` Marek Vasut
@ 2012-09-26  7:01         ` Wolfgang Denk
  2012-09-26 16:53           ` Marek Vasut
  0 siblings, 1 reply; 47+ messages in thread
From: Wolfgang Denk @ 2012-09-26  7:01 UTC (permalink / raw)
  To: u-boot

Dear Marek,

In message <201209252224.32686.marex@denx.de> you wrote:
> 
> > >                                         ... Such array though can
> > > later be accessed and used via special accessor.
> > 
> > Can you please translate this to me?  I don't get what it means.
> 
> That you call a function that returns the pointer to the first member of the 
> array.

then please write this down?

Do we always need such a function?  Where is it coming from?
Auto-generated?  What about the memory footprint?

> You mean what ...
> 
> /**
>  *
> 
> This? Kernel-doc style ...

It violates the kernel CodyngStyle...

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Certainly there are things in life that money  can't  buy,  but  it's
very funny - Did you ever try buying them without money? - Ogden Nash

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-26  7:01         ` Wolfgang Denk
@ 2012-09-26 16:53           ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-26 16:53 UTC (permalink / raw)
  To: u-boot

Dear Wolfgang Denk,

> Dear Marek,
> 
> In message <201209252224.32686.marex@denx.de> you wrote:
> > > >                                         ... Such array though can
> > > > 
> > > > later be accessed and used via special accessor.
> > > 
> > > Can you please translate this to me?  I don't get what it means.
> > 
> > That you call a function that returns the pointer to the first member of
> > the array.
> 
> then please write this down?

I rewrote it, it made no sense.

> Do we always need such a function?  Where is it coming from?

It's not a function, macro, sorry for the confusion

> Auto-generated?  What about the memory footprint?

None, it's a macro. Doing exactly what &__u_boot_cmd... did, but instead of 
doing it at n places, it does so at one place now and is expanded as needed.

> > You mean what ...
> > 
> > /**
> > 
> >  *
> > 
> > This? Kernel-doc style ...
> 
> It violates the kernel CodyngStyle...

Yes, well ... let's discuss it.

> Best regards,
> 
> Wolfgang Denk

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 0/5 V2] Linker-generated arrays
  2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
                     ` (2 preceding siblings ...)
  2012-09-25 16:12   ` [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files Marek Vasut
@ 2012-09-29  1:34   ` Marek Vasut
  2012-09-29  1:34     ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
                       ` (5 more replies)
  3 siblings, 6 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:34 UTC (permalink / raw)
  To: u-boot

This is a first stab at the linker-generated array. Basically, this
concept is a generic abstraction of how u_boot_cmd works today. The
patch 2/4 contains a huge pile of documentation which should clarify
most of the questions.

I don't see size growth, I see size fluctiation in the order of tens
of bytes with these patches applied. Subsequent patch added to this
series removes the __u_boot_cmd section completely.

V2: Flip over commands to the LG-arrays, inline the documentation with
    kernel-doc (most people seems to be happy about KD, it's just a
    matter of negotiating the rules). Add patch discarding the u_boot_cmd
    section.

NOTE: This patchset has a cross-dependency on:
	[PATCH 0/4] Implant kernel-doc from Linux kernel

NOTE: Compile-testing of the latest patch in progress ... comments welcome.

Marek Vasut (5):
  common: Add symbol handling for generic lists into Makefile
  common: Implement support for linker-generated arrays
  common: Add .u_boot_list into all linker files
  common: Convert the U-Boot commands to LG-arrays
  common: Discard the __u_boot_cmd section

 Makefile                                         |   13 +-
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    8 +-
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    7 +-
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    7 +-
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +
 arch/arm/cpu/ixp/u-boot.lds                      |    8 +-
 arch/arm/cpu/u-boot.lds                          |    8 +-
 arch/arm/imx-common/cmd_bmode.c                  |   11 +-
 arch/avr32/cpu/u-boot.lds                        |    8 +-
 arch/avr32/lib/board.c                           |    4 +-
 arch/blackfin/cpu/u-boot.lds                     |    8 +-
 arch/m68k/lib/board.c                            |    4 +-
 arch/microblaze/cpu/u-boot.lds                   |    6 -
 arch/mips/lib/board.c                            |    4 +-
 arch/nds32/cpu/n1213/u-boot.lds                  |    8 +-
 arch/nds32/lib/board.c                           |    4 +-
 arch/nios2/cpu/u-boot.lds                        |   10 +-
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    8 +-
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    8 +-
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    6 +-
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    7 +-
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 +
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    8 +-
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    8 +-
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    8 +-
 arch/sandbox/cpu/u-boot.lds                      |    8 +-
 arch/sh/cpu/sh2/u-boot.lds                       |    9 +-
 arch/sh/cpu/sh3/u-boot.lds                       |    9 +-
 arch/sh/cpu/sh4/u-boot.lds                       |    9 +-
 arch/sparc/lib/board.c                           |    4 +-
 arch/x86/cpu/u-boot.lds                          |    7 +-
 board/BuS/eb_cpu5282/u-boot.lds                  |    8 +-
 board/LEOX/elpt860/u-boot.lds                    |    8 +-
 board/RPXClassic/u-boot.lds                      |    8 +-
 board/RPXClassic/u-boot.lds.debug                |    8 +-
 board/RPXlite/u-boot.lds                         |    8 +-
 board/RPXlite/u-boot.lds.debug                   |    8 +-
 board/RPXlite_dw/u-boot.lds                      |    8 +-
 board/RPXlite_dw/u-boot.lds.debug                |    8 +-
 board/RRvision/u-boot.lds                        |    8 +-
 board/actux1/u-boot.lds                          |    8 +-
 board/actux2/u-boot.lds                          |    8 +-
 board/actux3/u-boot.lds                          |    8 +-
 board/adder/u-boot.lds                           |    8 +-
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 +
 board/altera/nios2-generic/u-boot.lds            |   10 +-
 board/amcc/acadia/u-boot-nand.lds                |    6 +-
 board/amcc/bamboo/u-boot-nand.lds                |    6 +-
 board/amcc/canyonlands/u-boot-nand.lds           |    6 +-
 board/amcc/kilauea/u-boot-nand.lds               |    6 +-
 board/amcc/sequoia/u-boot-nand.lds               |    6 +-
 board/amcc/sequoia/u-boot-ram.lds                |    6 +-
 board/amirix/ap1000/u-boot.lds                   |    8 +-
 board/astro/mcf5373l/u-boot.lds                  |    8 +-
 board/c2mon/u-boot.lds                           |    8 +-
 board/c2mon/u-boot.lds.debug                     |    8 +-
 board/cobra5272/u-boot.lds                       |    8 +-
 board/cogent/u-boot.lds                          |    8 +-
 board/cogent/u-boot.lds.debug                    |    8 +-
 board/cray/L1/u-boot.lds.debug                   |    8 +-
 board/dave/PPChameleonEVB/u-boot.lds             |    8 +-
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 +
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +
 board/dbau1x00/u-boot.lds                        |    4 -
 board/dvlhost/u-boot.lds                         |    8 +-
 board/eltec/mhpc/u-boot.lds                      |    8 +-
 board/eltec/mhpc/u-boot.lds.debug                |    8 +-
 board/emk/top860/u-boot.lds                      |    8 +-
 board/ep88x/u-boot.lds                           |    8 +-
 board/esd/dasa_sim/u-boot.lds                    |    8 +-
 board/esd/pmc440/u-boot-nand.lds                 |    6 +-
 board/esd/tasreg/u-boot.lds                      |    8 +-
 board/esteem192e/u-boot.lds                      |    8 +-
 board/etx094/u-boot.lds                          |    8 +-
 board/evb64260/u-boot.lds                        |    8 +-
 board/fads/u-boot.lds                            |    8 +-
 board/flagadm/u-boot.lds                         |    8 +-
 board/flagadm/u-boot.lds.debug                   |    8 +-
 board/freescale/m5208evbe/u-boot.lds             |    8 +-
 board/freescale/m52277evb/u-boot.lds             |    8 +-
 board/freescale/m5235evb/u-boot.lds              |    8 +-
 board/freescale/m5249evb/u-boot.lds              |    8 +-
 board/freescale/m5253demo/u-boot.lds             |    8 +-
 board/freescale/m5253evbe/u-boot.lds             |    8 +-
 board/freescale/m5271evb/u-boot.lds              |    8 +-
 board/freescale/m5272c3/u-boot.lds               |    8 +-
 board/freescale/m5275evb/u-boot.lds              |    8 +-
 board/freescale/m5282evb/u-boot.lds              |    8 +-
 board/freescale/m53017evb/u-boot.lds             |    8 +-
 board/freescale/m5329evb/u-boot.lds              |    8 +-
 board/freescale/m5373evb/u-boot.lds              |    8 +-
 board/freescale/m54451evb/u-boot.lds             |    8 +-
 board/freescale/m54455evb/u-boot.lds             |    8 +-
 board/freescale/m547xevb/u-boot.lds              |    8 +-
 board/freescale/m548xevb/u-boot.lds              |    8 +-
 board/freescale/mx31ads/u-boot.lds               |    8 +-
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    7 +-
 board/gaisler/gr_ep2s60/u-boot.lds               |    7 +-
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    7 +-
 board/gaisler/grsim/u-boot.lds                   |    7 +-
 board/gaisler/grsim_leon2/u-boot.lds             |    7 +-
 board/gen860t/u-boot-flashenv.lds                |    7 +-
 board/gen860t/u-boot.lds                         |    8 +-
 board/genietv/u-boot.lds                         |    8 +-
 board/genietv/u-boot.lds.debug                   |    8 +-
 board/hermes/u-boot.lds                          |    8 +-
 board/hermes/u-boot.lds.debug                    |    8 +-
 board/hymod/u-boot.lds                           |    8 +-
 board/hymod/u-boot.lds.debug                     |    8 +-
 board/icu862/u-boot.lds                          |    8 +-
 board/icu862/u-boot.lds.debug                    |    8 +-
 board/idmr/u-boot.lds                            |    8 +-
 board/incaip/u-boot.lds                          |    4 -
 board/ip860/u-boot.lds                           |    8 +-
 board/ip860/u-boot.lds.debug                     |    8 +-
 board/ivm/u-boot.lds                             |    8 +-
 board/ivm/u-boot.lds.debug                       |    8 +-
 board/korat/u-boot-F7FC.lds                      |    6 +-
 board/kup/kup4k/u-boot.lds                       |    8 +-
 board/kup/kup4k/u-boot.lds.debug                 |    8 +-
 board/kup/kup4x/u-boot.lds                       |    8 +-
 board/kup/kup4x/u-boot.lds.debug                 |    8 +-
 board/lantec/u-boot.lds                          |    8 +-
 board/lantec/u-boot.lds.debug                    |    8 +-
 board/lwmon/u-boot.lds                           |    8 +-
 board/lwmon/u-boot.lds.debug                     |    8 +-
 board/manroland/uc100/u-boot.lds                 |    8 +-
 board/matrix_vision/mvsmr/u-boot.lds             |    8 +-
 board/mbx8xx/u-boot.lds                          |    8 +-
 board/mbx8xx/u-boot.lds.debug                    |    8 +-
 board/micronas/vct/u-boot.lds                    |    4 -
 board/ml2/u-boot.lds                             |    8 +-
 board/ml2/u-boot.lds.debug                       |    8 +-
 board/mousse/u-boot.lds                          |    8 +-
 board/mousse/u-boot.lds.ram                      |    3 -
 board/mousse/u-boot.lds.rom                      |    3 -
 board/mpl/pip405/u-boot.lds.debug                |    8 +-
 board/mvblue/u-boot.lds                          |    8 +-
 board/netphone/u-boot.lds                        |    8 +-
 board/netphone/u-boot.lds.debug                  |    8 +-
 board/netta/u-boot.lds                           |    8 +-
 board/netta/u-boot.lds.debug                     |    8 +-
 board/netta2/u-boot.lds                          |    8 +-
 board/netta2/u-boot.lds.debug                    |    8 +-
 board/netvia/u-boot.lds                          |    8 +-
 board/netvia/u-boot.lds.debug                    |    8 +-
 board/nx823/u-boot.lds                           |    8 +-
 board/nx823/u-boot.lds.debug                     |    8 +-
 board/openrisc/openrisc-generic/u-boot.lds       |    8 +-
 board/pb1x00/u-boot.lds                          |    4 -
 board/qemu-mips/u-boot.lds                       |    4 -
 board/qi/qi_lb60/u-boot.lds                      |    8 +-
 board/quantum/u-boot.lds                         |    8 +-
 board/r360mpi/u-boot.lds                         |    8 +-
 board/rbc823/u-boot.lds                          |    8 +-
 board/renesas/sh7757lcr/u-boot.lds               |    9 +-
 board/rsdproto/u-boot.lds                        |    8 +-
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +
 board/samsung/smdk6400/u-boot-nand.lds           |   10 +-
 board/sandburst/karef/u-boot.lds.debug           |    8 +-
 board/sandburst/metrobox/u-boot.lds.debug        |    8 +-
 board/sandpoint/u-boot.lds                       |    8 +-
 board/siemens/IAD210/u-boot.lds                  |    8 +-
 board/sixnet/u-boot.lds                          |    8 +-
 board/snmc/qs850/u-boot.lds                      |    8 +-
 board/snmc/qs860t/u-boot.lds                     |    8 +-
 board/spc1920/u-boot.lds                         |    8 +-
 board/spd8xx/u-boot.lds                          |    8 +-
 board/spd8xx/u-boot.lds.debug                    |    8 +-
 board/stx/stxxtc/u-boot.lds                      |    8 +-
 board/stx/stxxtc/u-boot.lds.debug                |    8 +-
 board/svm_sc8xx/u-boot.lds                       |    8 +-
 board/tqc/tqm8xx/u-boot.lds                      |    8 +-
 board/v37/u-boot.lds                             |    8 +-
 board/vpac270/u-boot-spl.lds                     |    4 +
 board/w7o/u-boot.lds.debug                       |    8 +-
 board/westel/amx860/u-boot.lds                   |    8 +-
 board/westel/amx860/u-boot.lds.debug             |    8 +-
 board/xes/xpedite1000/u-boot.lds.debug           |    8 +-
 common/cmd_help.c                                |    8 +-
 common/command.c                                 |   17 ++-
 config.mk                                        |    2 +
 doc/README.commands                              |   10 +-
 examples/standalone/mips.lds                     |    4 +
 examples/standalone/nds32.lds                    |    4 +
 examples/standalone/sparc.lds                    |    5 +
 helper.mk                                        |   64 ++++++++++
 include/command.h                                |   28 ++--
 include/linker_lists.h                           |  148 ++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile      |    9 +-
 nand_spl/board/freescale/mpc8569mds/Makefile     |    9 +-
 nand_spl/board/freescale/mpc8572ds/Makefile      |    9 +-
 nand_spl/board/freescale/mx31pdk/Makefile        |    9 +-
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    8 +-
 nand_spl/board/freescale/p1010rdb/Makefile       |    9 +-
 nand_spl/board/freescale/p1023rds/Makefile       |    9 +-
 nand_spl/board/freescale/p1_p2_rdb/Makefile      |    9 +-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile   |    9 +-
 nand_spl/board/karo/tx25/Makefile                |    9 +-
 nand_spl/board/karo/tx25/u-boot.lds              |    8 +-
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    8 +-
 spl/Makefile                                     |    6 +-
 208 files changed, 1174 insertions(+), 622 deletions(-)
 create mode 100644 helper.mk
 create mode 100644 include/linker_lists.h

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
@ 2012-09-29  1:34     ` Marek Vasut
  2012-09-29  2:29       ` [U-Boot] [PATCH 1/5 V2] " Marek Vasut
  2012-09-29  1:35     ` [U-Boot] [PATCH 2/5] common: Implement support for linker-generated arrays Marek Vasut
                       ` (4 subsequent siblings)
  5 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:34 UTC (permalink / raw)
  To: u-boot

This patch adds essential components for generation of the contents of
the linker section that is used by the linker-generated array. All of
the contents is held in a separate file, u-boot.lst, which is generated
at runtime just before U-Boot is linked.

The purpose of this code is to especially generate the appropriate
boundary symbols around each subsection in the section carrying the
linker-generated arrays. Obviously, the interim linker code for actual
placement of the variables into the section is generated too. The
generated file, u-boot.lst, is included into u-boot.lds via the linker
INCLUDE directive in u-boot.lds .

Adjustments are made in the Makefile and spl/Makefile so that the
u-boot.lds and u-boot-spl.lds depend on their respective .lst files.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 Makefile                                       |   13 +++--
 config.mk                                      |    2 +
 helper.mk                                      |   64 ++++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mpc8569mds/Makefile   |    9 +++-
 nand_spl/board/freescale/mpc8572ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mx31pdk/Makefile      |    9 +++-
 nand_spl/board/freescale/p1010rdb/Makefile     |    9 +++-
 nand_spl/board/freescale/p1023rds/Makefile     |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb/Makefile    |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile |    9 +++-
 nand_spl/board/karo/tx25/Makefile              |    9 +++-
 spl/Makefile                                   |    6 ++-
 13 files changed, 144 insertions(+), 22 deletions(-)
 create mode 100644 helper.mk

diff --git a/Makefile b/Makefile
index eb9c388..54cc91b 100644
--- a/Makefile
+++ b/Makefile
@@ -515,7 +515,10 @@ else
 GEN_UBOOT = \
 		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
 		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
+		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
+		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
 endif
@@ -548,8 +551,12 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
 $(LDSCRIPT):	depend
 		$(MAKE) -C $(dir $@) $(notdir $@)
 
-$(obj)u-boot.lds: $(LDSCRIPT)
-		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
+$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
+		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
diff --git a/config.mk b/config.mk
index c3822a2..d2ed5bf 100644
--- a/config.mk
+++ b/config.mk
@@ -23,6 +23,8 @@
 
 #########################################################################
 
+include $(TOPDIR)/helper.mk
+
 ifeq ($(CURDIR),$(SRCTREE))
 dir :=
 else
diff --git a/helper.mk b/helper.mk
new file mode 100644
index 0000000..79a1da0
--- /dev/null
+++ b/helper.mk
@@ -0,0 +1,64 @@
+#
+# Copyright (C) 2012 Marek Vasut <marex@denx.de>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+#########################################################################
+
+##
+# make_u_boot_list - Generate contents of u_boot_list section
+# 1:		The name of the resulting file (usually u-boot.lst)
+# 2:		Files to analyze for possible u_boot_list entries
+#
+# This function generates the contents of the u_boot_list section,
+# including all the border symbols for it's subsections. The operation
+# of this function is as follows, numbering goes per lines:
+#
+# 1) Dump the ELF header sections from all files supplied via $(2)
+# 2) Filter out all other stuff that does not belong into .u_boot_list
+#    section.
+# 3) Fix up the lines so that the resulting output is is in format
+#    ".u_boot_list.*".
+# 4) Remove the last .something$, since that only contains the name
+#    of the variable to be put into a subsection. This name is irelevant
+#    for generation of border symbols, thus of no interest, remove it.
+# 5) Take each line and for every dot "." in that line, print the whole
+#    line until that dot "." . This is important so that we have all
+#    parent border symbols generated as well.
+# 6) Load every line and firstly append "\a" at the end and print the
+#    line. Next, append "@" at the end and print the line. Finally,
+#    append "~" at the end of line. This will make sense in conjunction
+#    with 6) and 7).
+# 7) Sort the lines. It is imperative to use LC_COLLATE=C here because
+#    with this, the "\a" symbol is first and "~" symbol is last. Any
+#    other symbols fall inbetween. Symbols like "@", which marks the
+#    end of current line (representing current section) and ".", which
+#    means the line continues and thus represents subsection.
+# 8) With such ordering, all lines ending with "\a" will float at the
+#    begining of all lines with the same prefix. Thus it is easy to
+#    replace "\a" with __start and make it the __start border symbol.
+#    Very similarly for "~", which will be always at the bottom and so
+#    can be replaced by "__end" and made into the __end border symbol.
+#    Finally, every line ending with "@" symbol will be transformed
+#    into " *(SORT(${line}*)); " format, which in the linker parlance
+#    will allow it to trap all symbols relevant to the subsection.
+#
+define make_u_boot_list
+$(1): $(2)
+	$(OBJDUMP) -h $(2) | \
+	sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \
+		-e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \
+		-e 's/\.[^\.]\+$$$$//' \
+		-e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
+	sed -n -e 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed -n -e '/\a$$$$/ { s/\./_/g;s/\a$$$$/__start = .;/p; }'\
+		-e '/~$$$$/ { s/\./_/g;s/~$$$$/__end = .;/p; }'\
+		-e '/@$$$$/ { s/\(.*\)@$$$$/*(SORT(\1.*));/p }' > $(1)
+endef
diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8536ds/Makefile
+++ b/nand_spl/board/freescale/mpc8536ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8569mds/Makefile
+++ b/nand_spl/board/freescale/mpc8569mds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8572ds/Makefile
+++ b/nand_spl/board/freescale/mpc8572ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile
index 87784d2..4beb3f3 100644
--- a/nand_spl/board/freescale/mx31pdk/Makefile
+++ b/nand_spl/board/freescale/mx31pdk/Makefile
@@ -6,6 +6,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -36,8 +37,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile
index cdbd492..9c2c588 100644
--- a/nand_spl/board/freescale/p1010rdb/Makefile
+++ b/nand_spl/board/freescale/p1010rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile
index da43521..8c71ee1 100644
--- a/nand_spl/board/freescale/p1023rds/Makefile
+++ b/nand_spl/board/freescale/p1023rds/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/p1_p2_rdb/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
index 46cf709..abd6e68 100644
--- a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile
index 0336346..bfd5bde 100644
--- a/nand_spl/board/karo/tx25/Makefile
+++ b/nand_spl/board/karo/tx25/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/spl/Makefile b/spl/Makefile
index d9b1c2f..6b37339 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -149,7 +149,11 @@ $(START):	depend
 $(LIBS):	depend
 	$(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
 
-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBS)))
+$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot.lst depend
 	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@
 
 depend:	$(obj).depend
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/5] common: Implement support for linker-generated arrays
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  2012-09-29  1:34     ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-29  1:35     ` Marek Vasut
  2012-09-29  1:35     ` [U-Boot] [PATCH 3/5] common: Add .u_boot_list into all linker files Marek Vasut
                       ` (3 subsequent siblings)
  5 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:35 UTC (permalink / raw)
  To: u-boot

This patch adds support for linker-generated array. These arrays
are a generalization of the U-Boot command declaration approach.

Basically, the idea is to generate an array, where elements of the
array are statically initialized at compile time and each element
is declared separatelly at different place. Such array is assembled
together into continuous piece of memory by linker and a pointer to
it's first entry can then be retrieved via accessor.

The actual implementation relies on placing any variable that is to
represent an element of LG-array into particular subsection of the
.u_boot_list linker section . The subsection is determined by user
options. Once compiled, it is possible to dump all symbols placed
in .u_boot_list section and the subsections in which they should be
and generate appropriate bounds for each requested subsection of the
.u_boot_list section. Each such subsection thus contains __start and
__end entries at the begining and end respecitively.

This allows for simple run-time traversing of the array, since the
symbols are properly defined.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 include/linker_lists.h |  148 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)
 create mode 100644 include/linker_lists.h

diff --git a/include/linker_lists.h b/include/linker_lists.h
new file mode 100644
index 0000000..0b405d7
--- /dev/null
+++ b/include/linker_lists.h
@@ -0,0 +1,148 @@
+/*
+ * include/linker_lists.h
+ *
+ * Implementation of linker-generated arrays
+ *
+ * Copyright (C) 2012 Marek Vasut <marex@denx.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ */
+#ifndef __LINKER_LISTS_H__
+#define __LINKER_LISTS_H__
+
+/**
+ * ll_entry_declare() - Declare linker-generated array entry
+ * @_type:	Data type of the entry
+ * @_name:	Name of the entry
+ * @_section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots, for name concatenation)
+ * @_section_d:	Subsection of u_boot_list in which this entry is placed
+ *		(with dots, for section concatenation)
+ *
+ * This macro declares a variable that is placed into a linker-generated
+ * array. This is a basic building block for more advanced use of linker-
+ * generated arrays. The user is expected to build their own macro wrapper
+ * around this one.
+ *
+ * A variable declared using this macro must be compile-time initialized
+ * and is as such placed into subsection of special section, .u_boot_list.
+ * The subsection is specified by the _section_[u,d] parameter, see below.
+ * The base name of the variable is _name, yet the actual variable is
+ * declared as concatenation of
+ *
+ *   %_u_boot_list_ + @_section_u + _ + @_name
+ *
+ * which ensures name uniqueness. This variable shall never be refered
+ * directly though.
+ *
+ * Special precaution must be made when using this macro:
+ * 1) The _type must not contain the "static" keyword, otherwise the entry
+ *    is not generated.
+ *
+ * 2) The @_section_u and @_section_d variables must match, the only difference
+ *    is that in @_section_u is every dot "." character present in @_section_d
+ *    replaced by a single underscore "_" character in @_section_u. The actual
+ *    purpose of these parameters is to select proper subsection in the global
+ *    .u_boot_list section.
+ *
+ * 3) In case a section is declared that contains some array elements AND a
+ *    subsection of this section is declared and contains some elements, it is
+ *    imperative that the elements are of the same type.
+ *
+ * 4) In case an outer section is declared that contains some array elements
+ *    AND am inner subsection of this section is declared and contains some
+ *    elements, then when traversing the outer section, even the elements of
+ *    the inner sections are present in the array.
+ *
+ * Example:
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ *         .x = 3,
+ *         .y = 4,
+ * };
+ */
+#define ll_entry_declare(_type, _name, _section_u, _section_d)		\
+	_type _u_boot_list_##_section_u##_##_name __attribute__((	\
+			unused,	aligned(4),				\
+			section(".u_boot_list."#_section_d"."#_name)))
+
+/**
+ * ll_entry_start() - Point to first entry of linker-generated array
+ * @_type:	Data type of the entry
+ * @_section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns (_type *) pointer to the very first entry of a
+ * linker-generated array placed into subsection of .u_boot_list section
+ * specified by _section_u argument.
+ *
+ * Example:
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ */
+#define ll_entry_start(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		_type *_ll_result = &_u_boot_list_##_section_u##__start;\
+		_ll_result;						\
+	})
+
+/**
+ * ll_entry_count() - Return the number of elements in linker-generated array
+ * @_type:	Data type of the entry
+ * @_section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns the number of elements of a linker-generated array
+ * placed into subsection of .u_boot_list section specified by _section_u
+ * argument. The result is of an unsigned int type.
+ *
+ * Example:
+ * int i;
+ * const unsigned int count = ll_entry_count(struct my_sub_cmd, cmd_sub);
+ * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
+ * for (i = 0; i < count; i++, msc++)
+ *         printf("Entry %i, x=%i y=%i\n", i, msc->x, msc->y);
+ */
+#define ll_entry_count(_type, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##__start;	\
+		extern _type _u_boot_list_##_section_u##__end;		\
+		unsigned int _ll_result =				\
+			&_u_boot_list_##_section_u##__end -		\
+			&_u_boot_list_##_section_u##__start;		\
+		_ll_result;						\
+	})
+
+
+/**
+ * ll_entry_get() - Retrieve entry from linker-generated array by name
+ * @_type:	Data type of the entry
+ * @_name:	Name of the entry
+ * @_section_u:	Subsection of u_boot_list in which this entry is placed
+ *		(with underscores instead of dots)
+ *
+ * This function returns a pointer to a particular entry in LG-array
+ * identified by the subsection of u_boot_list where the entry resides
+ * and it's name.
+ *
+ * Example:
+ * ll_entry_declare(struct my_sub_cmd, my_sub_cmd, cmd_sub, cmd.sub) = {
+ *         .x = 3,
+ *         .y = 4,
+ * };
+ * ...
+ * struct my_sub_cmd *c = ll_entry_get(struct my_sub_cmd, my_sub_cmd, cmd_sub);
+ */
+#define ll_entry_get(_type, _name, _section_u)				\
+	({								\
+		extern _type _u_boot_list_##_section_u##_##_name;	\
+		_type *_ll_result = &_u_boot_list_##_section_u##_##_name;\
+		_ll_result;						\
+	})
+
+#endif	/* __LINKER_LISTS_H__ */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 3/5] common: Add .u_boot_list into all linker files
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  2012-09-29  1:34     ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
  2012-09-29  1:35     ` [U-Boot] [PATCH 2/5] common: Implement support for linker-generated arrays Marek Vasut
@ 2012-09-29  1:35     ` Marek Vasut
  2012-09-29  1:35     ` [U-Boot] [PATCH 4/5] common: Convert the U-Boot commands to LG-arrays Marek Vasut
                       ` (2 subsequent siblings)
  5 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:35 UTC (permalink / raw)
  To: u-boot

Add section for the linker-generated lists into all possible linker
files, so that everyone can easily use these lists. This is mostly
a mechanical adjustment.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    5 +++++
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    4 ++++
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    4 ++++
 arch/arm/cpu/armv7/omap-common/u-boot-spl.lds    |    5 +++++
 arch/arm/cpu/ixp/u-boot.lds                      |    5 +++++
 arch/arm/cpu/u-boot.lds                          |    5 +++++
 arch/avr32/cpu/u-boot.lds                        |    5 +++++
 arch/blackfin/cpu/u-boot.lds                     |    4 ++++
 arch/microblaze/cpu/u-boot.lds                   |    5 +++++
 arch/nds32/cpu/n1213/u-boot.lds                  |    5 +++++
 arch/nios2/cpu/u-boot.lds                        |    5 +++++
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    5 +++++
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    5 +++++
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 +++
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds     |    4 ++++
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    5 +++++
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    5 +++++
 arch/sandbox/cpu/u-boot.lds                      |    5 +++++
 arch/sh/cpu/sh2/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh3/u-boot.lds                       |    4 ++++
 arch/sh/cpu/sh4/u-boot.lds                       |    4 ++++
 arch/x86/cpu/u-boot.lds                          |    5 +++++
 board/BuS/eb_cpu5282/u-boot.lds                  |    5 +++++
 board/LEOX/elpt860/u-boot.lds                    |    5 +++++
 board/RPXClassic/u-boot.lds                      |    5 +++++
 board/RPXClassic/u-boot.lds.debug                |    5 +++++
 board/RPXlite/u-boot.lds                         |    5 +++++
 board/RPXlite/u-boot.lds.debug                   |    5 +++++
 board/RPXlite_dw/u-boot.lds                      |    5 +++++
 board/RPXlite_dw/u-boot.lds.debug                |    5 +++++
 board/RRvision/u-boot.lds                        |    5 +++++
 board/actux1/u-boot.lds                          |    5 +++++
 board/actux2/u-boot.lds                          |    5 +++++
 board/actux3/u-boot.lds                          |    5 +++++
 board/adder/u-boot.lds                           |    5 +++++
 board/ait/cam_enc_4xx/u-boot-spl.lds             |    4 ++++
 board/altera/nios2-generic/u-boot.lds            |    5 +++++
 board/amcc/acadia/u-boot-nand.lds                |    3 +++
 board/amcc/bamboo/u-boot-nand.lds                |    3 +++
 board/amcc/canyonlands/u-boot-nand.lds           |    3 +++
 board/amcc/kilauea/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-nand.lds               |    3 +++
 board/amcc/sequoia/u-boot-ram.lds                |    3 +++
 board/amirix/ap1000/u-boot.lds                   |    5 +++++
 board/astro/mcf5373l/u-boot.lds                  |    5 +++++
 board/c2mon/u-boot.lds                           |    5 +++++
 board/c2mon/u-boot.lds.debug                     |    5 +++++
 board/cobra5272/u-boot.lds                       |    5 +++++
 board/cogent/u-boot.lds                          |    5 +++++
 board/cogent/u-boot.lds.debug                    |    5 +++++
 board/cray/L1/u-boot.lds.debug                   |    5 +++++
 board/dave/PPChameleonEVB/u-boot.lds             |    5 +++++
 board/davinci/da8xxevm/u-boot-spl-da850evm.lds   |    6 ++++++
 board/davinci/da8xxevm/u-boot-spl-hawk.lds       |    5 +++++
 board/dbau1x00/u-boot.lds                        |    5 +++++
 board/dvlhost/u-boot.lds                         |    5 +++++
 board/eltec/mhpc/u-boot.lds                      |    5 +++++
 board/eltec/mhpc/u-boot.lds.debug                |    5 +++++
 board/emk/top860/u-boot.lds                      |    5 +++++
 board/ep88x/u-boot.lds                           |    5 +++++
 board/esd/dasa_sim/u-boot.lds                    |    5 +++++
 board/esd/pmc440/u-boot-nand.lds                 |    3 +++
 board/esd/tasreg/u-boot.lds                      |    5 +++++
 board/esteem192e/u-boot.lds                      |    5 +++++
 board/etx094/u-boot.lds                          |    5 +++++
 board/evb64260/u-boot.lds                        |    5 +++++
 board/fads/u-boot.lds                            |    5 +++++
 board/flagadm/u-boot.lds                         |    5 +++++
 board/flagadm/u-boot.lds.debug                   |    5 +++++
 board/freescale/m5208evbe/u-boot.lds             |    5 +++++
 board/freescale/m52277evb/u-boot.lds             |    5 +++++
 board/freescale/m5235evb/u-boot.lds              |    5 +++++
 board/freescale/m5249evb/u-boot.lds              |    5 +++++
 board/freescale/m5253demo/u-boot.lds             |    5 +++++
 board/freescale/m5253evbe/u-boot.lds             |    5 +++++
 board/freescale/m5271evb/u-boot.lds              |    5 +++++
 board/freescale/m5272c3/u-boot.lds               |    5 +++++
 board/freescale/m5275evb/u-boot.lds              |    5 +++++
 board/freescale/m5282evb/u-boot.lds              |    5 +++++
 board/freescale/m53017evb/u-boot.lds             |    5 +++++
 board/freescale/m5329evb/u-boot.lds              |    5 +++++
 board/freescale/m5373evb/u-boot.lds              |    5 +++++
 board/freescale/m54451evb/u-boot.lds             |    5 +++++
 board/freescale/m54455evb/u-boot.lds             |    5 +++++
 board/freescale/m547xevb/u-boot.lds              |    5 +++++
 board/freescale/m548xevb/u-boot.lds              |    5 +++++
 board/freescale/mx31ads/u-boot.lds               |    5 +++++
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    5 +++++
 board/gaisler/gr_ep2s60/u-boot.lds               |    5 +++++
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    5 +++++
 board/gaisler/grsim/u-boot.lds                   |    5 +++++
 board/gaisler/grsim_leon2/u-boot.lds             |    5 +++++
 board/gen860t/u-boot-flashenv.lds                |    4 ++++
 board/gen860t/u-boot.lds                         |    5 +++++
 board/genietv/u-boot.lds                         |    5 +++++
 board/genietv/u-boot.lds.debug                   |    5 +++++
 board/hermes/u-boot.lds                          |    5 +++++
 board/hermes/u-boot.lds.debug                    |    5 +++++
 board/hymod/u-boot.lds                           |    5 +++++
 board/hymod/u-boot.lds.debug                     |    5 +++++
 board/icu862/u-boot.lds                          |    5 +++++
 board/icu862/u-boot.lds.debug                    |    5 +++++
 board/idmr/u-boot.lds                            |    5 +++++
 board/incaip/u-boot.lds                          |    5 +++++
 board/ip860/u-boot.lds                           |    5 +++++
 board/ip860/u-boot.lds.debug                     |    5 +++++
 board/ivm/u-boot.lds                             |    5 +++++
 board/ivm/u-boot.lds.debug                       |    5 +++++
 board/korat/u-boot-F7FC.lds                      |    3 +++
 board/kup/kup4k/u-boot.lds                       |    5 +++++
 board/kup/kup4k/u-boot.lds.debug                 |    5 +++++
 board/kup/kup4x/u-boot.lds                       |    5 +++++
 board/kup/kup4x/u-boot.lds.debug                 |    5 +++++
 board/lantec/u-boot.lds                          |    5 +++++
 board/lantec/u-boot.lds.debug                    |    5 +++++
 board/lwmon/u-boot.lds                           |    5 +++++
 board/lwmon/u-boot.lds.debug                     |    5 +++++
 board/manroland/uc100/u-boot.lds                 |    5 +++++
 board/matrix_vision/mvsmr/u-boot.lds             |    5 +++++
 board/mbx8xx/u-boot.lds                          |    5 +++++
 board/mbx8xx/u-boot.lds.debug                    |    5 +++++
 board/micronas/vct/u-boot.lds                    |    5 +++++
 board/ml2/u-boot.lds                             |    5 +++++
 board/ml2/u-boot.lds.debug                       |    5 +++++
 board/mousse/u-boot.lds                          |    5 +++++
 board/mpl/pip405/u-boot.lds.debug                |    5 +++++
 board/mvblue/u-boot.lds                          |    5 +++++
 board/netphone/u-boot.lds                        |    5 +++++
 board/netphone/u-boot.lds.debug                  |    5 +++++
 board/netta/u-boot.lds                           |    5 +++++
 board/netta/u-boot.lds.debug                     |    5 +++++
 board/netta2/u-boot.lds                          |    5 +++++
 board/netta2/u-boot.lds.debug                    |    5 +++++
 board/netvia/u-boot.lds                          |    5 +++++
 board/netvia/u-boot.lds.debug                    |    5 +++++
 board/nx823/u-boot.lds                           |    5 +++++
 board/nx823/u-boot.lds.debug                     |    5 +++++
 board/openrisc/openrisc-generic/u-boot.lds       |    5 +++++
 board/pb1x00/u-boot.lds                          |    5 +++++
 board/qemu-mips/u-boot.lds                       |    5 +++++
 board/qi/qi_lb60/u-boot.lds                      |    5 +++++
 board/quantum/u-boot.lds                         |    5 +++++
 board/r360mpi/u-boot.lds                         |    5 +++++
 board/rbc823/u-boot.lds                          |    5 +++++
 board/renesas/sh7757lcr/u-boot.lds               |    4 ++++
 board/rsdproto/u-boot.lds                        |    5 +++++
 board/samsung/smdk5250/smdk5250-uboot-spl.lds    |    5 +++++
 board/samsung/smdk6400/u-boot-nand.lds           |    7 ++++++-
 board/sandburst/karef/u-boot.lds.debug           |    5 +++++
 board/sandburst/metrobox/u-boot.lds.debug        |    5 +++++
 board/sandpoint/u-boot.lds                       |    5 +++++
 board/siemens/IAD210/u-boot.lds                  |    5 +++++
 board/sixnet/u-boot.lds                          |    5 +++++
 board/snmc/qs850/u-boot.lds                      |    5 +++++
 board/snmc/qs860t/u-boot.lds                     |    5 +++++
 board/spc1920/u-boot.lds                         |    5 +++++
 board/spd8xx/u-boot.lds                          |    5 +++++
 board/spd8xx/u-boot.lds.debug                    |    5 +++++
 board/stx/stxxtc/u-boot.lds                      |    5 +++++
 board/stx/stxxtc/u-boot.lds.debug                |    5 +++++
 board/svm_sc8xx/u-boot.lds                       |    5 +++++
 board/tqc/tqm8xx/u-boot.lds                      |    5 +++++
 board/v37/u-boot.lds                             |    5 +++++
 board/vpac270/u-boot-spl.lds                     |    4 ++++
 board/w7o/u-boot.lds.debug                       |    5 +++++
 board/westel/amx860/u-boot.lds                   |    5 +++++
 board/westel/amx860/u-boot.lds.debug             |    5 +++++
 board/xes/xpedite1000/u-boot.lds.debug           |    5 +++++
 examples/standalone/mips.lds                     |    4 ++++
 examples/standalone/nds32.lds                    |    4 ++++
 examples/standalone/sparc.lds                    |    5 +++++
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    5 +++++
 nand_spl/board/karo/tx25/u-boot.lds              |    5 +++++
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    5 +++++
 182 files changed, 880 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index dc6ba34..6ad9169 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__bss_start = .;
 	.bss : { *(.bss) }
 	__bss_end__ = .;
diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
index f8ea38c..dd12607 100644
--- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
index afd3381..65f80c2 100644
--- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
@@ -54,6 +54,10 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
index 1d8efb2..c24c4e9 100644
--- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
@@ -47,6 +47,11 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 	__image_copy_end = .;
 	_end = .;
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index 7199de4..e08f10b 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index e49ca0c..18eaf73 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	__image_copy_end = .;
 
diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
index 0e532f2..5aef19b 100644
--- a/arch/avr32/cpu/u-boot.lds
+++ b/arch/avr32/cpu/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	_got = .;
 	.got : {
 		*(.got)
diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds
index 2b8d285..be70d81 100644
--- a/arch/blackfin/cpu/u-boot.lds
+++ b/arch/blackfin/cpu/u-boot.lds
@@ -119,6 +119,10 @@ SECTIONS
 		___u_boot_cmd_end = .;
 	} >ram_data
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >ram_data
+
 	.text_l1 :
 	{
 		. = ALIGN(4);
diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
index d033a28..86773b5e 100644
--- a/arch/microblaze/cpu/u-boot.lds
+++ b/arch/microblaze/cpu/u-boot.lds
@@ -56,6 +56,11 @@ SECTIONS
 		__u_boot_cmd_start = .;
 		*(.u_boot_cmd)
 		__u_boot_cmd_end = .;
+
+		. = ALIGN(4);
+		.u_boot_list : {
+	INCLUDE u-boot.lst;
+		}
 	}
 
 	.bss ALIGN(0x4):
diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds
index 1903420..48d5b90 100644
--- a/arch/nds32/cpu/n1213/u-boot.lds
+++ b/arch/nds32/cpu/n1213/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	_end = .;
 
diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds
index 4856bd3..33cd0e2 100644
--- a/arch/nios2/cpu/u-boot.lds
+++ b/arch/nios2/cpu/u-boot.lds
@@ -53,6 +53,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
index 24823cd..049ae63 100644
--- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds
+++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds
index 7a4d927..d93c097 100644
--- a/arch/powerpc/cpu/mpc512x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc512x/u-boot.lds
@@ -61,6 +61,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds
index e02b213..2fbc379 100644
--- a/arch/powerpc/cpu/mpc5xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
index 0c6c54e..1574767 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
@@ -70,6 +70,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
index 5dcaec1..52755e6 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds
index 39bb42e..222f907 100644
--- a/arch/powerpc/cpu/mpc8220/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8220/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds
index b30ce76..bb16926 100644
--- a/arch/powerpc/cpu/mpc824x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc824x/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds
index 60b71ec..722d7fb 100644
--- a/arch/powerpc/cpu/mpc8260/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8260/u-boot.lds
@@ -63,6 +63,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds
index 2f4b9ad..416bc07 100644
--- a/arch/powerpc/cpu/mpc83xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
index 8ba9399..5563b5f 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
@@ -74,6 +74,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
index 668158f..6c8ae9a 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
@@ -53,6 +53,10 @@ SECTIONS
 	}
 	_edata  =  .;
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(8);
 	__init_begin = .;
 	__init_end = .;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds
index efe34b7..009214b 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds
index 121e529..e3b19d4 100644
--- a/arch/powerpc/cpu/mpc86xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds
index 2466b79..005ec61 100644
--- a/arch/powerpc/cpu/ppc4xx/u-boot.lds
+++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds
@@ -82,6 +82,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
index 9960138..0a37657 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -28,6 +28,11 @@ SECTIONS
 	_u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	__u_boot_sandbox_option_start = .;
 	_u_boot_sandbox_getopt : { *(.u_boot_sandbox_getopt) }
 	__u_boot_sandbox_option_end = .;
diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds
index b86a822..2331152 100644
--- a/arch/sh/cpu/sh2/u-boot.lds
+++ b/arch/sh/cpu/sh2/u-boot.lds
@@ -80,6 +80,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 
 	PROVIDE (bss_start = .);
diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds
index 9bf8503..9d99434 100644
--- a/arch/sh/cpu/sh3/u-boot.lds
+++ b/arch/sh/cpu/sh3/u-boot.lds
@@ -86,6 +86,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds
index d9c70bc..8702c9e 100644
--- a/arch/sh/cpu/sh4/u-boot.lds
+++ b/arch/sh/cpu/sh4/u-boot.lds
@@ -83,6 +83,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds
index fe28030..aa2b653 100644
--- a/arch/x86/cpu/u-boot.lds
+++ b/arch/x86/cpu/u-boot.lds
@@ -39,6 +39,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	.rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
 
 	. = ALIGN(4);
diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/BuS/eb_cpu5282/u-boot.lds
+++ b/board/BuS/eb_cpu5282/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
index 5aaf6b3..d85943c 100644
--- a/board/LEOX/elpt860/u-boot.lds
+++ b/board/LEOX/elpt860/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXClassic/u-boot.lds
+++ b/board/RPXClassic/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXClassic/u-boot.lds.debug b/board/RPXClassic/u-boot.lds.debug
index 99c48f2..47ad2e7 100644
--- a/board/RPXClassic/u-boot.lds.debug
+++ b/board/RPXClassic/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite/u-boot.lds
+++ b/board/RPXlite/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite/u-boot.lds.debug b/board/RPXlite/u-boot.lds.debug
index 99c48f2..47ad2e7 100644
--- a/board/RPXlite/u-boot.lds.debug
+++ b/board/RPXlite/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/RPXlite_dw/u-boot.lds
+++ b/board/RPXlite_dw/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/RPXlite_dw/u-boot.lds.debug b/board/RPXlite_dw/u-boot.lds.debug
index 4491edd..c76f9d0 100644
--- a/board/RPXlite_dw/u-boot.lds.debug
+++ b/board/RPXlite_dw/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
index 8385373..3c2c708 100644
--- a/board/RRvision/u-boot.lds
+++ b/board/RRvision/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds
index 9dbaa6f..e5d59db 100644
--- a/board/actux1/u-boot.lds
+++ b/board/actux1/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds
index 3575ed9..09bb7ab 100644
--- a/board/actux2/u-boot.lds
+++ b/board/actux2/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds
index 35aab29..71b6791 100644
--- a/board/actux3/u-boot.lds
+++ b/board/actux3/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds
index a762769..62afcb80 100644
--- a/board/adder/u-boot.lds
+++ b/board/adder/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds
index 52c986e..9403c3c 100644
--- a/board/ait/cam_enc_4xx/u-boot-spl.lds
+++ b/board/ait/cam_enc_4xx/u-boot-spl.lds
@@ -48,6 +48,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
 		*(.rel*)
diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds
index 88ced62..764cc7d 100644
--- a/board/altera/nios2-generic/u-boot.lds
+++ b/board/altera/nios2-generic/u-boot.lds
@@ -54,6 +54,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	/* INIT DATA sections - "Small" data (see the gcc -G option)
 	 * is always gp-relative. Here we make all init data sections
 	 * adjacent to simplify the startup code -- and provide
diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/acadia/u-boot-nand.lds
+++ b/board/amcc/acadia/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds
index 3ad8709..2382ea9 100644
--- a/board/amcc/bamboo/u-boot-nand.lds
+++ b/board/amcc/bamboo/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds
index 76f89f1..0816387 100644
--- a/board/amcc/canyonlands/u-boot-nand.lds
+++ b/board/amcc/canyonlands/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds
index ab67de2..bc0356b 100644
--- a/board/amcc/kilauea/u-boot-nand.lds
+++ b/board/amcc/kilauea/u-boot-nand.lds
@@ -76,6 +76,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds
index 07ae8b1..94234de 100644
--- a/board/amcc/sequoia/u-boot-nand.lds
+++ b/board/amcc/sequoia/u-boot-nand.lds
@@ -77,6 +77,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds
index 423400a..0f594f5 100644
--- a/board/amcc/sequoia/u-boot-ram.lds
+++ b/board/amcc/sequoia/u-boot-ram.lds
@@ -68,6 +68,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/amirix/ap1000/u-boot.lds b/board/amirix/ap1000/u-boot.lds
index cd8f5ce..575d390 100644
--- a/board/amirix/ap1000/u-boot.lds
+++ b/board/amirix/ap1000/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds
index a1d8e0f..d800805 100644
--- a/board/astro/mcf5373l/u-boot.lds
+++ b/board/astro/mcf5373l/u-boot.lds
@@ -113,6 +113,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
index b9b8e3c..a170f06 100644
--- a/board/c2mon/u-boot.lds
+++ b/board/c2mon/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/c2mon/u-boot.lds.debug b/board/c2mon/u-boot.lds.debug
index c771102..fd278a4 100644
--- a/board/c2mon/u-boot.lds.debug
+++ b/board/c2mon/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/cobra5272/u-boot.lds
+++ b/board/cobra5272/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
index 2393d8d..3a3d988 100644
--- a/board/cogent/u-boot.lds
+++ b/board/cogent/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug
index 99c48f2..47ad2e7 100644
--- a/board/cogent/u-boot.lds.debug
+++ b/board/cogent/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/cray/L1/u-boot.lds.debug b/board/cray/L1/u-boot.lds.debug
index fcf8ebb..78fe44c 100644
--- a/board/cray/L1/u-boot.lds.debug
+++ b/board/cray/L1/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
index 3b10114..fb40e3d 100644
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ b/board/dave/PPChameleonEVB/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
index 6f6e065..f1b53aa 100644
--- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds
@@ -47,6 +47,12 @@ SECTIONS
 
 	. = ALIGN(4);
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+
+	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+
 	. = ALIGN(4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
index b3a41af..15fa53a 100644
--- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds
+++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds
@@ -58,6 +58,11 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 	__rel_dyn_start = .;
 	__rel_dyn_end = .;
 	__dynsym_start = .;
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/dbau1x00/u-boot.lds
+++ b/board/dbau1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds
index 01ec390..897263e 100644
--- a/board/dvlhost/u-boot.lds
+++ b/board/dvlhost/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	}
 	__u_boot_cmd_end =.;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN (4);
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/eltec/mhpc/u-boot.lds
+++ b/board/eltec/mhpc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/eltec/mhpc/u-boot.lds.debug b/board/eltec/mhpc/u-boot.lds.debug
index c771102..fd278a4 100644
--- a/board/eltec/mhpc/u-boot.lds.debug
+++ b/board/eltec/mhpc/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds
index fb06648..887ee6b 100644
--- a/board/emk/top860/u-boot.lds
+++ b/board/emk/top860/u-boot.lds
@@ -71,6 +71,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds
index 332b35a..0c5a03e 100644
--- a/board/ep88x/u-boot.lds
+++ b/board/ep88x/u-boot.lds
@@ -66,6 +66,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
index b15948d..9a3249d 100644
--- a/board/esd/dasa_sim/u-boot.lds
+++ b/board/esd/dasa_sim/u-boot.lds
@@ -77,6 +77,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds
index 71f0fd2..d4ef403 100644
--- a/board/esd/pmc440/u-boot-nand.lds
+++ b/board/esd/pmc440/u-boot-nand.lds
@@ -106,6 +106,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/esd/tasreg/u-boot.lds
+++ b/board/esd/tasreg/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
index 163b83d..83d9ec0 100644
--- a/board/esteem192e/u-boot.lds
+++ b/board/esteem192e/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
index 8465937..a98ee23 100644
--- a/board/etx094/u-boot.lds
+++ b/board/etx094/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
index 2d031ef..1eb7f30 100644
--- a/board/evb64260/u-boot.lds
+++ b/board/evb64260/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
index 9ea0674..deee255 100644
--- a/board/fads/u-boot.lds
+++ b/board/fads/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/flagadm/u-boot.lds
+++ b/board/flagadm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/flagadm/u-boot.lds.debug b/board/flagadm/u-boot.lds.debug
index c771102..fd278a4 100644
--- a/board/flagadm/u-boot.lds.debug
+++ b/board/flagadm/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds
index 6e39be1..e184013 100644
--- a/board/freescale/m5208evbe/u-boot.lds
+++ b/board/freescale/m5208evbe/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds
index 3e9f4c3..6214098 100644
--- a/board/freescale/m52277evb/u-boot.lds
+++ b/board/freescale/m52277evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds
index d39e734..9b5e5e2 100644
--- a/board/freescale/m5235evb/u-boot.lds
+++ b/board/freescale/m5235evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5249evb/u-boot.lds
+++ b/board/freescale/m5249evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds
index cbd2831..3487a8d 100644
--- a/board/freescale/m5253demo/u-boot.lds
+++ b/board/freescale/m5253demo/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5253evbe/u-boot.lds
+++ b/board/freescale/m5253evbe/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds
index 4717036..3a86350 100644
--- a/board/freescale/m5271evb/u-boot.lds
+++ b/board/freescale/m5271evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds
index c4039ed..d49b0ef 100644
--- a/board/freescale/m5272c3/u-boot.lds
+++ b/board/freescale/m5272c3/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds
index 6c2dfe8..b37b06b 100644
--- a/board/freescale/m5275evb/u-boot.lds
+++ b/board/freescale/m5275evb/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds
index 4ba1964..3132a55 100644
--- a/board/freescale/m5282evb/u-boot.lds
+++ b/board/freescale/m5282evb/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds
index 80935f2..662bd31 100644
--- a/board/freescale/m53017evb/u-boot.lds
+++ b/board/freescale/m53017evb/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds
index 40af8bc..fe5be41 100644
--- a/board/freescale/m5329evb/u-boot.lds
+++ b/board/freescale/m5329evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds
index 19342ac..8ff6fc9 100644
--- a/board/freescale/m5373evb/u-boot.lds
+++ b/board/freescale/m5373evb/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds
index 45924b7..ea0984f 100644
--- a/board/freescale/m54451evb/u-boot.lds
+++ b/board/freescale/m54451evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds
index f341449..fe1b58c 100644
--- a/board/freescale/m54455evb/u-boot.lds
+++ b/board/freescale/m54455evb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds
index 5472689..877eaf2 100644
--- a/board/freescale/m547xevb/u-boot.lds
+++ b/board/freescale/m547xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds
index cf3f38c..33e054b 100644
--- a/board/freescale/m548xevb/u-boot.lds
+++ b/board/freescale/m548xevb/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds
index 79eb7ac..3db5dc3 100644
--- a/board/freescale/mx31ads/u-boot.lds
+++ b/board/freescale/mx31ads/u-boot.lds
@@ -62,6 +62,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds
index 87cb8e3..416761b 100644
--- a/board/gaisler/gr_cpci_ax2000/u-boot.lds
+++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds
index 2fb44aa..43faf26 100644
--- a/board/gaisler/gr_ep2s60/u-boot.lds
+++ b/board/gaisler/gr_ep2s60/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds
index 8719e97..14c631e 100644
--- a/board/gaisler/gr_xc3s_1500/u-boot.lds
+++ b/board/gaisler/gr_xc3s_1500/u-boot.lds
@@ -90,6 +90,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds
index 33890b5..4766465 100644
--- a/board/gaisler/grsim/u-boot.lds
+++ b/board/gaisler/grsim/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds
index cf6e502..cbd4ed6 100644
--- a/board/gaisler/grsim_leon2/u-boot.lds
+++ b/board/gaisler/grsim_leon2/u-boot.lds
@@ -89,6 +89,11 @@ SECTIONS
 	. = ALIGN(4);
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	.data	:
 	{
 		*(.data)
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
index 5bb6c62..1302eaa 100644
--- a/board/gen860t/u-boot-flashenv.lds
+++ b/board/gen860t/u-boot-flashenv.lds
@@ -75,6 +75,10 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+		INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
index be99b51..de57dd1 100644
--- a/board/gen860t/u-boot.lds
+++ b/board/gen860t/u-boot.lds
@@ -75,6 +75,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
index 1d66a9b..45c56bb 100644
--- a/board/genietv/u-boot.lds
+++ b/board/genietv/u-boot.lds
@@ -84,6 +84,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug
index cfa4ef3..4783367 100644
--- a/board/genietv/u-boot.lds.debug
+++ b/board/genietv/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
index ca97115..8b90f6c 100644
--- a/board/hermes/u-boot.lds
+++ b/board/hermes/u-boot.lds
@@ -76,6 +76,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug
index 8a197de..53ffee1 100644
--- a/board/hermes/u-boot.lds.debug
+++ b/board/hermes/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
index 1309f20..83d2dd4 100644
--- a/board/hymod/u-boot.lds
+++ b/board/hymod/u-boot.lds
@@ -114,6 +114,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/hymod/u-boot.lds.debug b/board/hymod/u-boot.lds.debug
index 99c48f2..47ad2e7 100644
--- a/board/hymod/u-boot.lds.debug
+++ b/board/hymod/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
index 93c79a6..23d4405 100644
--- a/board/icu862/u-boot.lds
+++ b/board/icu862/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/icu862/u-boot.lds.debug b/board/icu862/u-boot.lds.debug
index 91d3e67..203f704 100644
--- a/board/icu862/u-boot.lds.debug
+++ b/board/icu862/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds
index f697ccd..b302ba0 100644
--- a/board/idmr/u-boot.lds
+++ b/board/idmr/u-boot.lds
@@ -69,6 +69,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
index 4a59cea..0569133 100644
--- a/board/incaip/u-boot.lds
+++ b/board/incaip/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/ip860/u-boot.lds
+++ b/board/ip860/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug
index 2f61b11..4fc4c0f 100644
--- a/board/ip860/u-boot.lds.debug
+++ b/board/ip860/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
index 1e843eb..d0d9a37 100644
--- a/board/ivm/u-boot.lds
+++ b/board/ivm/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug
index 732a46f..f4c04b3 100644
--- a/board/ivm/u-boot.lds.debug
+++ b/board/ivm/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds
index 6a017e3..da33f00 100644
--- a/board/korat/u-boot-F7FC.lds
+++ b/board/korat/u-boot-F7FC.lds
@@ -112,6 +112,9 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4k/u-boot.lds
+++ b/board/kup/kup4k/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4k/u-boot.lds.debug b/board/kup/kup4k/u-boot.lds.debug
index 4491edd..c76f9d0 100644
--- a/board/kup/kup4k/u-boot.lds.debug
+++ b/board/kup/kup4k/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/kup/kup4x/u-boot.lds
+++ b/board/kup/kup4x/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/kup/kup4x/u-boot.lds.debug b/board/kup/kup4x/u-boot.lds.debug
index 4491edd..c76f9d0 100644
--- a/board/kup/kup4x/u-boot.lds.debug
+++ b/board/kup/kup4x/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
index de0b355..9360839 100644
--- a/board/lantec/u-boot.lds
+++ b/board/lantec/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lantec/u-boot.lds.debug b/board/lantec/u-boot.lds.debug
index 856a99b..7c1ccb2 100644
--- a/board/lantec/u-boot.lds.debug
+++ b/board/lantec/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
index 8bf7324..7dfa157 100644
--- a/board/lwmon/u-boot.lds
+++ b/board/lwmon/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug
index 2412234..0778758 100644
--- a/board/lwmon/u-boot.lds.debug
+++ b/board/lwmon/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds
index 731cec9..d291d60 100644
--- a/board/manroland/uc100/u-boot.lds
+++ b/board/manroland/uc100/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds
index 57c37de..2445b97 100644
--- a/board/matrix_vision/mvsmr/u-boot.lds
+++ b/board/matrix_vision/mvsmr/u-boot.lds
@@ -78,6 +78,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/mbx8xx/u-boot.lds
+++ b/board/mbx8xx/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mbx8xx/u-boot.lds.debug b/board/mbx8xx/u-boot.lds.debug
index a95c47f..7e62932 100644
--- a/board/mbx8xx/u-boot.lds.debug
+++ b/board/mbx8xx/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/micronas/vct/u-boot.lds b/board/micronas/vct/u-boot.lds
index 3a05ef9..273d190 100644
--- a/board/micronas/vct/u-boot.lds
+++ b/board/micronas/vct/u-boot.lds
@@ -57,6 +57,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	. = ALIGN(4);
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
index 9f9ddb8..a6cad6d 100644
--- a/board/ml2/u-boot.lds
+++ b/board/ml2/u-boot.lds
@@ -68,6 +68,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/ml2/u-boot.lds.debug b/board/ml2/u-boot.lds.debug
index fcf8ebb..78fe44c 100644
--- a/board/ml2/u-boot.lds.debug
+++ b/board/ml2/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
index dae2cfc..863468e 100644
--- a/board/mousse/u-boot.lds
+++ b/board/mousse/u-boot.lds
@@ -64,6 +64,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/mpl/pip405/u-boot.lds.debug b/board/mpl/pip405/u-boot.lds.debug
index fcf8ebb..78fe44c 100644
--- a/board/mpl/pip405/u-boot.lds.debug
+++ b/board/mpl/pip405/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
index 11624d2..4610de9 100644
--- a/board/mvblue/u-boot.lds
+++ b/board/mvblue/u-boot.lds
@@ -74,6 +74,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netphone/u-boot.lds
+++ b/board/netphone/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netphone/u-boot.lds.debug b/board/netphone/u-boot.lds.debug
index a001f3f..480feff 100644
--- a/board/netphone/u-boot.lds.debug
+++ b/board/netphone/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta/u-boot.lds
+++ b/board/netta/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta/u-boot.lds.debug b/board/netta/u-boot.lds.debug
index a001f3f..480feff 100644
--- a/board/netta/u-boot.lds.debug
+++ b/board/netta/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netta2/u-boot.lds
+++ b/board/netta2/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netta2/u-boot.lds.debug b/board/netta2/u-boot.lds.debug
index a001f3f..480feff 100644
--- a/board/netta2/u-boot.lds.debug
+++ b/board/netta2/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/netvia/u-boot.lds
+++ b/board/netvia/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug
index 6c7d698..2e3f83e 100644
--- a/board/netvia/u-boot.lds.debug
+++ b/board/netvia/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
index fd4e8a5..4385876 100644
--- a/board/nx823/u-boot.lds
+++ b/board/nx823/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug
index c771102..fd278a4 100644
--- a/board/nx823/u-boot.lds.debug
+++ b/board/nx823/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds
index 1aed197..bc610bd 100644
--- a/board/openrisc/openrisc-generic/u-boot.lds
+++ b/board/openrisc/openrisc-generic/u-boot.lds
@@ -30,6 +30,11 @@ SECTIONS
 	 .u_boot_cmd : { *(.u_boot_cmd) } > ram
 	 __u_boot_cmd_end = .;
 
+	 . = ALIGN(4);
+	 .u_boot_list : {
+	INCLUDE u-boot.lst;
+	 }
+
 	.rodata : {
 		*(.rodata);
 		*(.rodata.*)
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds
index bd0dee1..cac9188 100644
--- a/board/pb1x00/u-boot.lds
+++ b/board/pb1x00/u-boot.lds
@@ -58,6 +58,11 @@ SECTIONS
 	  __u_boot_cmd_start = .;
 	  *(.u_boot_cmd)
 	  __u_boot_cmd_end = .;
+
+	  . = ALIGN(4);
+	  .u_boot_list : {
+	INCLUDE u-boot.lst;
+	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds
index 9460b20..1f37e8b 100644
--- a/board/qemu-mips/u-boot.lds
+++ b/board/qemu-mips/u-boot.lds
@@ -60,6 +60,11 @@ SECTIONS
 	__u_boot_cmd_start = .;
 	*(.u_boot_cmd)
 	__u_boot_cmd_end = .;
+
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
 	}
 
 	uboot_end_data = .;
diff --git a/board/qi/qi_lb60/u-boot.lds b/board/qi/qi_lb60/u-boot.lds
index 7317652..e1bb826 100644
--- a/board/qi/qi_lb60/u-boot.lds
+++ b/board/qi/qi_lb60/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
+	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
 	uboot_end_data = .;
 	num_got_entries = (__got_end - __got_start) >> 2;
 
diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/quantum/u-boot.lds
+++ b/board/quantum/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
index 2fa085a..181468d 100644
--- a/board/r360mpi/u-boot.lds
+++ b/board/r360mpi/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
index d943fb6..50c3eee 100644
--- a/board/rbc823/u-boot.lds
+++ b/board/rbc823/u-boot.lds
@@ -81,6 +81,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
   . = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds
index 38ebe88..cff6ff5 100644
--- a/board/renesas/sh7757lcr/u-boot.lds
+++ b/board/renesas/sh7757lcr/u-boot.lds
@@ -85,6 +85,10 @@ SECTIONS
 	}
 	PROVIDE (__u_boot_cmd_end = .);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	PROVIDE (reloc_dst_end = .);
 	/* _reloc_dst_end = .; */
 
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
index a729c52..ee651d4 100644
--- a/board/rsdproto/u-boot.lds
+++ b/board/rsdproto/u-boot.lds
@@ -101,6 +101,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/samsung/smdk5250/smdk5250-uboot-spl.lds b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
index d78dd77..c6e6414 100644
--- a/board/samsung/smdk5250/smdk5250-uboot-spl.lds
+++ b/board/samsung/smdk5250/smdk5250-uboot-spl.lds
@@ -48,6 +48,11 @@ SECTIONS
 	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
 	. = ALIGN(4);
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	} >.sram
+	. = ALIGN(4);
+
 	/* Align .machine_param on 256 byte boundary for easier searching */
 	.machine_param ALIGN(0x100) : { *(.machine_param) } >.sram
 	. = ALIGN(4);
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds
index f162815..27693f0e 100644
--- a/board/samsung/smdk6400/u-boot-nand.lds
+++ b/board/samsung/smdk6400/u-boot-nand.lds
@@ -51,7 +51,12 @@ SECTIONS
 	.u_boot_cmd : { *(.u_boot_cmd) }
 	__u_boot_cmd_end = .;
 
-	. = ALIGN(4);
+	. = align(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = align(4);
 	.mmudata : { *(.mmudata) }
 
 	. = ALIGN(4);
diff --git a/board/sandburst/karef/u-boot.lds.debug b/board/sandburst/karef/u-boot.lds.debug
index 31746e3..586dc95 100644
--- a/board/sandburst/karef/u-boot.lds.debug
+++ b/board/sandburst/karef/u-boot.lds.debug
@@ -119,6 +119,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/sandburst/metrobox/u-boot.lds.debug b/board/sandburst/metrobox/u-boot.lds.debug
index 4922bd2..48f5be0 100644
--- a/board/sandburst/metrobox/u-boot.lds.debug
+++ b/board/sandburst/metrobox/u-boot.lds.debug
@@ -119,6 +119,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
index e382fd1..a4421a7 100644
--- a/board/sandpoint/u-boot.lds
+++ b/board/sandpoint/u-boot.lds
@@ -72,6 +72,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
index 0e78e4f..3532d3b 100644
--- a/board/siemens/IAD210/u-boot.lds
+++ b/board/siemens/IAD210/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
index 02d1980..4153927 100644
--- a/board/sixnet/u-boot.lds
+++ b/board/sixnet/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
index 9ab248a..039597e 100644
--- a/board/snmc/qs850/u-boot.lds
+++ b/board/snmc/qs850/u-boot.lds
@@ -73,6 +73,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/snmc/qs860t/u-boot.lds
+++ b/board/snmc/qs860t/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds
index d0b60cf..92f78be 100644
--- a/board/spc1920/u-boot.lds
+++ b/board/spc1920/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
index a84e7fd..ada68f1 100644
--- a/board/spd8xx/u-boot.lds
+++ b/board/spd8xx/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug
index a95c47f..7e62932 100644
--- a/board/spd8xx/u-boot.lds.debug
+++ b/board/spd8xx/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds
index a949e4f..86bb3b4 100644
--- a/board/stx/stxxtc/u-boot.lds
+++ b/board/stx/stxxtc/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/stx/stxxtc/u-boot.lds.debug b/board/stx/stxxtc/u-boot.lds.debug
index a001f3f..480feff 100644
--- a/board/stx/stxxtc/u-boot.lds.debug
+++ b/board/stx/stxxtc/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
index c65f022..af83956 100644
--- a/board/svm_sc8xx/u-boot.lds
+++ b/board/svm_sc8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds
index 4f08be6..226cfc1 100644
--- a/board/tqc/tqm8xx/u-boot.lds
+++ b/board/tqc/tqm8xx/u-boot.lds
@@ -87,6 +87,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
index e62d53d..feb3870 100644
--- a/board/v37/u-boot.lds
+++ b/board/v37/u-boot.lds
@@ -70,6 +70,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds
index 1958c2f..b3551dd 100644
--- a/board/vpac270/u-boot-spl.lds
+++ b/board/vpac270/u-boot-spl.lds
@@ -57,6 +57,10 @@ SECTIONS
 		*(.data)
 	}
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.rel.dyn : {
diff --git a/board/w7o/u-boot.lds.debug b/board/w7o/u-boot.lds.debug
index 1c67b30..520acd5 100644
--- a/board/w7o/u-boot.lds.debug
+++ b/board/w7o/u-boot.lds.debug
@@ -110,6 +110,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
index 3470b43..e642a3a 100644
--- a/board/westel/amx860/u-boot.lds
+++ b/board/westel/amx860/u-boot.lds
@@ -79,6 +79,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   . = .;
   __start___ex_table = .;
diff --git a/board/westel/amx860/u-boot.lds.debug b/board/westel/amx860/u-boot.lds.debug
index 91d3e67..203f704 100644
--- a/board/westel/amx860/u-boot.lds.debug
+++ b/board/westel/amx860/u-boot.lds.debug
@@ -111,6 +111,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/xes/xpedite1000/u-boot.lds.debug b/board/xes/xpedite1000/u-boot.lds.debug
index e2e66ae..d685738 100644
--- a/board/xes/xpedite1000/u-boot.lds.debug
+++ b/board/xes/xpedite1000/u-boot.lds.debug
@@ -115,6 +115,11 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
 
+  . = ALIGN(4);
+  .u_boot_list : {
+	INCLUDE u-boot.lst;
+  }
+
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/examples/standalone/mips.lds b/examples/standalone/mips.lds
index 5f766ed..65c654d 100644
--- a/examples/standalone/mips.lds
+++ b/examples/standalone/mips.lds
@@ -39,6 +39,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data  : { *(.data*) }
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = .;
 	_gp = ALIGN(16) + 0x7ff0;
 
diff --git a/examples/standalone/nds32.lds b/examples/standalone/nds32.lds
index 50b4c4b..4e581ad 100644
--- a/examples/standalone/nds32.lds
+++ b/examples/standalone/nds32.lds
@@ -36,6 +36,10 @@ SECTIONS
 	. = ALIGN(4);
 	.data : { *(.data) }
 
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 
 	.got : {
diff --git a/examples/standalone/sparc.lds b/examples/standalone/sparc.lds
index 9733daa..908a9be 100644
--- a/examples/standalone/sparc.lds
+++ b/examples/standalone/sparc.lds
@@ -46,6 +46,11 @@ SECTIONS
 	{
 		*(.data)
 	}
+
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
 	. = ALIGN(4);
 	__data_end = .;
 
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds
index d2b08f6..363690f 100644
--- a/nand_spl/board/freescale/mx31pdk/u-boot.lds
+++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+		INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds
index d2b08f6..8332710 100644
--- a/nand_spl/board/karo/tx25/u-boot.lds
+++ b/nand_spl/board/karo/tx25/u-boot.lds
@@ -51,6 +51,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 		__rel_dyn_start = .;
diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds
index 567f635..7ceae32 100644
--- a/nand_spl/board/samsung/smdk6400/u-boot.lds
+++ b/nand_spl/board/samsung/smdk6400/u-boot.lds
@@ -55,6 +55,11 @@ SECTIONS
 	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
+
+	. = ALIGN(4);
 
 	.rel.dyn : {
 	__rel_dyn_start = .;
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 4/5] common: Convert the U-Boot commands to LG-arrays
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
                       ` (2 preceding siblings ...)
  2012-09-29  1:35     ` [U-Boot] [PATCH 3/5] common: Add .u_boot_list into all linker files Marek Vasut
@ 2012-09-29  1:35     ` Marek Vasut
  2012-09-29  1:35     ` [U-Boot] [PATCH 5/5] common: Discard the __u_boot_cmd section Marek Vasut
  2012-09-29  2:44     ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  5 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:35 UTC (permalink / raw)
  To: u-boot

This patch converts the old method of creating a list of command
onto the new LG-arrays code. The old u_boot_cmd section is converted
to new u_boot_list_cmd subsection and LG-array macros used as needed.

Minor adjustments had to be made to the common code to work with the
LG-array macros, mostly the fixup_cmdtable() calls are now passed the
ll_entry_start and ll_entry_count instead of linker-generated symbols.

The command.c had to be adjusted as well so it would use the newly
introduced LG-array API instead of directly using linker-generated
symbols.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/imx-common/cmd_bmode.c |   11 +++++++----
 arch/avr32/lib/board.c          |    4 ++--
 arch/m68k/lib/board.c           |    4 ++--
 arch/mips/lib/board.c           |    4 ++--
 arch/nds32/lib/board.c          |    4 ++--
 arch/sparc/lib/board.c          |    4 ++--
 common/cmd_help.c               |    8 ++++----
 common/command.c                |   17 ++++++++++-------
 doc/README.commands             |   10 +++++-----
 include/command.h               |   26 ++++++++++++++------------
 10 files changed, 50 insertions(+), 42 deletions(-)

diff --git a/arch/arm/imx-common/cmd_bmode.c b/arch/arm/imx-common/cmd_bmode.c
index 02fe72e..ddc14b0 100644
--- a/arch/arm/imx-common/cmd_bmode.c
+++ b/arch/arm/imx-common/cmd_bmode.c
@@ -24,6 +24,7 @@
 #include <asm/io.h>
 #include <asm/imx-common/boot_mode.h>
 #include <malloc.h>
+#include <command.h>
 
 static const struct boot_mode *modes[2];
 
@@ -103,9 +104,11 @@ void add_board_boot_modes(const struct boot_mode *p)
 	int size;
 	char *dest;
 
-	if (__u_boot_cmd_bmode.usage) {
-		free(__u_boot_cmd_bmode.usage);
-		__u_boot_cmd_bmode.usage = NULL;
+	cmd_tbl_t *entry = ll_entry_get(cmd_tbl_t, bmode, cmd);
+
+	if (entry->usage) {
+		free(entry->usage);
+		entry->usage = NULL;
 	}
 
 	modes[0] = p;
@@ -114,6 +117,6 @@ void add_board_boot_modes(const struct boot_mode *p)
 	dest = malloc(size);
 	if (dest) {
 		create_usage(dest);
-		__u_boot_cmd_bmode.usage = dest;
+		entry->usage = dest;
 	}
 }
diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index 9d3b76e..e3287c4 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -272,8 +272,8 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
 	/*
 	 * We have to relocate the command table manually
 	 */
-	fixup_cmdtable(&__u_boot_cmd_start,
-		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start));
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+			ll_entry_count(cmd_tbl_t, cmd));
 #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */
 
 	/* there are some other pointer constants we must deal with */
diff --git a/arch/m68k/lib/board.c b/arch/m68k/lib/board.c
index 2add630..fc94f2b 100644
--- a/arch/m68k/lib/board.c
+++ b/arch/m68k/lib/board.c
@@ -417,8 +417,8 @@ void board_init_r (gd_t *id, ulong dest_addr)
 	/*
 	 * We have to relocate the command table manually
 	 */
-	fixup_cmdtable(&__u_boot_cmd_start,
-		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start));
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+			ll_entry_count(cmd_tbl_t, cmd));
 #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */
 
 	/* there are some other pointer constants we must deal with */
diff --git a/arch/mips/lib/board.c b/arch/mips/lib/board.c
index b14b33e..7ddd778 100644
--- a/arch/mips/lib/board.c
+++ b/arch/mips/lib/board.c
@@ -266,8 +266,8 @@ void board_init_r(gd_t *id, ulong dest_addr)
 	/*
 	 * We have to relocate the command table manually
 	 */
-	fixup_cmdtable(&__u_boot_cmd_start,
-		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start));
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+			ll_entry_count(cmd_tbl_t, cmd));
 #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */
 
 	/* there are some other pointer constants we must deal with */
diff --git a/arch/nds32/lib/board.c b/arch/nds32/lib/board.c
index 17d3ee0..b2fa40d 100644
--- a/arch/nds32/lib/board.c
+++ b/arch/nds32/lib/board.c
@@ -320,8 +320,8 @@ void board_init_r(gd_t *id, ulong dest_addr)
 	/*
 	 * We have to relocate the command table manually
 	 */
-	fixup_cmdtable(&__u_boot_cmd_start,
-		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start));
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+			ll_entry_count(cmd_tbl_t, cmd));
 #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */
 
 #ifdef CONFIG_SERIAL_MULTI
diff --git a/arch/sparc/lib/board.c b/arch/sparc/lib/board.c
index ff0e0f2..32d025a 100644
--- a/arch/sparc/lib/board.c
+++ b/arch/sparc/lib/board.c
@@ -246,8 +246,8 @@ void board_init_f(ulong bootflag)
 	/*
 	 * We have to relocate the command table manually
 	 */
-	fixup_cmdtable(&__u_boot_cmd_start,
-		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start));
+	fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+			ll_entry_count(cmd_tbl_t, cmd));
 #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */
 
 #if defined(CONFIG_CMD_AMBAPP) && defined(CONFIG_SYS_AMBAPP_PRINT_ON_STARTUP)
diff --git a/common/cmd_help.c b/common/cmd_help.c
index 8c8178e..3178a1a 100644
--- a/common/cmd_help.c
+++ b/common/cmd_help.c
@@ -26,9 +26,9 @@
 
 int do_help(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 {
-	return _do_help(&__u_boot_cmd_start,
-			&__u_boot_cmd_end - &__u_boot_cmd_start,
-			cmdtp, flag, argc, argv);
+	cmd_tbl_t *start = ll_entry_start(cmd_tbl_t, cmd);
+	const int len = ll_entry_count(cmd_tbl_t, cmd);
+	return _do_help(start, len, cmdtp, flag, argc, argv);
 }
 
 U_BOOT_CMD(
@@ -41,7 +41,7 @@ U_BOOT_CMD(
 );
 
 /* This does not use the U_BOOT_CMD macro as ? can't be used in symbol names */
-cmd_tbl_t __u_boot_cmd_question_mark Struct_Section = {
+ll_entry_declare(cmd_tbl_t, question_mark, cmd, cmd) = {
 	"?",	CONFIG_SYS_MAXARGS,	1,	do_help,
 	"alias for 'help'",
 #ifdef  CONFIG_SYS_LONGHELP
diff --git a/common/command.c b/common/command.c
index aa0fb0a..50c8429 100644
--- a/common/command.c
+++ b/common/command.c
@@ -137,8 +137,9 @@ cmd_tbl_t *find_cmd_tbl (const char *cmd, cmd_tbl_t *table, int table_len)
 
 cmd_tbl_t *find_cmd (const char *cmd)
 {
-	int len = &__u_boot_cmd_end - &__u_boot_cmd_start;
-	return find_cmd_tbl(cmd, &__u_boot_cmd_start, len);
+	cmd_tbl_t *start = ll_entry_start(cmd_tbl_t, cmd);
+	const int len = ll_entry_count(cmd_tbl_t, cmd);
+	return find_cmd_tbl(cmd, start, len);
 }
 
 int cmd_usage(const cmd_tbl_t *cmdtp)
@@ -181,7 +182,9 @@ int var_complete(int argc, char * const argv[], char last_char, int maxv, char *
 
 static int complete_cmdv(int argc, char * const argv[], char last_char, int maxv, char *cmdv[])
 {
-	cmd_tbl_t *cmdtp;
+	cmd_tbl_t *cmdtp = ll_entry_start(cmd_tbl_t, cmd);
+	const int count = ll_entry_count(cmd_tbl_t, cmd);
+	const cmd_tbl_t *cmdend = cmdtp + count;
 	const char *p;
 	int len, clen;
 	int n_found = 0;
@@ -195,12 +198,12 @@ static int complete_cmdv(int argc, char * const argv[], char last_char, int maxv
 
 	if (argc == 0) {
 		/* output full list of commands */
-		for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
+		for (; cmdtp != cmdend; cmdtp++) {
 			if (n_found >= maxv - 2) {
-				cmdv[n_found++] = "...";
+				cmdv[n_found] = "...";
 				break;
 			}
-			cmdv[n_found++] = cmdtp->name;
+			cmdv[n_found] = cmdtp->name;
 		}
 		cmdv[n_found] = NULL;
 		return n_found;
@@ -228,7 +231,7 @@ static int complete_cmdv(int argc, char * const argv[], char last_char, int maxv
 		len = p - cmd;
 
 	/* return the partial matches */
-	for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
+	for (; cmdtp != cmdend; cmdtp++) {
 
 		clen = strlen(cmdtp->name);
 		if (clen < len)
diff --git a/doc/README.commands b/doc/README.commands
index 125f077..ec492b2 100644
--- a/doc/README.commands
+++ b/doc/README.commands
@@ -15,12 +15,12 @@ help:	 Long description. This is a string
 
 **** Behind the scene ******
 
-The structure created is named with a special prefix (__u_boot_cmd_)
+The structure created is named with a special prefix (__u_boot_list_cmd_)
 and placed by the linker in a special section.
 
 This makes it possible for the final link to extract all commands
 compiled into any object code and construct a static array so the
-command can be found in an array starting at __u_boot_cmd_start.
+command can be found in an array starting@_u_boot_list_cmd__start.
 
 To ensure that the linker does not discard these symbols when linking
 full U-Boot we generate a list of all the commands we have built (based
@@ -33,6 +33,6 @@ If a new board is defined do not forget to define the command section
 by writing in u-boot.lds ($(TOPDIR)/board/boardname/u-boot.lds) these
 3 lines:
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
+	.u_boot_list : {
+	INCLUDE u-boot.lst;
+	}
diff --git a/include/command.h b/include/command.h
index 1f06aa1..24864d5 100644
--- a/include/command.h
+++ b/include/command.h
@@ -28,6 +28,7 @@
 #define __COMMAND_H
 
 #include <config.h>
+#include <linker_lists.h>
 
 #ifndef NULL
 #define NULL	0
@@ -153,9 +154,6 @@ int cmd_process(int flag, int argc, char * const argv[],
 #define CMD_FLAG_REPEAT		0x0001	/* repeat last command		*/
 #define CMD_FLAG_BOOTD		0x0002	/* command is from bootd	*/
 
-#define Struct_Section  __attribute__((unused, section(".u_boot_cmd"), \
-		aligned(4)))
-
 #ifdef CONFIG_AUTO_COMPLETE
 # define _CMD_COMPLETE(x) x,
 #else
@@ -167,18 +165,22 @@ int cmd_process(int flag, int argc, char * const argv[],
 # define _CMD_HELP(x)
 #endif
 
-#define U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) \
-	{#name, maxargs, rep, cmd, usage, _CMD_HELP(help) _CMD_COMPLETE(comp)}
+#define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,		\
+				_usage, _help, _comp)			\
+		{ #_name, _maxargs, _rep, _cmd, _usage,			\
+			_CMD_HELP(_help) _CMD_COMPLETE(_comp) }
 
-#define U_BOOT_CMD_MKENT(name,maxargs,rep,cmd,usage,help) \
-	U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,NULL)
+#define U_BOOT_CMD_MKENT(_name, _maxargs, _rep, _cmd, _usage, _help)	\
+	U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,		\
+					_usage, _help, NULL)
 
-#define U_BOOT_CMD_COMPLETE(name,maxargs,rep,cmd,usage,help,comp) \
-	cmd_tbl_t __u_boot_cmd_##name Struct_Section = \
-		U_BOOT_CMD_MKENT_COMPLETE(name,maxargs,rep,cmd,usage,help,comp)
+#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \
+	ll_entry_declare(cmd_tbl_t, _name, cmd, cmd) =			\
+		U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,	\
+						_usage, _help, _comp);
 
-#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \
-	U_BOOT_CMD_COMPLETE(name,maxargs,rep,cmd,usage,help,NULL)
+#define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)		\
+	U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL)
 
 #if defined(CONFIG_NEEDS_MANUAL_RELOC)
 void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 5/5] common: Discard the __u_boot_cmd section
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
                       ` (3 preceding siblings ...)
  2012-09-29  1:35     ` [U-Boot] [PATCH 4/5] common: Convert the U-Boot commands to LG-arrays Marek Vasut
@ 2012-09-29  1:35     ` Marek Vasut
  2012-09-29  2:44     ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
  5 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  1:35 UTC (permalink / raw)
  To: u-boot

The command declaration now uses the new LG-array method to generate
list of commands. Thus the __u_boot_cmd section is now superseded and
redundant and therefore can be removed. Also, remove externed symbols
associated with this section from include/command.h .

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 arch/arm/cpu/arm920t/ep93xx/u-boot.lds           |    3 ---
 arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds        |    3 ---
 arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds      |    3 ---
 arch/arm/cpu/ixp/u-boot.lds                      |    3 ---
 arch/arm/cpu/u-boot.lds                          |    3 ---
 arch/avr32/cpu/u-boot.lds                        |    5 -----
 arch/blackfin/cpu/u-boot.lds                     |    6 ------
 arch/microblaze/cpu/u-boot.lds                   |   11 -----------
 arch/nds32/cpu/n1213/u-boot.lds                  |    3 ---
 arch/nios2/cpu/u-boot.lds                        |    7 -------
 arch/powerpc/cpu/74xx_7xx/u-boot.lds             |    3 ---
 arch/powerpc/cpu/mpc512x/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc5xx/u-boot.lds               |    3 ---
 arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds |    3 ---
 arch/powerpc/cpu/mpc5xxx/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc8220/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc824x/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc8260/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc83xx/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc85xx/u-boot-nand.lds         |    3 ---
 arch/powerpc/cpu/mpc85xx/u-boot.lds              |    3 ---
 arch/powerpc/cpu/mpc86xx/u-boot.lds              |    3 ---
 arch/powerpc/cpu/ppc4xx/u-boot.lds               |    3 ---
 arch/sandbox/cpu/u-boot.lds                      |    3 ---
 arch/sh/cpu/sh2/u-boot.lds                       |    7 -------
 arch/sh/cpu/sh3/u-boot.lds                       |    7 -------
 arch/sh/cpu/sh4/u-boot.lds                       |    7 -------
 arch/x86/cpu/u-boot.lds                          |    4 ----
 board/BuS/eb_cpu5282/u-boot.lds                  |    3 ---
 board/LEOX/elpt860/u-boot.lds                    |    3 ---
 board/RPXClassic/u-boot.lds                      |    3 ---
 board/RPXClassic/u-boot.lds.debug                |    3 ---
 board/RPXlite/u-boot.lds                         |    3 ---
 board/RPXlite/u-boot.lds.debug                   |    3 ---
 board/RPXlite_dw/u-boot.lds                      |    3 ---
 board/RPXlite_dw/u-boot.lds.debug                |    3 ---
 board/RRvision/u-boot.lds                        |    3 ---
 board/actux1/u-boot.lds                          |    5 -----
 board/actux2/u-boot.lds                          |    5 -----
 board/actux3/u-boot.lds                          |    5 -----
 board/adder/u-boot.lds                           |    3 ---
 board/altera/nios2-generic/u-boot.lds            |    7 -------
 board/amcc/acadia/u-boot-nand.lds                |    3 ---
 board/amcc/bamboo/u-boot-nand.lds                |    3 ---
 board/amcc/canyonlands/u-boot-nand.lds           |    3 ---
 board/amcc/kilauea/u-boot-nand.lds               |    3 ---
 board/amcc/sequoia/u-boot-nand.lds               |    3 ---
 board/amcc/sequoia/u-boot-ram.lds                |    3 ---
 board/amirix/ap1000/u-boot.lds                   |    3 ---
 board/astro/mcf5373l/u-boot.lds                  |    3 ---
 board/c2mon/u-boot.lds                           |    3 ---
 board/c2mon/u-boot.lds.debug                     |    3 ---
 board/cobra5272/u-boot.lds                       |    3 ---
 board/cogent/u-boot.lds                          |    3 ---
 board/cogent/u-boot.lds.debug                    |    3 ---
 board/cray/L1/u-boot.lds.debug                   |    3 ---
 board/dave/PPChameleonEVB/u-boot.lds             |    3 ---
 board/dbau1x00/u-boot.lds                        |    9 ---------
 board/dvlhost/u-boot.lds                         |    5 -----
 board/eltec/mhpc/u-boot.lds                      |    3 ---
 board/eltec/mhpc/u-boot.lds.debug                |    3 ---
 board/emk/top860/u-boot.lds                      |    3 ---
 board/ep88x/u-boot.lds                           |    3 ---
 board/esd/dasa_sim/u-boot.lds                    |    3 ---
 board/esd/pmc440/u-boot-nand.lds                 |    3 ---
 board/esd/tasreg/u-boot.lds                      |    3 ---
 board/esteem192e/u-boot.lds                      |    3 ---
 board/etx094/u-boot.lds                          |    3 ---
 board/evb64260/u-boot.lds                        |    3 ---
 board/fads/u-boot.lds                            |    3 ---
 board/flagadm/u-boot.lds                         |    3 ---
 board/flagadm/u-boot.lds.debug                   |    3 ---
 board/freescale/m5208evbe/u-boot.lds             |    3 ---
 board/freescale/m52277evb/u-boot.lds             |    3 ---
 board/freescale/m5235evb/u-boot.lds              |    3 ---
 board/freescale/m5249evb/u-boot.lds              |    3 ---
 board/freescale/m5253demo/u-boot.lds             |    3 ---
 board/freescale/m5253evbe/u-boot.lds             |    3 ---
 board/freescale/m5271evb/u-boot.lds              |    3 ---
 board/freescale/m5272c3/u-boot.lds               |    3 ---
 board/freescale/m5275evb/u-boot.lds              |    3 ---
 board/freescale/m5282evb/u-boot.lds              |    3 ---
 board/freescale/m53017evb/u-boot.lds             |    3 ---
 board/freescale/m5329evb/u-boot.lds              |    3 ---
 board/freescale/m5373evb/u-boot.lds              |    3 ---
 board/freescale/m54451evb/u-boot.lds             |    3 ---
 board/freescale/m54455evb/u-boot.lds             |    3 ---
 board/freescale/m547xevb/u-boot.lds              |    3 ---
 board/freescale/m548xevb/u-boot.lds              |    3 ---
 board/freescale/mx31ads/u-boot.lds               |    3 ---
 board/gaisler/gr_cpci_ax2000/u-boot.lds          |    4 ----
 board/gaisler/gr_ep2s60/u-boot.lds               |    4 ----
 board/gaisler/gr_xc3s_1500/u-boot.lds            |    4 ----
 board/gaisler/grsim/u-boot.lds                   |    4 ----
 board/gaisler/grsim_leon2/u-boot.lds             |    4 ----
 board/gen860t/u-boot-flashenv.lds                |    3 ---
 board/gen860t/u-boot.lds                         |    3 ---
 board/genietv/u-boot.lds                         |    3 ---
 board/genietv/u-boot.lds.debug                   |    3 ---
 board/hermes/u-boot.lds                          |    3 ---
 board/hermes/u-boot.lds.debug                    |    3 ---
 board/hymod/u-boot.lds                           |    3 ---
 board/hymod/u-boot.lds.debug                     |    3 ---
 board/icu862/u-boot.lds                          |    3 ---
 board/icu862/u-boot.lds.debug                    |    3 ---
 board/idmr/u-boot.lds                            |    3 ---
 board/incaip/u-boot.lds                          |    9 ---------
 board/ip860/u-boot.lds                           |    3 ---
 board/ip860/u-boot.lds.debug                     |    3 ---
 board/ivm/u-boot.lds                             |    3 ---
 board/ivm/u-boot.lds.debug                       |    3 ---
 board/korat/u-boot-F7FC.lds                      |    3 ---
 board/kup/kup4k/u-boot.lds                       |    3 ---
 board/kup/kup4k/u-boot.lds.debug                 |    3 ---
 board/kup/kup4x/u-boot.lds                       |    3 ---
 board/kup/kup4x/u-boot.lds.debug                 |    3 ---
 board/lantec/u-boot.lds                          |    3 ---
 board/lantec/u-boot.lds.debug                    |    3 ---
 board/lwmon/u-boot.lds                           |    3 ---
 board/lwmon/u-boot.lds.debug                     |    3 ---
 board/manroland/uc100/u-boot.lds                 |    3 ---
 board/matrix_vision/mvsmr/u-boot.lds             |    3 ---
 board/mbx8xx/u-boot.lds                          |    3 ---
 board/mbx8xx/u-boot.lds.debug                    |    3 ---
 board/micronas/vct/u-boot.lds                    |    9 ---------
 board/ml2/u-boot.lds                             |    3 ---
 board/ml2/u-boot.lds.debug                       |    3 ---
 board/mousse/u-boot.lds                          |    3 ---
 board/mousse/u-boot.lds.ram                      |    3 ---
 board/mousse/u-boot.lds.rom                      |    3 ---
 board/mpl/pip405/u-boot.lds.debug                |    3 ---
 board/mvblue/u-boot.lds                          |    3 ---
 board/netphone/u-boot.lds                        |    3 ---
 board/netphone/u-boot.lds.debug                  |    3 ---
 board/netta/u-boot.lds                           |    3 ---
 board/netta/u-boot.lds.debug                     |    3 ---
 board/netta2/u-boot.lds                          |    3 ---
 board/netta2/u-boot.lds.debug                    |    3 ---
 board/netvia/u-boot.lds                          |    3 ---
 board/netvia/u-boot.lds.debug                    |    3 ---
 board/nx823/u-boot.lds                           |    3 ---
 board/nx823/u-boot.lds.debug                     |    3 ---
 board/openrisc/openrisc-generic/u-boot.lds       |    3 ---
 board/pb1x00/u-boot.lds                          |    9 ---------
 board/qemu-mips/u-boot.lds                       |    9 ---------
 board/qi/qi_lb60/u-boot.lds                      |    3 ---
 board/quantum/u-boot.lds                         |    3 ---
 board/r360mpi/u-boot.lds                         |    3 ---
 board/rbc823/u-boot.lds                          |    3 ---
 board/renesas/sh7757lcr/u-boot.lds               |    7 -------
 board/rsdproto/u-boot.lds                        |    3 ---
 board/samsung/smdk6400/u-boot-nand.lds           |    3 ---
 board/sandburst/karef/u-boot.lds.debug           |    3 ---
 board/sandburst/metrobox/u-boot.lds.debug        |    3 ---
 board/sandpoint/u-boot.lds                       |    3 ---
 board/siemens/IAD210/u-boot.lds                  |    3 ---
 board/sixnet/u-boot.lds                          |    3 ---
 board/snmc/qs850/u-boot.lds                      |    3 ---
 board/snmc/qs860t/u-boot.lds                     |    3 ---
 board/spc1920/u-boot.lds                         |    3 ---
 board/spd8xx/u-boot.lds                          |    3 ---
 board/spd8xx/u-boot.lds.debug                    |    3 ---
 board/stx/stxxtc/u-boot.lds                      |    3 ---
 board/stx/stxxtc/u-boot.lds.debug                |    3 ---
 board/svm_sc8xx/u-boot.lds                       |    3 ---
 board/tqc/tqm8xx/u-boot.lds                      |    3 ---
 board/v37/u-boot.lds                             |    3 ---
 board/w7o/u-boot.lds.debug                       |    3 ---
 board/westel/amx860/u-boot.lds                   |    3 ---
 board/westel/amx860/u-boot.lds.debug             |    3 ---
 board/xes/xpedite1000/u-boot.lds.debug           |    3 ---
 include/command.h                                |    2 --
 nand_spl/board/freescale/mx31pdk/u-boot.lds      |    3 ---
 nand_spl/board/karo/tx25/u-boot.lds              |    3 ---
 nand_spl/board/samsung/smdk6400/u-boot.lds       |    3 ---
 175 files changed, 605 deletions(-)

diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index 6ad9169..7da65ab 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -48,9 +48,6 @@ SECTIONS
 	.got : { *(.got) }
 
 	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
index dd12607..2a9b150 100644
--- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
@@ -50,9 +50,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
index 65f80c2..abb8aa1 100644
--- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
+++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
@@ -50,9 +50,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index e08f10b..e444619 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -46,9 +46,6 @@ SECTIONS
 	. = ALIGN(4);
 
 	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index 18eaf73..71adb6c 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -49,9 +49,6 @@ SECTIONS
 	. = ALIGN(4);
 
 	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds
index 5aef19b..d035502 100644
--- a/arch/avr32/cpu/u-boot.lds
+++ b/arch/avr32/cpu/u-boot.lds
@@ -47,11 +47,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : {
-		KEEP(*(.u_boot_cmd))
-	}
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds
index be70d81..0c87618 100644
--- a/arch/blackfin/cpu/u-boot.lds
+++ b/arch/blackfin/cpu/u-boot.lds
@@ -112,12 +112,6 @@ SECTIONS
 		CONSTRUCTORS
 	} >ram_data
 
-	.u_boot_cmd :
-	{
-		___u_boot_cmd_start = .;
-		*(.u_boot_cmd)
-		___u_boot_cmd_end = .;
-	} >ram_data
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds
index 86773b5e..7ef14a6 100644
--- a/arch/microblaze/cpu/u-boot.lds
+++ b/arch/microblaze/cpu/u-boot.lds
@@ -50,17 +50,6 @@ SECTIONS
 		__data_end = .;
 	}
 
-	.u_boot_cmd ALIGN(0x4):
-	{
-		. = .;
-		__u_boot_cmd_start = .;
-		*(.u_boot_cmd)
-		__u_boot_cmd_end = .;
-
-		. = ALIGN(4);
-		.u_boot_list : {
-	INCLUDE u-boot.lst;
-		}
 	}
 
 	.bss ALIGN(0x4):
diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds
index 48d5b90..c46d8bb 100644
--- a/arch/nds32/cpu/n1213/u-boot.lds
+++ b/arch/nds32/cpu/n1213/u-boot.lds
@@ -52,9 +52,6 @@ SECTIONS
 	}
 
 	. = .;
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds
index 33cd0e2..4fd2fb0 100644
--- a/arch/nios2/cpu/u-boot.lds
+++ b/arch/nios2/cpu/u-boot.lds
@@ -45,13 +45,6 @@ SECTIONS
 	 * the initialization code relocates the command table as
 	 * well -- admittedly, this is just pure laziness ;-)
 	 */
-	__u_boot_cmd_start = .;
-	.u_boot_cmd :
-	{
-	  *(.u_boot_cmd)
-	}
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
index 049ae63..0575b68 100644
--- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds
+++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds
@@ -62,9 +62,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds
index d93c097..4056af4 100644
--- a/arch/powerpc/cpu/mpc512x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc512x/u-boot.lds
@@ -57,9 +57,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds
index 2fbc379..7d1fc30 100644
--- a/arch/powerpc/cpu/mpc5xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds
@@ -65,9 +65,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
index 1574767..6f66ee0 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
index 52755e6..0d0fe22 100644
--- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds
@@ -60,9 +60,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds
index 222f907..db586ab 100644
--- a/arch/powerpc/cpu/mpc8220/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8220/u-boot.lds
@@ -59,9 +59,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds
index bb16926..c2f1469 100644
--- a/arch/powerpc/cpu/mpc824x/u-boot.lds
+++ b/arch/powerpc/cpu/mpc824x/u-boot.lds
@@ -60,9 +60,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds
index 722d7fb..50f1713 100644
--- a/arch/powerpc/cpu/mpc8260/u-boot.lds
+++ b/arch/powerpc/cpu/mpc8260/u-boot.lds
@@ -59,9 +59,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds
index 416bc07..be604a1 100644
--- a/arch/powerpc/cpu/mpc83xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds
@@ -58,9 +58,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
index 5563b5f..39886b5 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
@@ -70,9 +70,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds
index 009214b..4c26da9 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds
@@ -77,9 +77,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds
index e3b19d4..19b36f9 100644
--- a/arch/powerpc/cpu/mpc86xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds
@@ -64,9 +64,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds
index 005ec61..6907b18 100644
--- a/arch/powerpc/cpu/ppc4xx/u-boot.lds
+++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds
@@ -78,9 +78,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds
index 0a37657..dba1a32 100644
--- a/arch/sandbox/cpu/u-boot.lds
+++ b/arch/sandbox/cpu/u-boot.lds
@@ -24,9 +24,6 @@
 
 SECTIONS
 {
-	__u_boot_cmd_start = .;
-	_u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds
index 2331152..41a783d 100644
--- a/arch/sh/cpu/sh2/u-boot.lds
+++ b/arch/sh/cpu/sh2/u-boot.lds
@@ -72,13 +72,6 @@ SECTIONS
 	}
 	PROVIDE (_egot = .);
 
-	PROVIDE (__u_boot_cmd_start = .);
-	.u_boot_cmd :
-	{
-		*(.u_boot_cmd)
-		. = ALIGN(4);
-	}
-	PROVIDE (__u_boot_cmd_end = .);
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds
index 9d99434..1c7cc80 100644
--- a/arch/sh/cpu/sh3/u-boot.lds
+++ b/arch/sh/cpu/sh3/u-boot.lds
@@ -78,13 +78,6 @@ SECTIONS
 	}
 	PROVIDE (_egot = .);
 
-	PROVIDE (__u_boot_cmd_start = .);
-	.u_boot_cmd :
-	{
-		*(.u_boot_cmd)
-		. = ALIGN(4);
-	}
-	PROVIDE (__u_boot_cmd_end = .);
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds
index 8702c9e..70e7c54 100644
--- a/arch/sh/cpu/sh4/u-boot.lds
+++ b/arch/sh/cpu/sh4/u-boot.lds
@@ -75,13 +75,6 @@ SECTIONS
 	}
 	PROVIDE (_egot = .);
 
-	PROVIDE (__u_boot_cmd_start = .);
-	.u_boot_cmd :
-	{
-		*(.u_boot_cmd)
-		. = ALIGN(4);
-	}
-	PROVIDE (__u_boot_cmd_end = .);
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds
index aa2b653..7c1eb6a 100644
--- a/arch/x86/cpu/u-boot.lds
+++ b/arch/x86/cpu/u-boot.lds
@@ -33,10 +33,6 @@ SECTIONS
 	.text  : { *(.text*); }
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds
index 3132a55..2d27f06 100644
--- a/board/BuS/eb_cpu5282/u-boot.lds
+++ b/board/BuS/eb_cpu5282/u-boot.lds
@@ -65,9 +65,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds
index d85943c..5aafcfb 100644
--- a/board/LEOX/elpt860/u-boot.lds
+++ b/board/LEOX/elpt860/u-boot.lds
@@ -86,9 +86,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/RPXClassic/u-boot.lds
+++ b/board/RPXClassic/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXClassic/u-boot.lds.debug b/board/RPXClassic/u-boot.lds.debug
index 47ad2e7..888cbc5 100644
--- a/board/RPXClassic/u-boot.lds.debug
+++ b/board/RPXClassic/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/RPXlite/u-boot.lds
+++ b/board/RPXlite/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXlite/u-boot.lds.debug b/board/RPXlite/u-boot.lds.debug
index 47ad2e7..888cbc5 100644
--- a/board/RPXlite/u-boot.lds.debug
+++ b/board/RPXlite/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/RPXlite_dw/u-boot.lds
+++ b/board/RPXlite_dw/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RPXlite_dw/u-boot.lds.debug b/board/RPXlite_dw/u-boot.lds.debug
index c76f9d0..f99c742 100644
--- a/board/RPXlite_dw/u-boot.lds.debug
+++ b/board/RPXlite_dw/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds
index 3c2c708..3c42391 100644
--- a/board/RRvision/u-boot.lds
+++ b/board/RRvision/u-boot.lds
@@ -71,9 +71,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds
index e5d59db..9ae694d 100644
--- a/board/actux1/u-boot.lds
+++ b/board/actux1/u-boot.lds
@@ -54,11 +54,6 @@ SECTIONS
 		*(.got)
 	}
 	. =.;
-	__u_boot_cmd_start =.;
-	.u_boot_cmd : {
-		*(.u_boot_cmd)
-	}
-	__u_boot_cmd_end =.;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds
index 09bb7ab..879bb07 100644
--- a/board/actux2/u-boot.lds
+++ b/board/actux2/u-boot.lds
@@ -54,11 +54,6 @@ SECTIONS
 		*(.got)
 	}
 	. =.;
-	__u_boot_cmd_start =.;
-	.u_boot_cmd : {
-		*(.u_boot_cmd)
-	}
-	__u_boot_cmd_end =.;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds
index 71b6791..843fc73 100644
--- a/board/actux3/u-boot.lds
+++ b/board/actux3/u-boot.lds
@@ -54,11 +54,6 @@ SECTIONS
 		*(.got)
 	}
 	. =.;
-	__u_boot_cmd_start =.;
-	.u_boot_cmd : {
-		*(.u_boot_cmd)
-	}
-	__u_boot_cmd_end =.;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds
index 62afcb80..d6d3bd5 100644
--- a/board/adder/u-boot.lds
+++ b/board/adder/u-boot.lds
@@ -62,9 +62,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds
index 764cc7d..13661c7 100644
--- a/board/altera/nios2-generic/u-boot.lds
+++ b/board/altera/nios2-generic/u-boot.lds
@@ -46,13 +46,6 @@ SECTIONS
 	 * the initialization code relocates the command table as
 	 * well -- admittedly, this is just pure laziness ;-)
 	 */
-	__u_boot_cmd_start = .;
-	.u_boot_cmd :
-	{
-	  *(.u_boot_cmd)
-	}
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds
index bc0356b..9e28604 100644
--- a/board/amcc/acadia/u-boot-nand.lds
+++ b/board/amcc/acadia/u-boot-nand.lds
@@ -72,9 +72,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds
index 2382ea9..b9f9de1 100644
--- a/board/amcc/bamboo/u-boot-nand.lds
+++ b/board/amcc/bamboo/u-boot-nand.lds
@@ -73,9 +73,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds
index 0816387..001fa7f 100644
--- a/board/amcc/canyonlands/u-boot-nand.lds
+++ b/board/amcc/canyonlands/u-boot-nand.lds
@@ -73,9 +73,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds
index bc0356b..9e28604 100644
--- a/board/amcc/kilauea/u-boot-nand.lds
+++ b/board/amcc/kilauea/u-boot-nand.lds
@@ -72,9 +72,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds
index 94234de..163980e 100644
--- a/board/amcc/sequoia/u-boot-nand.lds
+++ b/board/amcc/sequoia/u-boot-nand.lds
@@ -73,9 +73,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds
index 0f594f5..568529e 100644
--- a/board/amcc/sequoia/u-boot-ram.lds
+++ b/board/amcc/sequoia/u-boot-ram.lds
@@ -64,9 +64,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/amirix/ap1000/u-boot.lds b/board/amirix/ap1000/u-boot.lds
index 575d390..d45dba6 100644
--- a/board/amirix/ap1000/u-boot.lds
+++ b/board/amirix/ap1000/u-boot.lds
@@ -67,9 +67,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds
index d800805..9242af2 100644
--- a/board/astro/mcf5373l/u-boot.lds
+++ b/board/astro/mcf5373l/u-boot.lds
@@ -109,9 +109,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/c2mon/u-boot.lds b/board/c2mon/u-boot.lds
index a170f06..5652797 100644
--- a/board/c2mon/u-boot.lds
+++ b/board/c2mon/u-boot.lds
@@ -74,9 +74,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/c2mon/u-boot.lds.debug b/board/c2mon/u-boot.lds.debug
index fd278a4..8bbe86a 100644
--- a/board/c2mon/u-boot.lds.debug
+++ b/board/c2mon/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds
index d49b0ef..897847e 100644
--- a/board/cobra5272/u-boot.lds
+++ b/board/cobra5272/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds
index 3a3d988..723c26f 100644
--- a/board/cogent/u-boot.lds
+++ b/board/cogent/u-boot.lds
@@ -70,9 +70,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug
index 47ad2e7..888cbc5 100644
--- a/board/cogent/u-boot.lds.debug
+++ b/board/cogent/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/cray/L1/u-boot.lds.debug b/board/cray/L1/u-boot.lds.debug
index 78fe44c..0e3940f 100644
--- a/board/cray/L1/u-boot.lds.debug
+++ b/board/cray/L1/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds
index fb40e3d..9b9264b 100644
--- a/board/dave/PPChameleonEVB/u-boot.lds
+++ b/board/dave/PPChameleonEVB/u-boot.lds
@@ -74,9 +74,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/dbau1x00/u-boot.lds b/board/dbau1x00/u-boot.lds
index 0569133..471efc1 100644
--- a/board/dbau1x00/u-boot.lds
+++ b/board/dbau1x00/u-boot.lds
@@ -54,15 +54,6 @@ SECTIONS
 
 	.sdata  : { *(.sdata*) }
 
-	.u_boot_cmd : {
-	  __u_boot_cmd_start = .;
-	  *(.u_boot_cmd)
-	  __u_boot_cmd_end = .;
-
-	  . = ALIGN(4);
-	  .u_boot_list : {
-	INCLUDE u-boot.lst;
-	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds
index 897263e..83e3913 100644
--- a/board/dvlhost/u-boot.lds
+++ b/board/dvlhost/u-boot.lds
@@ -54,11 +54,6 @@ SECTIONS
 		*(.got)
 	}
 	. =.;
-	__u_boot_cmd_start =.;
-	.u_boot_cmd : {
-		*(.u_boot_cmd)
-	}
-	__u_boot_cmd_end =.;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds
index 4385876..dc204d2 100644
--- a/board/eltec/mhpc/u-boot.lds
+++ b/board/eltec/mhpc/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/eltec/mhpc/u-boot.lds.debug b/board/eltec/mhpc/u-boot.lds.debug
index fd278a4..8bbe86a 100644
--- a/board/eltec/mhpc/u-boot.lds.debug
+++ b/board/eltec/mhpc/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds
index 887ee6b..2d738a4 100644
--- a/board/emk/top860/u-boot.lds
+++ b/board/emk/top860/u-boot.lds
@@ -67,9 +67,6 @@ SECTIONS
 
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds
index 0c5a03e..47ea19c 100644
--- a/board/ep88x/u-boot.lds
+++ b/board/ep88x/u-boot.lds
@@ -62,9 +62,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds
index 9a3249d..b1842e1 100644
--- a/board/esd/dasa_sim/u-boot.lds
+++ b/board/esd/dasa_sim/u-boot.lds
@@ -73,9 +73,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds
index d4ef403..910793b 100644
--- a/board/esd/pmc440/u-boot-nand.lds
+++ b/board/esd/pmc440/u-boot-nand.lds
@@ -102,9 +102,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds
index b302ba0..053a54a 100644
--- a/board/esd/tasreg/u-boot.lds
+++ b/board/esd/tasreg/u-boot.lds
@@ -65,9 +65,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds
index 83d9ec0..ec757ad 100644
--- a/board/esteem192e/u-boot.lds
+++ b/board/esteem192e/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/etx094/u-boot.lds b/board/etx094/u-boot.lds
index a98ee23..f26e473 100644
--- a/board/etx094/u-boot.lds
+++ b/board/etx094/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds
index 1eb7f30..e4f735a 100644
--- a/board/evb64260/u-boot.lds
+++ b/board/evb64260/u-boot.lds
@@ -70,9 +70,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds
index deee255..0549239 100644
--- a/board/fads/u-boot.lds
+++ b/board/fads/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds
index 4385876..dc204d2 100644
--- a/board/flagadm/u-boot.lds
+++ b/board/flagadm/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/flagadm/u-boot.lds.debug b/board/flagadm/u-boot.lds.debug
index fd278a4..8bbe86a 100644
--- a/board/flagadm/u-boot.lds.debug
+++ b/board/flagadm/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds
index e184013..41b1cc9 100644
--- a/board/freescale/m5208evbe/u-boot.lds
+++ b/board/freescale/m5208evbe/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds
index 6214098..dc5150a 100644
--- a/board/freescale/m52277evb/u-boot.lds
+++ b/board/freescale/m52277evb/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds
index 9b5e5e2..8ddda1a 100644
--- a/board/freescale/m5235evb/u-boot.lds
+++ b/board/freescale/m5235evb/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds
index d49b0ef..897847e 100644
--- a/board/freescale/m5249evb/u-boot.lds
+++ b/board/freescale/m5249evb/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds
index 3487a8d..1c2e067 100644
--- a/board/freescale/m5253demo/u-boot.lds
+++ b/board/freescale/m5253demo/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds
index d49b0ef..897847e 100644
--- a/board/freescale/m5253evbe/u-boot.lds
+++ b/board/freescale/m5253evbe/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds
index 3a86350..04ca088 100644
--- a/board/freescale/m5271evb/u-boot.lds
+++ b/board/freescale/m5271evb/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds
index d49b0ef..897847e 100644
--- a/board/freescale/m5272c3/u-boot.lds
+++ b/board/freescale/m5272c3/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds
index b37b06b..335acbc 100644
--- a/board/freescale/m5275evb/u-boot.lds
+++ b/board/freescale/m5275evb/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds
index 3132a55..2d27f06 100644
--- a/board/freescale/m5282evb/u-boot.lds
+++ b/board/freescale/m5282evb/u-boot.lds
@@ -65,9 +65,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds
index 662bd31..dab62bf 100644
--- a/board/freescale/m53017evb/u-boot.lds
+++ b/board/freescale/m53017evb/u-boot.lds
@@ -71,9 +71,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds
index fe5be41..e3ac171 100644
--- a/board/freescale/m5329evb/u-boot.lds
+++ b/board/freescale/m5329evb/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds
index 8ff6fc9..fe0bb7d 100644
--- a/board/freescale/m5373evb/u-boot.lds
+++ b/board/freescale/m5373evb/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds
index ea0984f..3eb25dd 100644
--- a/board/freescale/m54451evb/u-boot.lds
+++ b/board/freescale/m54451evb/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds
index fe1b58c..186d122 100644
--- a/board/freescale/m54455evb/u-boot.lds
+++ b/board/freescale/m54455evb/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds
index 877eaf2..87744e7 100644
--- a/board/freescale/m547xevb/u-boot.lds
+++ b/board/freescale/m547xevb/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds
index 33e054b..d877872 100644
--- a/board/freescale/m548xevb/u-boot.lds
+++ b/board/freescale/m548xevb/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds
index 3db5dc3..8f97de5 100644
--- a/board/freescale/mx31ads/u-boot.lds
+++ b/board/freescale/mx31ads/u-boot.lds
@@ -57,9 +57,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds
index 416761b..8c4a0e5 100644
--- a/board/gaisler/gr_cpci_ax2000/u-boot.lds
+++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds
@@ -85,10 +85,6 @@ SECTIONS
 
 	/* CMD Table */
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds
index 43faf26..c647246 100644
--- a/board/gaisler/gr_ep2s60/u-boot.lds
+++ b/board/gaisler/gr_ep2s60/u-boot.lds
@@ -85,10 +85,6 @@ SECTIONS
 
 	/* CMD Table */
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds
index 14c631e..96c98f3 100644
--- a/board/gaisler/gr_xc3s_1500/u-boot.lds
+++ b/board/gaisler/gr_xc3s_1500/u-boot.lds
@@ -85,10 +85,6 @@ SECTIONS
 
 	/* CMD Table */
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds
index 4766465..df7f187 100644
--- a/board/gaisler/grsim/u-boot.lds
+++ b/board/gaisler/grsim/u-boot.lds
@@ -84,10 +84,6 @@ SECTIONS
 
 	/* CMD Table */
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds
index cbd4ed6..ebcdf1c 100644
--- a/board/gaisler/grsim_leon2/u-boot.lds
+++ b/board/gaisler/grsim_leon2/u-boot.lds
@@ -84,10 +84,6 @@ SECTIONS
 
 	/* CMD Table */
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	. = ALIGN(4);
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds
index 1302eaa..e72e168 100644
--- a/board/gen860t/u-boot-flashenv.lds
+++ b/board/gen860t/u-boot-flashenv.lds
@@ -71,9 +71,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds
index de57dd1..6433828 100644
--- a/board/gen860t/u-boot.lds
+++ b/board/gen860t/u-boot.lds
@@ -71,9 +71,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds
index 45c56bb..d1303ff 100644
--- a/board/genietv/u-boot.lds
+++ b/board/genietv/u-boot.lds
@@ -80,9 +80,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug
index 4783367..06ee03d 100644
--- a/board/genietv/u-boot.lds.debug
+++ b/board/genietv/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds
index 8b90f6c..e912128 100644
--- a/board/hermes/u-boot.lds
+++ b/board/hermes/u-boot.lds
@@ -72,9 +72,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug
index 53ffee1..3618c37 100644
--- a/board/hermes/u-boot.lds.debug
+++ b/board/hermes/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds
index 83d2dd4..b266ec5 100644
--- a/board/hymod/u-boot.lds
+++ b/board/hymod/u-boot.lds
@@ -110,9 +110,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/hymod/u-boot.lds.debug b/board/hymod/u-boot.lds.debug
index 47ad2e7..888cbc5 100644
--- a/board/hymod/u-boot.lds.debug
+++ b/board/hymod/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds
index 23d4405..34f6b75 100644
--- a/board/icu862/u-boot.lds
+++ b/board/icu862/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/icu862/u-boot.lds.debug b/board/icu862/u-boot.lds.debug
index 203f704..598b07d 100644
--- a/board/icu862/u-boot.lds.debug
+++ b/board/icu862/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds
index b302ba0..053a54a 100644
--- a/board/idmr/u-boot.lds
+++ b/board/idmr/u-boot.lds
@@ -65,9 +65,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/incaip/u-boot.lds b/board/incaip/u-boot.lds
index 0569133..471efc1 100644
--- a/board/incaip/u-boot.lds
+++ b/board/incaip/u-boot.lds
@@ -54,15 +54,6 @@ SECTIONS
 
 	.sdata  : { *(.sdata*) }
 
-	.u_boot_cmd : {
-	  __u_boot_cmd_start = .;
-	  *(.u_boot_cmd)
-	  __u_boot_cmd_end = .;
-
-	  . = ALIGN(4);
-	  .u_boot_list : {
-	INCLUDE u-boot.lst;
-	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/ip860/u-boot.lds
+++ b/board/ip860/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug
index 4fc4c0f..aedab36 100644
--- a/board/ip860/u-boot.lds.debug
+++ b/board/ip860/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds
index d0d9a37..9e9565b 100644
--- a/board/ivm/u-boot.lds
+++ b/board/ivm/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug
index f4c04b3..1f66592 100644
--- a/board/ivm/u-boot.lds.debug
+++ b/board/ivm/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds
index da33f00..06ece39 100644
--- a/board/korat/u-boot-F7FC.lds
+++ b/board/korat/u-boot-F7FC.lds
@@ -108,9 +108,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   .u_boot_list : {
 	INCLUDE u-boot.lst;
diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/kup/kup4k/u-boot.lds
+++ b/board/kup/kup4k/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/kup/kup4k/u-boot.lds.debug b/board/kup/kup4k/u-boot.lds.debug
index c76f9d0..f99c742 100644
--- a/board/kup/kup4k/u-boot.lds.debug
+++ b/board/kup/kup4k/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/kup/kup4x/u-boot.lds
+++ b/board/kup/kup4x/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/kup/kup4x/u-boot.lds.debug b/board/kup/kup4x/u-boot.lds.debug
index c76f9d0..f99c742 100644
--- a/board/kup/kup4x/u-boot.lds.debug
+++ b/board/kup/kup4x/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/lantec/u-boot.lds b/board/lantec/u-boot.lds
index 9360839..4c80452 100644
--- a/board/lantec/u-boot.lds
+++ b/board/lantec/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/lantec/u-boot.lds.debug b/board/lantec/u-boot.lds.debug
index 7c1ccb2..b8dd61d 100644
--- a/board/lantec/u-boot.lds.debug
+++ b/board/lantec/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds
index 7dfa157..6264d2d 100644
--- a/board/lwmon/u-boot.lds
+++ b/board/lwmon/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug
index 0778758..dbc722e 100644
--- a/board/lwmon/u-boot.lds.debug
+++ b/board/lwmon/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds
index d291d60..4a96fe4 100644
--- a/board/manroland/uc100/u-boot.lds
+++ b/board/manroland/uc100/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds
index 2445b97..99b29ce 100644
--- a/board/matrix_vision/mvsmr/u-boot.lds
+++ b/board/matrix_vision/mvsmr/u-boot.lds
@@ -74,9 +74,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/mbx8xx/u-boot.lds
+++ b/board/mbx8xx/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/mbx8xx/u-boot.lds.debug b/board/mbx8xx/u-boot.lds.debug
index 7e62932..da784f0 100644
--- a/board/mbx8xx/u-boot.lds.debug
+++ b/board/mbx8xx/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/micronas/vct/u-boot.lds b/board/micronas/vct/u-boot.lds
index 273d190..f3905e6 100644
--- a/board/micronas/vct/u-boot.lds
+++ b/board/micronas/vct/u-boot.lds
@@ -53,15 +53,6 @@ SECTIONS
 	.sdata  : { *(.sdata*) }
 
 	. = ALIGN(4);
-	.u_boot_cmd : {
-	  __u_boot_cmd_start = .;
-	  *(.u_boot_cmd)
-	  __u_boot_cmd_end = .;
-
-	  . = ALIGN(4);
-	  .u_boot_list : {
-	INCLUDE u-boot.lst;
-	  }
 	}
 
 	. = ALIGN(4);
diff --git a/board/ml2/u-boot.lds b/board/ml2/u-boot.lds
index a6cad6d..343d0bc 100644
--- a/board/ml2/u-boot.lds
+++ b/board/ml2/u-boot.lds
@@ -64,9 +64,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/ml2/u-boot.lds.debug b/board/ml2/u-boot.lds.debug
index 78fe44c..0e3940f 100644
--- a/board/ml2/u-boot.lds.debug
+++ b/board/ml2/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds
index 863468e..fbfea7e 100644
--- a/board/mousse/u-boot.lds
+++ b/board/mousse/u-boot.lds
@@ -60,9 +60,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/mousse/u-boot.lds.ram b/board/mousse/u-boot.lds.ram
index b3364be..5255651 100644
--- a/board/mousse/u-boot.lds.ram
+++ b/board/mousse/u-boot.lds.ram
@@ -85,9 +85,6 @@ SECTIONS
   } > ram
   */
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
    __start___ex_table = .;
     __ex_table : { *(__ex_table) } > ram
diff --git a/board/mousse/u-boot.lds.rom b/board/mousse/u-boot.lds.rom
index b4b9e02..29a34fb 100644
--- a/board/mousse/u-boot.lds.rom
+++ b/board/mousse/u-boot.lds.rom
@@ -102,9 +102,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
diff --git a/board/mpl/pip405/u-boot.lds.debug b/board/mpl/pip405/u-boot.lds.debug
index 78fe44c..0e3940f 100644
--- a/board/mpl/pip405/u-boot.lds.debug
+++ b/board/mpl/pip405/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds
index 4610de9..e3de27a 100644
--- a/board/mvblue/u-boot.lds
+++ b/board/mvblue/u-boot.lds
@@ -70,9 +70,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds
index 86bb3b4..1bd1fa0 100644
--- a/board/netphone/u-boot.lds
+++ b/board/netphone/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netphone/u-boot.lds.debug b/board/netphone/u-boot.lds.debug
index 480feff..7b933f2 100644
--- a/board/netphone/u-boot.lds.debug
+++ b/board/netphone/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds
index 86bb3b4..1bd1fa0 100644
--- a/board/netta/u-boot.lds
+++ b/board/netta/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netta/u-boot.lds.debug b/board/netta/u-boot.lds.debug
index 480feff..7b933f2 100644
--- a/board/netta/u-boot.lds.debug
+++ b/board/netta/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds
index 86bb3b4..1bd1fa0 100644
--- a/board/netta2/u-boot.lds
+++ b/board/netta2/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netta2/u-boot.lds.debug b/board/netta2/u-boot.lds.debug
index 480feff..7b933f2 100644
--- a/board/netta2/u-boot.lds.debug
+++ b/board/netta2/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds
index 86bb3b4..1bd1fa0 100644
--- a/board/netvia/u-boot.lds
+++ b/board/netvia/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug
index 2e3f83e..cb71f3c 100644
--- a/board/netvia/u-boot.lds.debug
+++ b/board/netvia/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds
index 4385876..dc204d2 100644
--- a/board/nx823/u-boot.lds
+++ b/board/nx823/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug
index fd278a4..8bbe86a 100644
--- a/board/nx823/u-boot.lds.debug
+++ b/board/nx823/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds
index bc610bd..912aca0 100644
--- a/board/openrisc/openrisc-generic/u-boot.lds
+++ b/board/openrisc/openrisc-generic/u-boot.lds
@@ -26,9 +26,6 @@ SECTIONS
 		_endtext = .;
 	}  > ram
 
-	 __u_boot_cmd_start = .;
-	 .u_boot_cmd : { *(.u_boot_cmd) } > ram
-	 __u_boot_cmd_end = .;
 
 	 . = ALIGN(4);
 	 .u_boot_list : {
diff --git a/board/pb1x00/u-boot.lds b/board/pb1x00/u-boot.lds
index cac9188..4af40c6 100644
--- a/board/pb1x00/u-boot.lds
+++ b/board/pb1x00/u-boot.lds
@@ -54,15 +54,6 @@ SECTIONS
 
 	.sdata  : { *(.sdata*) }
 
-	.u_boot_cmd : {
-	  __u_boot_cmd_start = .;
-	  *(.u_boot_cmd)
-	  __u_boot_cmd_end = .;
-
-	  . = ALIGN(4);
-	  .u_boot_list : {
-	INCLUDE u-boot.lst;
-	  }
 	}
 
 	uboot_end_data = .;
diff --git a/board/qemu-mips/u-boot.lds b/board/qemu-mips/u-boot.lds
index 1f37e8b..4b159cf 100644
--- a/board/qemu-mips/u-boot.lds
+++ b/board/qemu-mips/u-boot.lds
@@ -56,15 +56,6 @@ SECTIONS
 	.sdata  : { *(.sdata*) }
 
 	. = .;
-	.u_boot_cmd : {
-	__u_boot_cmd_start = .;
-	*(.u_boot_cmd)
-	__u_boot_cmd_end = .;
-
-	. = ALIGN(4);
-	.u_boot_list : {
-	INCLUDE u-boot.lst;
-	}
 	}
 
 	uboot_end_data = .;
diff --git a/board/qi/qi_lb60/u-boot.lds b/board/qi/qi_lb60/u-boot.lds
index e1bb826..286806a 100644
--- a/board/qi/qi_lb60/u-boot.lds
+++ b/board/qi/qi_lb60/u-boot.lds
@@ -47,9 +47,6 @@ SECTIONS
 
 	.sdata  : { *(.sdata*) }
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/quantum/u-boot.lds
+++ b/board/quantum/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds
index 181468d..4748a6b 100644
--- a/board/r360mpi/u-boot.lds
+++ b/board/r360mpi/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds
index 50c3eee..30e01d2 100644
--- a/board/rbc823/u-boot.lds
+++ b/board/rbc823/u-boot.lds
@@ -77,9 +77,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds
index cff6ff5..76cb82e 100644
--- a/board/renesas/sh7757lcr/u-boot.lds
+++ b/board/renesas/sh7757lcr/u-boot.lds
@@ -77,13 +77,6 @@ SECTIONS
 	}
 	PROVIDE (_egot = .);
 
-	PROVIDE (__u_boot_cmd_start = .);
-	.u_boot_cmd :
-	{
-		*(.u_boot_cmd)
-		. = ALIGN(4);
-	}
-	PROVIDE (__u_boot_cmd_end = .);
 
 	.u_boot_list : {
 		INCLUDE u-boot.lst;
diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds
index ee651d4..d69af28 100644
--- a/board/rsdproto/u-boot.lds
+++ b/board/rsdproto/u-boot.lds
@@ -97,9 +97,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds
index 27693f0e..c34bd15 100644
--- a/board/samsung/smdk6400/u-boot-nand.lds
+++ b/board/samsung/smdk6400/u-boot-nand.lds
@@ -47,9 +47,6 @@ SECTIONS
 	. = ALIGN(4);
 	.got : { *(.got) }
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = align(4);
 	.u_boot_list : {
diff --git a/board/sandburst/karef/u-boot.lds.debug b/board/sandburst/karef/u-boot.lds.debug
index 586dc95..84e22ad 100644
--- a/board/sandburst/karef/u-boot.lds.debug
+++ b/board/sandburst/karef/u-boot.lds.debug
@@ -115,9 +115,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/sandburst/metrobox/u-boot.lds.debug b/board/sandburst/metrobox/u-boot.lds.debug
index 48f5be0..4aa3f21 100644
--- a/board/sandburst/metrobox/u-boot.lds.debug
+++ b/board/sandburst/metrobox/u-boot.lds.debug
@@ -115,9 +115,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds
index a4421a7..ba20d64 100644
--- a/board/sandpoint/u-boot.lds
+++ b/board/sandpoint/u-boot.lds
@@ -68,9 +68,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/siemens/IAD210/u-boot.lds b/board/siemens/IAD210/u-boot.lds
index 3532d3b..ed60bf5 100644
--- a/board/siemens/IAD210/u-boot.lds
+++ b/board/siemens/IAD210/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds
index 4153927..bf5ac93 100644
--- a/board/sixnet/u-boot.lds
+++ b/board/sixnet/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds
index 039597e..17917bf 100644
--- a/board/snmc/qs850/u-boot.lds
+++ b/board/snmc/qs850/u-boot.lds
@@ -69,9 +69,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/snmc/qs860t/u-boot.lds
+++ b/board/snmc/qs860t/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds
index 92f78be..ca421d5 100644
--- a/board/spc1920/u-boot.lds
+++ b/board/spc1920/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds
index ada68f1..4fbabdf 100644
--- a/board/spd8xx/u-boot.lds
+++ b/board/spd8xx/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug
index 7e62932..da784f0 100644
--- a/board/spd8xx/u-boot.lds.debug
+++ b/board/spd8xx/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds
index 86bb3b4..1bd1fa0 100644
--- a/board/stx/stxxtc/u-boot.lds
+++ b/board/stx/stxxtc/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/stx/stxxtc/u-boot.lds.debug b/board/stx/stxxtc/u-boot.lds.debug
index 480feff..7b933f2 100644
--- a/board/stx/stxxtc/u-boot.lds.debug
+++ b/board/stx/stxxtc/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds
index af83956..e9caa85 100644
--- a/board/svm_sc8xx/u-boot.lds
+++ b/board/svm_sc8xx/u-boot.lds
@@ -83,9 +83,6 @@ SECTIONS
 
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds
index 226cfc1..ff70607 100644
--- a/board/tqc/tqm8xx/u-boot.lds
+++ b/board/tqc/tqm8xx/u-boot.lds
@@ -83,9 +83,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds
index feb3870..8626675 100644
--- a/board/v37/u-boot.lds
+++ b/board/v37/u-boot.lds
@@ -66,9 +66,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/w7o/u-boot.lds.debug b/board/w7o/u-boot.lds.debug
index 520acd5..a0a9814 100644
--- a/board/w7o/u-boot.lds.debug
+++ b/board/w7o/u-boot.lds.debug
@@ -106,9 +106,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/westel/amx860/u-boot.lds b/board/westel/amx860/u-boot.lds
index e642a3a..116c5a8 100644
--- a/board/westel/amx860/u-boot.lds
+++ b/board/westel/amx860/u-boot.lds
@@ -75,9 +75,6 @@ SECTIONS
   PROVIDE (edata = .);
 
   . = .;
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/westel/amx860/u-boot.lds.debug b/board/westel/amx860/u-boot.lds.debug
index 203f704..598b07d 100644
--- a/board/westel/amx860/u-boot.lds.debug
+++ b/board/westel/amx860/u-boot.lds.debug
@@ -107,9 +107,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/board/xes/xpedite1000/u-boot.lds.debug b/board/xes/xpedite1000/u-boot.lds.debug
index d685738..774dcbb 100644
--- a/board/xes/xpedite1000/u-boot.lds.debug
+++ b/board/xes/xpedite1000/u-boot.lds.debug
@@ -111,9 +111,6 @@ SECTIONS
   _edata  =  .;
   PROVIDE (edata = .);
 
-  __u_boot_cmd_start = .;
-  .u_boot_cmd : { *(.u_boot_cmd) }
-  __u_boot_cmd_end = .;
 
   . = ALIGN(4);
   .u_boot_list : {
diff --git a/include/command.h b/include/command.h
index 24864d5..10bc260 100644
--- a/include/command.h
+++ b/include/command.h
@@ -62,8 +62,6 @@ struct cmd_tbl_s {
 
 typedef struct cmd_tbl_s	cmd_tbl_t;
 
-extern cmd_tbl_t  __u_boot_cmd_start;
-extern cmd_tbl_t  __u_boot_cmd_end;
 
 #if defined(CONFIG_CMD_RUN)
 extern int do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds
index 363690f..7a75603 100644
--- a/nand_spl/board/freescale/mx31pdk/u-boot.lds
+++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds
@@ -46,9 +46,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds
index 8332710..d7c7060 100644
--- a/nand_spl/board/karo/tx25/u-boot.lds
+++ b/nand_spl/board/karo/tx25/u-boot.lds
@@ -46,9 +46,6 @@ SECTIONS
 	}
 
 	. = ALIGN(4);
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds
index 7ceae32..7e92a02 100644
--- a/nand_spl/board/samsung/smdk6400/u-boot.lds
+++ b/nand_spl/board/samsung/smdk6400/u-boot.lds
@@ -50,9 +50,6 @@ SECTIONS
 	. = ALIGN(4);
 	.got : { *(.got) }
 
-	__u_boot_cmd_start = .;
-	.u_boot_cmd : { *(.u_boot_cmd) }
-	__u_boot_cmd_end = .;
 
 	. = ALIGN(4);
 	.u_boot_list : {
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-25 16:11   ` [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays Marek Vasut
  2012-09-25 20:16     ` Wolfgang Denk
@ 2012-09-29  1:45     ` Joe Hershberger
  2012-09-29  2:49       ` Marek Vasut
  1 sibling, 1 reply; 47+ messages in thread
From: Joe Hershberger @ 2012-09-29  1:45 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Tue, Sep 25, 2012 at 11:11 AM, Marek Vasut <marex@denx.de> wrote:
> This patch adds support for linker-generated array. These arrays
> are a generalization of the U-Boot command declaration approach.
>
> Basically, the idea is to generate an array, where elements of the
> array are statically initialized at compiler time and each element
> is declared separatelly at different place. Such array though can
> later be accessed and used via special accessor.
>
> The actual implementation relies on placing any variable that is to
> represent an element of LG-array into subsection of .u_boot_list
> linker section . Once compiled, it is possible to dump all symbols
> placed in .u_boot_list section and generate appropriate bounds for
> each subsection of the .u_boot_list section. Each such subsection
> this contains .__start and .__end entries at the begining and end
> respecitively.
>
> This allows for simple run-time traversing of the array, since the
> symbols are properly defined.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>
> ---
>  include/linker_lists.h |  124 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 124 insertions(+)
>  create mode 100644 include/linker_lists.h
>
> V2: Don't define the variable twice in ll_entry_declare()
>
> diff --git a/include/linker_lists.h b/include/linker_lists.h
> new file mode 100644
> index 0000000..27ae40b
> --- /dev/null
> +++ b/include/linker_lists.h

[...]

> +/**
> + * ll_entry_count() - Return the number of elements in linker-generated array
> + * _type:      Data type of the entry
> + * _section_u: Subsection of u_boot_list in which this entry is placed
> + *             (with underscores instead of dots)
> + *
> + * This function returns the number of elements of a linker-generated array
> + * placed into subsection of .u_boot_list section specified by _section_u
> + * argument. The result is of an unsigned int type.
> + *
> + * Example of usage:
> + *
> + * int i;
> + * const unsigned int count = ll_entry_count(struct my_sub_cmd, cmd_sub);
> + * struct my_sub_cmd *msc = ll_entry_start(struct my_sub_cmd, cmd_sub);
> + * for (i = 0; i < count; i++) {
> + *     printf("Entry %i, x=%i y=%i\n", i, msc->x, msc->y);
> + *     msc++;
> + * }
> + */
> +#define ll_entry_count(_type, _section_u)                              \
> +       ({                                                              \
> +               extern _type _u_boot_list_##_section_u##__start;        \
> +               extern _type _u_boot_list_##_section_u##__end;          \
> +               unsigned int _ll_result =                               \
> +                       &_u_boot_list_##_section_u##__end -             \
> +                       &_u_boot_list_##_section_u##__start;            \
> +               _ll_result;                                             \
> +       })

While ll_entry_count is great and all, it is more natural to compare
your list pointer to The End (tm) or not.  It would make client code
capable of being cleaner if you also include ll_entry_end() as well.

Thanks,
-Joe

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/5 V2] common: Add symbol handling for generic lists into Makefile
  2012-09-29  1:34     ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-09-29  2:29       ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  2:29 UTC (permalink / raw)
  To: u-boot

This patch adds essential components for generation of the contents of
the linker section that is used by the linker-generated array. All of
the contents is held in a separate file, u-boot.lst, which is generated
at runtime just before U-Boot is linked.

The purpose of this code is to especially generate the appropriate
boundary symbols around each subsection in the section carrying the
linker-generated arrays. Obviously, the interim linker code for actual
placement of the variables into the section is generated too. The
generated file, u-boot.lst, is included into u-boot.lds via the linker
INCLUDE directive in u-boot.lds .

Adjustments are made in the Makefile and spl/Makefile so that the
u-boot.lds and u-boot-spl.lds depend on their respective .lst files.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 .gitignore                                     |    1 +
 Makefile                                       |   13 +++--
 config.mk                                      |    2 +
 helper.mk                                      |   64 ++++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mpc8569mds/Makefile   |    9 +++-
 nand_spl/board/freescale/mpc8572ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mx31pdk/Makefile      |    9 +++-
 nand_spl/board/freescale/p1010rdb/Makefile     |    9 +++-
 nand_spl/board/freescale/p1023rds/Makefile     |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb/Makefile    |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile |    9 +++-
 nand_spl/board/karo/tx25/Makefile              |    9 +++-
 spl/.gitignore                                 |    1 +
 spl/Makefile                                   |    6 ++-
 15 files changed, 146 insertions(+), 22 deletions(-)
 create mode 100644 helper.mk

V2: Add .gitignore entries

diff --git a/.gitignore b/.gitignore
index d91e91b..1ac43f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,7 @@
 /u-boot.sha1
 /u-boot.dis
 /u-boot.lds
+/u-boot.lst
 /u-boot.ubl
 /u-boot.ais
 /u-boot.dtb
diff --git a/Makefile b/Makefile
index eb9c388..54cc91b 100644
--- a/Makefile
+++ b/Makefile
@@ -515,7 +515,10 @@ else
 GEN_UBOOT = \
 		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
 		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
+		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
+		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
 endif
@@ -548,8 +551,12 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
 $(LDSCRIPT):	depend
 		$(MAKE) -C $(dir $@) $(notdir $@)
 
-$(obj)u-boot.lds: $(LDSCRIPT)
-		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
+$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
+		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
diff --git a/config.mk b/config.mk
index c3822a2..d2ed5bf 100644
--- a/config.mk
+++ b/config.mk
@@ -23,6 +23,8 @@
 
 #########################################################################
 
+include $(TOPDIR)/helper.mk
+
 ifeq ($(CURDIR),$(SRCTREE))
 dir :=
 else
diff --git a/helper.mk b/helper.mk
new file mode 100644
index 0000000..79a1da0
--- /dev/null
+++ b/helper.mk
@@ -0,0 +1,64 @@
+#
+# Copyright (C) 2012 Marek Vasut <marex@denx.de>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+#########################################################################
+
+##
+# make_u_boot_list - Generate contents of u_boot_list section
+# 1:		The name of the resulting file (usually u-boot.lst)
+# 2:		Files to analyze for possible u_boot_list entries
+#
+# This function generates the contents of the u_boot_list section,
+# including all the border symbols for it's subsections. The operation
+# of this function is as follows, numbering goes per lines:
+#
+# 1) Dump the ELF header sections from all files supplied via $(2)
+# 2) Filter out all other stuff that does not belong into .u_boot_list
+#    section.
+# 3) Fix up the lines so that the resulting output is is in format
+#    ".u_boot_list.*".
+# 4) Remove the last .something$, since that only contains the name
+#    of the variable to be put into a subsection. This name is irelevant
+#    for generation of border symbols, thus of no interest, remove it.
+# 5) Take each line and for every dot "." in that line, print the whole
+#    line until that dot "." . This is important so that we have all
+#    parent border symbols generated as well.
+# 6) Load every line and firstly append "\a" at the end and print the
+#    line. Next, append "@" at the end and print the line. Finally,
+#    append "~" at the end of line. This will make sense in conjunction
+#    with 6) and 7).
+# 7) Sort the lines. It is imperative to use LC_COLLATE=C here because
+#    with this, the "\a" symbol is first and "~" symbol is last. Any
+#    other symbols fall inbetween. Symbols like "@", which marks the
+#    end of current line (representing current section) and ".", which
+#    means the line continues and thus represents subsection.
+# 8) With such ordering, all lines ending with "\a" will float at the
+#    begining of all lines with the same prefix. Thus it is easy to
+#    replace "\a" with __start and make it the __start border symbol.
+#    Very similarly for "~", which will be always at the bottom and so
+#    can be replaced by "__end" and made into the __end border symbol.
+#    Finally, every line ending with "@" symbol will be transformed
+#    into " *(SORT(${line}*)); " format, which in the linker parlance
+#    will allow it to trap all symbols relevant to the subsection.
+#
+define make_u_boot_list
+$(1): $(2)
+	$(OBJDUMP) -h $(2) | \
+	sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \
+		-e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \
+		-e 's/\.[^\.]\+$$$$//' \
+		-e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
+	sed -n -e 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed -n -e '/\a$$$$/ { s/\./_/g;s/\a$$$$/__start = .;/p; }'\
+		-e '/~$$$$/ { s/\./_/g;s/~$$$$/__end = .;/p; }'\
+		-e '/@$$$$/ { s/\(.*\)@$$$$/*(SORT(\1.*));/p }' > $(1)
+endef
diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8536ds/Makefile
+++ b/nand_spl/board/freescale/mpc8536ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8569mds/Makefile
+++ b/nand_spl/board/freescale/mpc8569mds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8572ds/Makefile
+++ b/nand_spl/board/freescale/mpc8572ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile
index 87784d2..4beb3f3 100644
--- a/nand_spl/board/freescale/mx31pdk/Makefile
+++ b/nand_spl/board/freescale/mx31pdk/Makefile
@@ -6,6 +6,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -36,8 +37,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile
index cdbd492..9c2c588 100644
--- a/nand_spl/board/freescale/p1010rdb/Makefile
+++ b/nand_spl/board/freescale/p1010rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile
index da43521..8c71ee1 100644
--- a/nand_spl/board/freescale/p1023rds/Makefile
+++ b/nand_spl/board/freescale/p1023rds/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/p1_p2_rdb/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
index 46cf709..abd6e68 100644
--- a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile
index 0336346..bfd5bde 100644
--- a/nand_spl/board/karo/tx25/Makefile
+++ b/nand_spl/board/karo/tx25/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/spl/.gitignore b/spl/.gitignore
index 7c88147..8cf487e 100644
--- a/spl/.gitignore
+++ b/spl/.gitignore
@@ -2,3 +2,4 @@ u-boot-spl
 u-boot-spl.bin
 u-boot-spl.lds
 u-boot-spl.map
+u-boot.lst
diff --git a/spl/Makefile b/spl/Makefile
index d9b1c2f..6b37339 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -149,7 +149,11 @@ $(START):	depend
 $(LIBS):	depend
 	$(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
 
-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBS)))
+$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot.lst depend
 	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@
 
 depend:	$(obj).depend
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 0/5 V2] Linker-generated arrays
  2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
                       ` (4 preceding siblings ...)
  2012-09-29  1:35     ` [U-Boot] [PATCH 5/5] common: Discard the __u_boot_cmd section Marek Vasut
@ 2012-09-29  2:44     ` Marek Vasut
  5 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  2:44 UTC (permalink / raw)
  To: u-boot

Dear Marek Vasut,

> This is a first stab at the linker-generated array. Basically, this
> concept is a generic abstraction of how u_boot_cmd works today. The
> patch 2/4 contains a huge pile of documentation which should clarify
> most of the questions.
> 
> I don't see size growth, I see size fluctiation in the order of tens
> of bytes with these patches applied. Subsequent patch added to this
> series removes the __u_boot_cmd section completely.
> 
> V2: Flip over commands to the LG-arrays, inline the documentation with
>     kernel-doc (most people seems to be happy about KD, it's just a
>     matter of negotiating the rules). Add patch discarding the u_boot_cmd
>     section.
[...]

Argh, this should have obviously been V3 :-/

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays
  2012-09-29  1:45     ` Joe Hershberger
@ 2012-09-29  2:49       ` Marek Vasut
  0 siblings, 0 replies; 47+ messages in thread
From: Marek Vasut @ 2012-09-29  2:49 UTC (permalink / raw)
  To: u-boot

Dear Joe Hershberger,

[...]


> While ll_entry_count is great and all, it is more natural to compare
> your list pointer to The End (tm) or not.  It would make client code
> capable of being cleaner if you also include ll_entry_end() as well.

Ain't that

#define ll_entry_end(_type, u) \
ll_entry_start(_type, u) + ll_entry_count(_type, u)

...

_type *end = ll_entry_end(_type, u);

?

> Thanks,
> -Joe

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile
  2012-09-30  0:17 ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
@ 2012-10-02 23:40   ` Joe Hershberger
  0 siblings, 0 replies; 47+ messages in thread
From: Joe Hershberger @ 2012-10-02 23:40 UTC (permalink / raw)
  To: u-boot

Hi Marek,

On Sat, Sep 29, 2012 at 7:17 PM, Marek Vasut <marex@denx.de> wrote:
> This patch adds essential components for generation of the contents of
> the linker section that is used by the linker-generated array. All of
> the contents is held in a separate file, u-boot.lst, which is generated
> at runtime just before U-Boot is linked.
>
> The purpose of this code is to especially generate the appropriate
> boundary symbols around each subsection in the section carrying the
> linker-generated arrays. Obviously, the interim linker code for actual
> placement of the variables into the section is generated too. The
> generated file, u-boot.lst, is included into u-boot.lds via the linker
> INCLUDE directive in u-boot.lds .
>
> Adjustments are made in the Makefile and spl/Makefile so that the
> u-boot.lds and u-boot-spl.lds depend on their respective .lst files.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Joe Hershberger <joe.hershberger@gmail.com>
> Cc: Mike Frysinger <vapier@gentoo.org>
> ---

Tested-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile
  2012-09-30  0:17 [U-Boot] [PATCH 0/5] Linker-generated arrays (take 2) Marek Vasut
@ 2012-09-30  0:17 ` Marek Vasut
  2012-10-02 23:40   ` Joe Hershberger
  0 siblings, 1 reply; 47+ messages in thread
From: Marek Vasut @ 2012-09-30  0:17 UTC (permalink / raw)
  To: u-boot

This patch adds essential components for generation of the contents of
the linker section that is used by the linker-generated array. All of
the contents is held in a separate file, u-boot.lst, which is generated
at runtime just before U-Boot is linked.

The purpose of this code is to especially generate the appropriate
boundary symbols around each subsection in the section carrying the
linker-generated arrays. Obviously, the interim linker code for actual
placement of the variables into the section is generated too. The
generated file, u-boot.lst, is included into u-boot.lds via the linker
INCLUDE directive in u-boot.lds .

Adjustments are made in the Makefile and spl/Makefile so that the
u-boot.lds and u-boot-spl.lds depend on their respective .lst files.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joe Hershberger <joe.hershberger@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
---
 .gitignore                                     |    1 +
 Makefile                                       |   13 +++--
 config.mk                                      |    2 +
 helper.mk                                      |   64 ++++++++++++++++++++++++
 nand_spl/board/freescale/mpc8536ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mpc8569mds/Makefile   |    9 +++-
 nand_spl/board/freescale/mpc8572ds/Makefile    |    9 +++-
 nand_spl/board/freescale/mx31pdk/Makefile      |    9 +++-
 nand_spl/board/freescale/p1010rdb/Makefile     |    9 +++-
 nand_spl/board/freescale/p1023rds/Makefile     |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb/Makefile    |    9 +++-
 nand_spl/board/freescale/p1_p2_rdb_pc/Makefile |    9 +++-
 nand_spl/board/karo/tx25/Makefile              |    9 +++-
 spl/.gitignore                                 |    1 +
 spl/Makefile                                   |    6 ++-
 15 files changed, 146 insertions(+), 22 deletions(-)
 create mode 100644 helper.mk

diff --git a/.gitignore b/.gitignore
index d91e91b..1ac43f2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,7 @@
 /u-boot.sha1
 /u-boot.dis
 /u-boot.lds
+/u-boot.lst
 /u-boot.ubl
 /u-boot.ais
 /u-boot.dtb
diff --git a/Makefile b/Makefile
index 4c515ac..ab9ff4e 100644
--- a/Makefile
+++ b/Makefile
@@ -515,7 +515,10 @@ else
 GEN_UBOOT = \
 		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
 		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
+		UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
+		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
+		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \
+			$$UNDEF_SYM $$UNDEF_LST $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
 endif
@@ -548,8 +551,12 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot
 $(LDSCRIPT):	depend
 		$(MAKE) -C $(dir $@) $(notdir $@)
 
-$(obj)u-boot.lds: $(LDSCRIPT)
-		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBBOARD) $(LIBS)))
+$(obj)u-boot.lds: $(LDSCRIPT) $(obj)u-boot.lst
+		$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 nand_spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
 		$(MAKE) -C nand_spl/board/$(BOARDDIR) all
diff --git a/config.mk b/config.mk
index c3822a2..d2ed5bf 100644
--- a/config.mk
+++ b/config.mk
@@ -23,6 +23,8 @@
 
 #########################################################################
 
+include $(TOPDIR)/helper.mk
+
 ifeq ($(CURDIR),$(SRCTREE))
 dir :=
 else
diff --git a/helper.mk b/helper.mk
new file mode 100644
index 0000000..79a1da0
--- /dev/null
+++ b/helper.mk
@@ -0,0 +1,64 @@
+#
+# Copyright (C) 2012 Marek Vasut <marex@denx.de>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+#########################################################################
+
+##
+# make_u_boot_list - Generate contents of u_boot_list section
+# 1:		The name of the resulting file (usually u-boot.lst)
+# 2:		Files to analyze for possible u_boot_list entries
+#
+# This function generates the contents of the u_boot_list section,
+# including all the border symbols for it's subsections. The operation
+# of this function is as follows, numbering goes per lines:
+#
+# 1) Dump the ELF header sections from all files supplied via $(2)
+# 2) Filter out all other stuff that does not belong into .u_boot_list
+#    section.
+# 3) Fix up the lines so that the resulting output is is in format
+#    ".u_boot_list.*".
+# 4) Remove the last .something$, since that only contains the name
+#    of the variable to be put into a subsection. This name is irelevant
+#    for generation of border symbols, thus of no interest, remove it.
+# 5) Take each line and for every dot "." in that line, print the whole
+#    line until that dot "." . This is important so that we have all
+#    parent border symbols generated as well.
+# 6) Load every line and firstly append "\a" at the end and print the
+#    line. Next, append "@" at the end and print the line. Finally,
+#    append "~" at the end of line. This will make sense in conjunction
+#    with 6) and 7).
+# 7) Sort the lines. It is imperative to use LC_COLLATE=C here because
+#    with this, the "\a" symbol is first and "~" symbol is last. Any
+#    other symbols fall inbetween. Symbols like "@", which marks the
+#    end of current line (representing current section) and ".", which
+#    means the line continues and thus represents subsection.
+# 8) With such ordering, all lines ending with "\a" will float at the
+#    begining of all lines with the same prefix. Thus it is easy to
+#    replace "\a" with __start and make it the __start border symbol.
+#    Very similarly for "~", which will be always at the bottom and so
+#    can be replaced by "__end" and made into the __end border symbol.
+#    Finally, every line ending with "@" symbol will be transformed
+#    into " *(SORT(${line}*)); " format, which in the linker parlance
+#    will allow it to trap all symbols relevant to the subsection.
+#
+define make_u_boot_list
+$(1): $(2)
+	$(OBJDUMP) -h $(2) | \
+	sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \
+		-e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \
+		-e 's/\.[^\.]\+$$$$//' \
+		-e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' | \
+	sed -n -e 'h;s/$$$$/\a/p;g;s/$$$$/@/p;g;s/$$$$/~/p;' | \
+	LC_COLLATE=C sort -u | \
+	sed -n -e '/\a$$$$/ { s/\./_/g;s/\a$$$$/__start = .;/p; }'\
+		-e '/~$$$$/ { s/\./_/g;s/~$$$$/__end = .;/p; }'\
+		-e '/@$$$$/ { s/\(.*\)@$$$$/*(SORT(\1.*));/p }' > $(1)
+endef
diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8536ds/Makefile
+++ b/nand_spl/board/freescale/mpc8536ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8569mds/Makefile
+++ b/nand_spl/board/freescale/mpc8569mds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/mpc8572ds/Makefile
+++ b/nand_spl/board/freescale/mpc8572ds/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile
index 87784d2..4beb3f3 100644
--- a/nand_spl/board/freescale/mx31pdk/Makefile
+++ b/nand_spl/board/freescale/mx31pdk/Makefile
@@ -6,6 +6,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -36,8 +37,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile
index cdbd492..9c2c588 100644
--- a/nand_spl/board/freescale/p1010rdb/Makefile
+++ b/nand_spl/board/freescale/p1010rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile
index da43521..8c71ee1 100644
--- a/nand_spl/board/freescale/p1023rds/Makefile
+++ b/nand_spl/board/freescale/p1023rds/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile
index 43da3df..fe6a8e0 100644
--- a/nand_spl/board/freescale/p1_p2_rdb/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -61,8 +62,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
index 46cf709..abd6e68 100644
--- a/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
+++ b/nand_spl/board/freescale/p1_p2_rdb_pc/Makefile
@@ -32,6 +32,7 @@ include $(TOPDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot-nand_spl.lds -Ttext $(CONFIG_SYS_TEXT_BASE_SPL) \
 		$(LDFLAGS) $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_NAND_SPL
@@ -62,8 +63,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot-nand_spl.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $(nandobj)u-boot-spl
 
-$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 # create symbolic links for common files
 
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile
index 0336346..bfd5bde 100644
--- a/nand_spl/board/karo/tx25/Makefile
+++ b/nand_spl/board/karo/tx25/Makefile
@@ -27,6 +27,7 @@ include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk
 nandobj	:= $(OBJTREE)/nand_spl/
 
 LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds
+LSTSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lst
 LDFLAGS := -T $(nandobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(LDFLAGS) \
 	   $(LDFLAGS_FINAL)
 AFLAGS	+= -DCONFIG_SPL_BUILD -DCONFIG_NAND_SPL
@@ -57,8 +58,12 @@ $(nandobj)u-boot-spl:	$(OBJS) $(nandobj)u-boot.lds
 		-Map $(nandobj)u-boot-spl.map \
 		-o $@
 
-$(nandobj)u-boot.lds: $(LDSCRIPT)
-	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# The following line expands into whole rule which generates $(LSTSCRIPT),
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(LSTSCRIPT), $(__OBJS)))
+$(nandobj)u-boot.lds: $(LDSCRIPT) $(LSTSCRIPT)
+	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
 
 #########################################################################
 
diff --git a/spl/.gitignore b/spl/.gitignore
index 7c88147..8cf487e 100644
--- a/spl/.gitignore
+++ b/spl/.gitignore
@@ -2,3 +2,4 @@ u-boot-spl
 u-boot-spl.bin
 u-boot-spl.lds
 u-boot-spl.map
+u-boot.lst
diff --git a/spl/Makefile b/spl/Makefile
index d9b1c2f..6b37339 100644
--- a/spl/Makefile
+++ b/spl/Makefile
@@ -149,7 +149,11 @@ $(START):	depend
 $(LIBS):	depend
 	$(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
 
-$(obj)u-boot-spl.lds: $(LDSCRIPT) depend
+# The following line expands into whole rule which generates u-boot.lst,
+# the file containing u-boots LG-array linker section. This is included into
+# $(LDSCRIPT). The function make_u_boot_list is defined in helper.mk file.
+$(eval $(call make_u_boot_list, $(obj)u-boot.lst, $(LIBS)))
+$(obj)u-boot-spl.lds: $(LDSCRIPT) $(obj)u-boot.lst depend
 	$(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - < $< > $@
 
 depend:	$(obj).depend
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2012-10-02 23:40 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-24  1:21 [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Marek Vasut
2012-09-24  1:21 ` [U-Boot] [PATCH 1/3] common: Add symbol handling for generic lists into Makefile Marek Vasut
2012-09-24 15:36   ` Joe Hershberger
2012-09-24 16:04     ` Marek Vasut
2012-09-24 17:00       ` Joe Hershberger
2012-09-24 17:08         ` Marek Vasut
2012-09-24 17:43           ` Joe Hershberger
2012-09-24  1:21 ` [U-Boot] [PATCH 2/3] common: Implement support for linker-generated arrays Marek Vasut
2012-09-24 16:30   ` Joe Hershberger
2012-09-24 16:52     ` Marek Vasut
2012-09-24  1:21 ` [U-Boot] [PATCH 3/3] common: Add .u_boot_list into all linker files Marek Vasut
2012-09-24 16:34   ` Joe Hershberger
2012-09-24 16:53     ` Marek Vasut
2012-09-24 17:06       ` Tom Rini
2012-09-24 17:09         ` Marek Vasut
2012-09-24 17:18           ` Tom Rini
2012-09-24 17:23             ` Joe Hershberger
2012-09-24 18:07               ` Tom Rini
2012-09-24 17:25             ` Marek Vasut
2012-09-24 17:29 ` [U-Boot] [RFC] [PATCH 0/3] Linker-generated arrays Tom Rini
2012-09-24 17:42   ` Marek Vasut
2012-09-25 16:11 ` [U-Boot] [RFC] [PATCH 0/3 v2] " Marek Vasut
2012-09-25 16:11   ` [U-Boot] [PATCH 1/3 V2] common: Add symbol handling for generic lists into Makefile Marek Vasut
2012-09-25 20:12     ` Wolfgang Denk
2012-09-25 20:22       ` Marek Vasut
2012-09-25 16:11   ` [U-Boot] [PATCH 2/3 V2] common: Implement support for linker-generated arrays Marek Vasut
2012-09-25 20:16     ` Wolfgang Denk
2012-09-25 20:24       ` Marek Vasut
2012-09-26  7:01         ` Wolfgang Denk
2012-09-26 16:53           ` Marek Vasut
2012-09-29  1:45     ` Joe Hershberger
2012-09-29  2:49       ` Marek Vasut
2012-09-25 16:12   ` [U-Boot] [PATCH 3/3 V2] common: Add .u_boot_list into all linker files Marek Vasut
2012-09-25 16:43     ` Otavio Salvador
2012-09-25 16:54       ` Marek Vasut
2012-09-25 20:17     ` Wolfgang Denk
2012-09-25 20:25       ` Marek Vasut
2012-09-29  1:34   ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
2012-09-29  1:34     ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
2012-09-29  2:29       ` [U-Boot] [PATCH 1/5 V2] " Marek Vasut
2012-09-29  1:35     ` [U-Boot] [PATCH 2/5] common: Implement support for linker-generated arrays Marek Vasut
2012-09-29  1:35     ` [U-Boot] [PATCH 3/5] common: Add .u_boot_list into all linker files Marek Vasut
2012-09-29  1:35     ` [U-Boot] [PATCH 4/5] common: Convert the U-Boot commands to LG-arrays Marek Vasut
2012-09-29  1:35     ` [U-Boot] [PATCH 5/5] common: Discard the __u_boot_cmd section Marek Vasut
2012-09-29  2:44     ` [U-Boot] [PATCH 0/5 V2] Linker-generated arrays Marek Vasut
2012-09-30  0:17 [U-Boot] [PATCH 0/5] Linker-generated arrays (take 2) Marek Vasut
2012-09-30  0:17 ` [U-Boot] [PATCH 1/5] common: Add symbol handling for generic lists into Makefile Marek Vasut
2012-10-02 23:40   ` Joe Hershberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.