[U-Boot] [PATCH v1 0/1] Get rid of R_ARM_ABS32 relocation records

R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch 'series' fixes LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE.
This V1 is provided for all to test and make sure that no ill-effect arises from LGA changes; V2 will integrate any feedback on LGAs and also remove any remaining R_ARM_ABS32 relocations.
Albert ARIBAUD (1): Refactor linker-generated arrays
Makefile | 6 +- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 2 +- arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 2 +- arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 2 +- arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 2 +- arch/arm/cpu/ixp/u-boot.lds | 2 +- arch/arm/cpu/u-boot.lds | 2 +- arch/avr32/cpu/u-boot.lds | 2 +- arch/blackfin/cpu/u-boot.lds | 2 +- arch/microblaze/cpu/u-boot.lds | 2 +- arch/mips/cpu/u-boot.lds | 2 +- arch/nds32/cpu/n1213/u-boot.lds | 2 +- arch/nios2/cpu/u-boot.lds | 2 +- arch/powerpc/cpu/74xx_7xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc512x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8220/u-boot.lds | 2 +- arch/powerpc/cpu/mpc824x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8260/u-boot.lds | 2 +- arch/powerpc/cpu/mpc83xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc86xx/u-boot.lds | 2 +- arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 +- arch/sandbox/cpu/u-boot.lds | 2 +- arch/sh/cpu/sh2/u-boot.lds | 2 +- arch/sh/cpu/sh3/u-boot.lds | 2 +- arch/sh/cpu/sh4/u-boot.lds | 2 +- arch/x86/cpu/u-boot.lds | 2 +- board/BuS/eb_cpu5282/u-boot.lds | 2 +- board/LEOX/elpt860/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds | 2 +- board/RPXlite/u-boot.lds | 2 +- board/RPXlite_dw/u-boot.lds | 2 +- board/RRvision/u-boot.lds | 2 +- board/actux1/u-boot.lds | 2 +- board/actux2/u-boot.lds | 2 +- board/actux3/u-boot.lds | 2 +- board/adder/u-boot.lds | 2 +- board/ait/cam_enc_4xx/u-boot-spl.lds | 2 +- board/altera/nios2-generic/u-boot.lds | 2 +- board/amcc/acadia/u-boot-nand.lds | 2 +- board/amcc/bamboo/u-boot-nand.lds | 2 +- board/amcc/canyonlands/u-boot-nand.lds | 2 +- board/amcc/kilauea/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-ram.lds | 2 +- board/astro/mcf5373l/u-boot.lds | 2 +- board/cobra5272/u-boot.lds | 2 +- board/cogent/u-boot.lds | 2 +- board/dave/PPChameleonEVB/u-boot.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-hawk.lds | 2 +- board/dvlhost/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds | 2 +- board/emk/top860/u-boot.lds | 2 +- board/ep88x/u-boot.lds | 2 +- board/esd/dasa_sim/u-boot.lds | 2 +- board/esd/pmc440/u-boot-nand.lds | 2 +- board/esd/tasreg/u-boot.lds | 2 +- board/esteem192e/u-boot.lds | 2 +- board/evb64260/u-boot.lds | 2 +- board/fads/u-boot.lds | 2 +- board/flagadm/u-boot.lds | 2 +- board/freescale/m5208evbe/u-boot.lds | 2 +- board/freescale/m52277evb/u-boot.lds | 2 +- board/freescale/m5235evb/u-boot.lds | 2 +- board/freescale/m5249evb/u-boot.lds | 2 +- board/freescale/m5253demo/u-boot.lds | 2 +- board/freescale/m5253evbe/u-boot.lds | 2 +- board/freescale/m5271evb/u-boot.lds | 2 +- board/freescale/m5272c3/u-boot.lds | 2 +- board/freescale/m5275evb/u-boot.lds | 2 +- board/freescale/m5282evb/u-boot.lds | 2 +- board/freescale/m53017evb/u-boot.lds | 2 +- board/freescale/m5329evb/u-boot.lds | 2 +- board/freescale/m5373evb/u-boot.lds | 2 +- board/freescale/m54418twr/u-boot.lds | 2 +- board/freescale/m54451evb/u-boot.lds | 2 +- board/freescale/m54455evb/u-boot.lds | 2 +- board/freescale/m547xevb/u-boot.lds | 2 +- board/freescale/m548xevb/u-boot.lds | 2 +- board/freescale/mx31ads/u-boot.lds | 2 +- board/gaisler/gr_cpci_ax2000/u-boot.lds | 2 +- board/gaisler/gr_ep2s60/u-boot.lds | 2 +- board/gaisler/gr_xc3s_1500/u-boot.lds | 2 +- board/gaisler/grsim/u-boot.lds | 2 +- board/gaisler/grsim_leon2/u-boot.lds | 2 +- board/gen860t/u-boot-flashenv.lds | 2 +- board/gen860t/u-boot.lds | 2 +- board/genietv/u-boot.lds | 2 +- board/hermes/u-boot.lds | 2 +- board/hymod/u-boot.lds | 2 +- board/icu862/u-boot.lds | 2 +- board/idmr/u-boot.lds | 2 +- board/ip860/u-boot.lds | 2 +- board/ivm/u-boot.lds | 2 +- board/korat/u-boot-F7FC.lds | 2 +- board/kup/kup4k/u-boot.lds | 2 +- board/kup/kup4x/u-boot.lds | 2 +- board/lwmon/u-boot.lds | 2 +- board/manroland/uc100/u-boot.lds | 2 +- board/matrix_vision/mvsmr/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds | 2 +- board/mousse/u-boot.lds | 2 +- board/mvblue/u-boot.lds | 2 +- board/netphone/u-boot.lds | 2 +- board/netta/u-boot.lds | 2 +- board/netta2/u-boot.lds | 2 +- board/netvia/u-boot.lds | 2 +- board/nx823/u-boot.lds | 2 +- board/openrisc/openrisc-generic/u-boot.lds | 2 +- board/quantum/u-boot.lds | 2 +- board/r360mpi/u-boot.lds | 2 +- board/rbc823/u-boot.lds | 2 +- board/renesas/sh7757lcr/u-boot.lds | 2 +- board/rsdproto/u-boot.lds | 2 +- board/samsung/smdk5250/smdk5250-uboot-spl.lds | 2 +- board/samsung/smdk6400/u-boot-nand.lds | 2 +- board/sandpoint/u-boot.lds | 2 +- board/sixnet/u-boot.lds | 2 +- board/snmc/qs850/u-boot.lds | 2 +- board/snmc/qs860t/u-boot.lds | 2 +- board/spc1920/u-boot.lds | 2 +- board/spd8xx/u-boot.lds | 2 +- board/stx/stxxtc/u-boot.lds | 2 +- board/svm_sc8xx/u-boot.lds | 2 +- board/tqc/tqm8xx/u-boot.lds | 2 +- board/v37/u-boot.lds | 2 +- board/vpac270/u-boot-spl.lds | 2 +- common/cmd_help.c | 2 +- common/command.c | 1 + config.mk | 2 - helper.mk | 64 ------ include/command.h | 2 +- include/env_callback.h | 2 +- include/linker_lists.h | 244 +++++++++++++++++----- 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 | 2 +- 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/karo/tx25/Makefile | 6 +- nand_spl/board/karo/tx25/u-boot.lds | 2 +- nand_spl/board/samsung/smdk6400/u-boot.lds | 2 +- spl/Makefile | 6 +- 152 files changed, 342 insertions(+), 305 deletions(-) delete mode 100644 helper.mk

Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net --- Makefile | 6 +- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 2 +- arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 2 +- arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 2 +- arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 2 +- arch/arm/cpu/ixp/u-boot.lds | 2 +- arch/arm/cpu/u-boot.lds | 2 +- arch/avr32/cpu/u-boot.lds | 2 +- arch/blackfin/cpu/u-boot.lds | 2 +- arch/microblaze/cpu/u-boot.lds | 2 +- arch/mips/cpu/u-boot.lds | 2 +- arch/nds32/cpu/n1213/u-boot.lds | 2 +- arch/nios2/cpu/u-boot.lds | 2 +- arch/powerpc/cpu/74xx_7xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc512x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8220/u-boot.lds | 2 +- arch/powerpc/cpu/mpc824x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8260/u-boot.lds | 2 +- arch/powerpc/cpu/mpc83xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc86xx/u-boot.lds | 2 +- arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 +- arch/sandbox/cpu/u-boot.lds | 2 +- arch/sh/cpu/sh2/u-boot.lds | 2 +- arch/sh/cpu/sh3/u-boot.lds | 2 +- arch/sh/cpu/sh4/u-boot.lds | 2 +- arch/x86/cpu/u-boot.lds | 2 +- board/BuS/eb_cpu5282/u-boot.lds | 2 +- board/LEOX/elpt860/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds | 2 +- board/RPXlite/u-boot.lds | 2 +- board/RPXlite_dw/u-boot.lds | 2 +- board/RRvision/u-boot.lds | 2 +- board/actux1/u-boot.lds | 2 +- board/actux2/u-boot.lds | 2 +- board/actux3/u-boot.lds | 2 +- board/adder/u-boot.lds | 2 +- board/ait/cam_enc_4xx/u-boot-spl.lds | 2 +- board/altera/nios2-generic/u-boot.lds | 2 +- board/amcc/acadia/u-boot-nand.lds | 2 +- board/amcc/bamboo/u-boot-nand.lds | 2 +- board/amcc/canyonlands/u-boot-nand.lds | 2 +- board/amcc/kilauea/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-ram.lds | 2 +- board/astro/mcf5373l/u-boot.lds | 2 +- board/cobra5272/u-boot.lds | 2 +- board/cogent/u-boot.lds | 2 +- board/dave/PPChameleonEVB/u-boot.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-hawk.lds | 2 +- board/dvlhost/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds | 2 +- board/emk/top860/u-boot.lds | 2 +- board/ep88x/u-boot.lds | 2 +- board/esd/dasa_sim/u-boot.lds | 2 +- board/esd/pmc440/u-boot-nand.lds | 2 +- board/esd/tasreg/u-boot.lds | 2 +- board/esteem192e/u-boot.lds | 2 +- board/evb64260/u-boot.lds | 2 +- board/fads/u-boot.lds | 2 +- board/flagadm/u-boot.lds | 2 +- board/freescale/m5208evbe/u-boot.lds | 2 +- board/freescale/m52277evb/u-boot.lds | 2 +- board/freescale/m5235evb/u-boot.lds | 2 +- board/freescale/m5249evb/u-boot.lds | 2 +- board/freescale/m5253demo/u-boot.lds | 2 +- board/freescale/m5253evbe/u-boot.lds | 2 +- board/freescale/m5271evb/u-boot.lds | 2 +- board/freescale/m5272c3/u-boot.lds | 2 +- board/freescale/m5275evb/u-boot.lds | 2 +- board/freescale/m5282evb/u-boot.lds | 2 +- board/freescale/m53017evb/u-boot.lds | 2 +- board/freescale/m5329evb/u-boot.lds | 2 +- board/freescale/m5373evb/u-boot.lds | 2 +- board/freescale/m54418twr/u-boot.lds | 2 +- board/freescale/m54451evb/u-boot.lds | 2 +- board/freescale/m54455evb/u-boot.lds | 2 +- board/freescale/m547xevb/u-boot.lds | 2 +- board/freescale/m548xevb/u-boot.lds | 2 +- board/freescale/mx31ads/u-boot.lds | 2 +- board/gaisler/gr_cpci_ax2000/u-boot.lds | 2 +- board/gaisler/gr_ep2s60/u-boot.lds | 2 +- board/gaisler/gr_xc3s_1500/u-boot.lds | 2 +- board/gaisler/grsim/u-boot.lds | 2 +- board/gaisler/grsim_leon2/u-boot.lds | 2 +- board/gen860t/u-boot-flashenv.lds | 2 +- board/gen860t/u-boot.lds | 2 +- board/genietv/u-boot.lds | 2 +- board/hermes/u-boot.lds | 2 +- board/hymod/u-boot.lds | 2 +- board/icu862/u-boot.lds | 2 +- board/idmr/u-boot.lds | 2 +- board/ip860/u-boot.lds | 2 +- board/ivm/u-boot.lds | 2 +- board/korat/u-boot-F7FC.lds | 2 +- board/kup/kup4k/u-boot.lds | 2 +- board/kup/kup4x/u-boot.lds | 2 +- board/lwmon/u-boot.lds | 2 +- board/manroland/uc100/u-boot.lds | 2 +- board/matrix_vision/mvsmr/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds | 2 +- board/mousse/u-boot.lds | 2 +- board/mvblue/u-boot.lds | 2 +- board/netphone/u-boot.lds | 2 +- board/netta/u-boot.lds | 2 +- board/netta2/u-boot.lds | 2 +- board/netvia/u-boot.lds | 2 +- board/nx823/u-boot.lds | 2 +- board/openrisc/openrisc-generic/u-boot.lds | 2 +- board/quantum/u-boot.lds | 2 +- board/r360mpi/u-boot.lds | 2 +- board/rbc823/u-boot.lds | 2 +- board/renesas/sh7757lcr/u-boot.lds | 2 +- board/rsdproto/u-boot.lds | 2 +- board/samsung/smdk5250/smdk5250-uboot-spl.lds | 2 +- board/samsung/smdk6400/u-boot-nand.lds | 2 +- board/sandpoint/u-boot.lds | 2 +- board/sixnet/u-boot.lds | 2 +- board/snmc/qs850/u-boot.lds | 2 +- board/snmc/qs860t/u-boot.lds | 2 +- board/spc1920/u-boot.lds | 2 +- board/spd8xx/u-boot.lds | 2 +- board/stx/stxxtc/u-boot.lds | 2 +- board/svm_sc8xx/u-boot.lds | 2 +- board/tqc/tqm8xx/u-boot.lds | 2 +- board/v37/u-boot.lds | 2 +- board/vpac270/u-boot-spl.lds | 2 +- common/cmd_help.c | 2 +- common/command.c | 1 + config.mk | 2 - helper.mk | 64 ------ include/command.h | 2 +- include/env_callback.h | 2 +- include/linker_lists.h | 244 +++++++++++++++++----- 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 | 2 +- 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/karo/tx25/Makefile | 6 +- nand_spl/board/karo/tx25/u-boot.lds | 2 +- nand_spl/board/samsung/smdk6400/u-boot.lds | 2 +- spl/Makefile | 6 +- 152 files changed, 342 insertions(+), 305 deletions(-) delete mode 100644 helper.mk
diff --git a/Makefile b/Makefile index 51bd918..3cff193 100644 --- a/Makefile +++ b/Makefile @@ -595,11 +595,7 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot $(LDSCRIPT): depend $(MAKE) -C $(dir $@) $(notdir $@)
-# 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)include/u-boot.lst, $(LIBBOARD) $(LIBS))) -$(obj)u-boot.lds: $(LDSCRIPT) $(obj)include/u-boot.lst +$(obj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds index 008ae89..8d371f8 100644 --- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds +++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds @@ -51,7 +51,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds index 6dc681a..ba33978 100644 --- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds @@ -52,7 +52,7 @@ SECTIONS . = ALIGN(4);
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds index f3bd5e7..ae23ddd 100644 --- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds @@ -52,7 +52,7 @@ SECTIONS . = ALIGN(4);
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); 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 9979c30..aefaccc 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -49,7 +49,7 @@ SECTIONS .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds index 81d954f..2adfe5b 100644 --- a/arch/arm/cpu/ixp/u-boot.lds +++ b/arch/arm/cpu/ixp/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds index e6b202b..466eb04 100644 --- a/arch/arm/cpu/u-boot.lds +++ b/arch/arm/cpu/u-boot.lds @@ -52,7 +52,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds index 0b16d2a..ad4003f 100644 --- a/arch/avr32/cpu/u-boot.lds +++ b/arch/avr32/cpu/u-boot.lds @@ -50,7 +50,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds index 58db838..88b1eaf 100644 --- a/arch/blackfin/cpu/u-boot.lds +++ b/arch/blackfin/cpu/u-boot.lds @@ -114,7 +114,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); } >ram_data
.text_l1 : diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds index fe3d97d..e1fab9f 100644 --- a/arch/microblaze/cpu/u-boot.lds +++ b/arch/microblaze/cpu/u-boot.lds @@ -54,7 +54,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.bss ALIGN(0x4): diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds index 37c9d23..6571518 100644 --- a/arch/mips/cpu/u-boot.lds +++ b/arch/mips/cpu/u-boot.lds @@ -64,7 +64,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
uboot_end_data = .; diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds index cef19c5..4516b45 100644 --- a/arch/nds32/cpu/n1213/u-boot.lds +++ b/arch/nds32/cpu/n1213/u-boot.lds @@ -55,7 +55,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds index d0eb80d..a879f5b 100644 --- a/arch/nios2/cpu/u-boot.lds +++ b/arch/nios2/cpu/u-boot.lds @@ -48,7 +48,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
/* INIT DATA sections - "Small" data (see the gcc -G option) diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds index ecee439..666e72e 100644 --- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds +++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds index 7faefba..b6eaef0 100644 --- a/arch/powerpc/cpu/mpc512x/u-boot.lds +++ b/arch/powerpc/cpu/mpc512x/u-boot.lds @@ -60,7 +60,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds index c91e146..30512e5 100644 --- a/arch/powerpc/cpu/mpc5xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds index ac7844d..a75d137 100644 --- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds +++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds @@ -68,7 +68,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds index 1f46ead..bc54535 100644 --- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds index c147954..f40079e 100644 --- a/arch/powerpc/cpu/mpc8220/u-boot.lds +++ b/arch/powerpc/cpu/mpc8220/u-boot.lds @@ -62,7 +62,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds index a713012..fefd3a8 100644 --- a/arch/powerpc/cpu/mpc824x/u-boot.lds +++ b/arch/powerpc/cpu/mpc824x/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds index 42385fc..17c9f5b 100644 --- a/arch/powerpc/cpu/mpc8260/u-boot.lds +++ b/arch/powerpc/cpu/mpc8260/u-boot.lds @@ -62,7 +62,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds index d699def..cd63f86 100644 --- a/arch/powerpc/cpu/mpc83xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds @@ -61,7 +61,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds index f7c4a22..bf9d7f3 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds @@ -72,7 +72,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds index 46dbaed..94efe76 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds @@ -54,7 +54,7 @@ SECTIONS _edata = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(8); diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds index 4a40a1f..494c9de 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds index 8bfadf2..5360ad2 100644 --- a/arch/powerpc/cpu/mpc86xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds @@ -67,7 +67,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds index a96ddd5..0a673b6 100644 --- a/arch/powerpc/cpu/ppc4xx/u-boot.lds +++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds @@ -81,7 +81,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds index 1b781eb..544f37b 100644 --- a/arch/sandbox/cpu/u-boot.lds +++ b/arch/sandbox/cpu/u-boot.lds @@ -27,7 +27,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
__u_boot_sandbox_option_start = .; diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds index 17f8091..32cfdb4 100644 --- a/arch/sh/cpu/sh2/u-boot.lds +++ b/arch/sh/cpu/sh2/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds index c831961..e01b61c 100644 --- a/arch/sh/cpu/sh3/u-boot.lds +++ b/arch/sh/cpu/sh3/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds index 0ecafcf..1a2c592 100644 --- a/arch/sh/cpu/sh4/u-boot.lds +++ b/arch/sh/cpu/sh4/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds index 0c6f0e3..6cc881e 100644 --- a/arch/x86/cpu/u-boot.lds +++ b/arch/x86/cpu/u-boot.lds @@ -36,7 +36,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds index 0c92d31..a8a9fcb 100644 --- a/board/BuS/eb_cpu5282/u-boot.lds +++ b/board/BuS/eb_cpu5282/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds index 2bb876d..2989172 100644 --- a/board/LEOX/elpt860/u-boot.lds +++ b/board/LEOX/elpt860/u-boot.lds @@ -89,7 +89,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds index 18f962c..9fba835 100644 --- a/board/RPXClassic/u-boot.lds +++ b/board/RPXClassic/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds index 18f962c..9fba835 100644 --- a/board/RPXlite/u-boot.lds +++ b/board/RPXlite/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds index 18f962c..9fba835 100644 --- a/board/RPXlite_dw/u-boot.lds +++ b/board/RPXlite_dw/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds index 748e511..6d957ad 100644 --- a/board/RRvision/u-boot.lds +++ b/board/RRvision/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds index c41eed0..daa5ed2 100644 --- a/board/actux1/u-boot.lds +++ b/board/actux1/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN (4); diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds index 8409984..24ab013 100644 --- a/board/actux2/u-boot.lds +++ b/board/actux2/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN (4); diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds index a3bd02b..114a5c2 100644 --- a/board/actux3/u-boot.lds +++ b/board/actux3/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN (4); diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds index 73e2f3f..01a1d01 100644 --- a/board/adder/u-boot.lds +++ b/board/adder/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds index 656b2fb..70d4ab7 100644 --- a/board/ait/cam_enc_4xx/u-boot-spl.lds +++ b/board/ait/cam_enc_4xx/u-boot-spl.lds @@ -49,7 +49,7 @@ SECTIONS .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram . = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); } >.sram . = ALIGN(4); .rel.dyn : { diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds index 289386b..c65277c 100644 --- a/board/altera/nios2-generic/u-boot.lds +++ b/board/altera/nios2-generic/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
/* INIT DATA sections - "Small" data (see the gcc -G option) diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds index beba978..b02b7cc 100644 --- a/board/amcc/acadia/u-boot-nand.lds +++ b/board/amcc/acadia/u-boot-nand.lds @@ -74,7 +74,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds index 2dd00d7..7d12808 100644 --- a/board/amcc/bamboo/u-boot-nand.lds +++ b/board/amcc/bamboo/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds index 8ac5116..9fa29f0 100644 --- a/board/amcc/canyonlands/u-boot-nand.lds +++ b/board/amcc/canyonlands/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds index beba978..b02b7cc 100644 --- a/board/amcc/kilauea/u-boot-nand.lds +++ b/board/amcc/kilauea/u-boot-nand.lds @@ -74,7 +74,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds index 18266ef..9ad41a0 100644 --- a/board/amcc/sequoia/u-boot-nand.lds +++ b/board/amcc/sequoia/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds index 6b02784..ee30dc0 100644 --- a/board/amcc/sequoia/u-boot-ram.lds +++ b/board/amcc/sequoia/u-boot-ram.lds @@ -66,7 +66,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds index bc40fd6..dce1f13 100644 --- a/board/astro/mcf5373l/u-boot.lds +++ b/board/astro/mcf5373l/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds index d054f20..9cd5e13 100644 --- a/board/cobra5272/u-boot.lds +++ b/board/cobra5272/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds index 2a6027f..edafbba 100644 --- a/board/cogent/u-boot.lds +++ b/board/cogent/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds index 8a306d6..34125c7 100644 --- a/board/dave/PPChameleonEVB/u-boot.lds +++ b/board/dave/PPChameleonEVB/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds index c5fd93c..117b117 100644 --- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds +++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds @@ -50,7 +50,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); } >.sram
. = ALIGN(4); diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds index 86dc172..9ef2205 100644 --- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds +++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds @@ -59,7 +59,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds index 1bd1700..ce3123b 100644 --- a/board/dvlhost/u-boot.lds +++ b/board/dvlhost/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN (4); diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds index c8d3894..4d7ca31 100644 --- a/board/eltec/mhpc/u-boot.lds +++ b/board/eltec/mhpc/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds index 22626d3..0ca7082 100644 --- a/board/emk/top860/u-boot.lds +++ b/board/emk/top860/u-boot.lds @@ -70,7 +70,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds index 1dcc22a..520e863 100644 --- a/board/ep88x/u-boot.lds +++ b/board/ep88x/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds index 7eca183..0731921 100644 --- a/board/esd/dasa_sim/u-boot.lds +++ b/board/esd/dasa_sim/u-boot.lds @@ -76,7 +76,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds index ca7df45..2edd082 100644 --- a/board/esd/pmc440/u-boot-nand.lds +++ b/board/esd/pmc440/u-boot-nand.lds @@ -104,7 +104,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds index 0d6a0f3..23021b2 100644 --- a/board/esd/tasreg/u-boot.lds +++ b/board/esd/tasreg/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds index fe5cf09..d20b2f2 100644 --- a/board/esteem192e/u-boot.lds +++ b/board/esteem192e/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds index eac9c07..61c9669 100644 --- a/board/evb64260/u-boot.lds +++ b/board/evb64260/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds index 6022dbc..4fd08a7 100644 --- a/board/fads/u-boot.lds +++ b/board/fads/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds index c8d3894..4d7ca31 100644 --- a/board/flagadm/u-boot.lds +++ b/board/flagadm/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds index 2c151f2..bd4a6bf 100644 --- a/board/freescale/m5208evbe/u-boot.lds +++ b/board/freescale/m5208evbe/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds index dbd6f6a..a0f84c3 100644 --- a/board/freescale/m52277evb/u-boot.lds +++ b/board/freescale/m52277evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds index 00932ae..64eff29 100644 --- a/board/freescale/m5235evb/u-boot.lds +++ b/board/freescale/m5235evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds index d054f20..9cd5e13 100644 --- a/board/freescale/m5249evb/u-boot.lds +++ b/board/freescale/m5249evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds index f8116f6..e05479d 100644 --- a/board/freescale/m5253demo/u-boot.lds +++ b/board/freescale/m5253demo/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds index d054f20..9cd5e13 100644 --- a/board/freescale/m5253evbe/u-boot.lds +++ b/board/freescale/m5253evbe/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds index 133ec01..f877ccc 100644 --- a/board/freescale/m5271evb/u-boot.lds +++ b/board/freescale/m5271evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds index d054f20..9cd5e13 100644 --- a/board/freescale/m5272c3/u-boot.lds +++ b/board/freescale/m5272c3/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds index fc68de1..759c10f 100644 --- a/board/freescale/m5275evb/u-boot.lds +++ b/board/freescale/m5275evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds index ad49874..0311fbb 100644 --- a/board/freescale/m5282evb/u-boot.lds +++ b/board/freescale/m5282evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds index d25a36f..b79cabd 100644 --- a/board/freescale/m53017evb/u-boot.lds +++ b/board/freescale/m53017evb/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds index 6616594..631ad26 100644 --- a/board/freescale/m5329evb/u-boot.lds +++ b/board/freescale/m5329evb/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds index bc40fd6..dce1f13 100644 --- a/board/freescale/m5373evb/u-boot.lds +++ b/board/freescale/m5373evb/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m54418twr/u-boot.lds b/board/freescale/m54418twr/u-boot.lds index 36a4c26..263c7c0 100644 --- a/board/freescale/m54418twr/u-boot.lds +++ b/board/freescale/m54418twr/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds index 91328a4..86d97d2 100644 --- a/board/freescale/m54451evb/u-boot.lds +++ b/board/freescale/m54451evb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds index 36a4c26..263c7c0 100644 --- a/board/freescale/m54455evb/u-boot.lds +++ b/board/freescale/m54455evb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds index de4d0eb..d269d93 100644 --- a/board/freescale/m547xevb/u-boot.lds +++ b/board/freescale/m547xevb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds index fbbe0c5..1c87bbc 100644 --- a/board/freescale/m548xevb/u-boot.lds +++ b/board/freescale/m548xevb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index 5267729..cf52091 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -60,7 +60,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds index 774c494..fc9d79d 100644 --- a/board/gaisler/gr_cpci_ax2000/u-boot.lds +++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.data : diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds index f6d1301..33f32ea 100644 --- a/board/gaisler/gr_ep2s60/u-boot.lds +++ b/board/gaisler/gr_ep2s60/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.data : diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds index 7df6e83..84859fe 100644 --- a/board/gaisler/gr_xc3s_1500/u-boot.lds +++ b/board/gaisler/gr_xc3s_1500/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.data : diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds index b241cbc..81dc5b1 100644 --- a/board/gaisler/grsim/u-boot.lds +++ b/board/gaisler/grsim/u-boot.lds @@ -87,7 +87,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.data : diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds index 63c15b9..d6ecd8b 100644 --- a/board/gaisler/grsim_leon2/u-boot.lds +++ b/board/gaisler/grsim_leon2/u-boot.lds @@ -87,7 +87,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.data : diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds index 1cbe7e3..dad73ac 100644 --- a/board/gen860t/u-boot-flashenv.lds +++ b/board/gen860t/u-boot-flashenv.lds @@ -73,7 +73,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds index dd89c70..e0a3f08 100644 --- a/board/gen860t/u-boot.lds +++ b/board/gen860t/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds index 124b183..b3dd3fc 100644 --- a/board/genietv/u-boot.lds +++ b/board/genietv/u-boot.lds @@ -83,7 +83,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds index f02eb1c..1cdd062 100644 --- a/board/hermes/u-boot.lds +++ b/board/hermes/u-boot.lds @@ -75,7 +75,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds index 7afae0a..28b0047 100644 --- a/board/hymod/u-boot.lds +++ b/board/hymod/u-boot.lds @@ -113,7 +113,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds index 6778eb1..7701c64 100644 --- a/board/icu862/u-boot.lds +++ b/board/icu862/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds index 0d6a0f3..23021b2 100644 --- a/board/idmr/u-boot.lds +++ b/board/idmr/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds index 18f962c..9fba835 100644 --- a/board/ip860/u-boot.lds +++ b/board/ip860/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds index 4cca652..0b09114 100644 --- a/board/ivm/u-boot.lds +++ b/board/ivm/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds index 033cff4..3b62328 100644 --- a/board/korat/u-boot-F7FC.lds +++ b/board/korat/u-boot-F7FC.lds @@ -110,7 +110,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds index 18f962c..9fba835 100644 --- a/board/kup/kup4k/u-boot.lds +++ b/board/kup/kup4k/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds index 18f962c..9fba835 100644 --- a/board/kup/kup4x/u-boot.lds +++ b/board/kup/kup4x/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds index bc71b0d..49a8994 100644 --- a/board/lwmon/u-boot.lds +++ b/board/lwmon/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds index e32ae37..2eaf612 100644 --- a/board/manroland/uc100/u-boot.lds +++ b/board/manroland/uc100/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds index 5a3a9ea..9745e19 100644 --- a/board/matrix_vision/mvsmr/u-boot.lds +++ b/board/matrix_vision/mvsmr/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds index 18f962c..9fba835 100644 --- a/board/mbx8xx/u-boot.lds +++ b/board/mbx8xx/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds index 43f91f1..cdb56b4 100644 --- a/board/mousse/u-boot.lds +++ b/board/mousse/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds index c378564..6161b21 100644 --- a/board/mvblue/u-boot.lds +++ b/board/mvblue/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds index cdc1fda..bd4822e 100644 --- a/board/netphone/u-boot.lds +++ b/board/netphone/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds index cdc1fda..bd4822e 100644 --- a/board/netta/u-boot.lds +++ b/board/netta/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds index cdc1fda..bd4822e 100644 --- a/board/netta2/u-boot.lds +++ b/board/netta2/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds index cdc1fda..bd4822e 100644 --- a/board/netvia/u-boot.lds +++ b/board/netvia/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds index c8d3894..4d7ca31 100644 --- a/board/nx823/u-boot.lds +++ b/board/nx823/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds index 4cffacb..10be54c 100644 --- a/board/openrisc/openrisc-generic/u-boot.lds +++ b/board/openrisc/openrisc-generic/u-boot.lds @@ -29,7 +29,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
.rodata : { diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds index 18f962c..9fba835 100644 --- a/board/quantum/u-boot.lds +++ b/board/quantum/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds index 3ef0d9e..8eb2e11 100644 --- a/board/r360mpi/u-boot.lds +++ b/board/r360mpi/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds index a86b568..06e34c6 100644 --- a/board/rbc823/u-boot.lds +++ b/board/rbc823/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = .; diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds index cf406ce..2c7bae8 100644 --- a/board/renesas/sh7757lcr/u-boot.lds +++ b/board/renesas/sh7757lcr/u-boot.lds @@ -79,7 +79,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
PROVIDE (reloc_dst_end = .); diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds index ff95029..4cca0ad 100644 --- a/board/rsdproto/u-boot.lds +++ b/board/rsdproto/u-boot.lds @@ -100,7 +100,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/samsung/smdk5250/smdk5250-uboot-spl.lds b/board/samsung/smdk5250/smdk5250-uboot-spl.lds index 951d8ce..07194bc 100644 --- a/board/samsung/smdk5250/smdk5250-uboot-spl.lds +++ b/board/samsung/smdk5250/smdk5250-uboot-spl.lds @@ -49,7 +49,7 @@ SECTIONS . = ALIGN(4);
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); } >.sram . = ALIGN(4);
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds index fbb442a..7143b10 100644 --- a/board/samsung/smdk6400/u-boot-nand.lds +++ b/board/samsung/smdk6400/u-boot-nand.lds @@ -50,7 +50,7 @@ SECTIONS
. = align(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = align(4); diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds index ae3afa1..cfab80a 100644 --- a/board/sandpoint/u-boot.lds +++ b/board/sandpoint/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds index 6cf7a01..d3b9c34 100644 --- a/board/sixnet/u-boot.lds +++ b/board/sixnet/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds index f57f8a0..7b9d562 100644 --- a/board/snmc/qs850/u-boot.lds +++ b/board/snmc/qs850/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds index 18f962c..9fba835 100644 --- a/board/snmc/qs860t/u-boot.lds +++ b/board/snmc/qs860t/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds index 18f962c..9fba835 100644 --- a/board/spc1920/u-boot.lds +++ b/board/spc1920/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds index f69e39d..7016bea 100644 --- a/board/spd8xx/u-boot.lds +++ b/board/spd8xx/u-boot.lds @@ -78,7 +78,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds index cdc1fda..bd4822e 100644 --- a/board/stx/stxxtc/u-boot.lds +++ b/board/stx/stxxtc/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds index 1635875..0024483 100644 --- a/board/svm_sc8xx/u-boot.lds +++ b/board/svm_sc8xx/u-boot.lds @@ -86,7 +86,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds index e1e1ccd..530a999 100644 --- a/board/tqc/tqm8xx/u-boot.lds +++ b/board/tqc/tqm8xx/u-boot.lds @@ -82,7 +82,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds index fd2d72e..191e58d 100644 --- a/board/v37/u-boot.lds +++ b/board/v37/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds index 20161a4..57589cd 100644 --- a/board/vpac270/u-boot-spl.lds +++ b/board/vpac270/u-boot-spl.lds @@ -58,7 +58,7 @@ SECTIONS }
.u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/common/cmd_help.c b/common/cmd_help.c index f832a96..d9bdc4d 100644 --- a/common/cmd_help.c +++ b/common/cmd_help.c @@ -41,7 +41,7 @@ U_BOOT_CMD( );
/* This does not use the U_BOOT_CMD macro as ? can't be used in symbol names */ -ll_entry_declare(cmd_tbl_t, question_mark, cmd, cmd) = { +ll_entry_declare(cmd_tbl_t, question_mark, 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 50c8429..6ac59e4 100644 --- a/common/command.c +++ b/common/command.c @@ -507,6 +507,7 @@ static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int result;
result = (cmdtp->cmd)(cmdtp, flag, argc, argv); + if (result) debug("Command failed, result=%d", result); return result; diff --git a/config.mk b/config.mk index b7cd481..bb5c69a 100644 --- a/config.mk +++ b/config.mk @@ -23,8 +23,6 @@
#########################################################################
-include $(TOPDIR)/helper.mk - ifeq ($(CURDIR),$(SRCTREE)) dir := else diff --git a/helper.mk b/helper.mk deleted file mode 100644 index 79a1da0..0000000 --- a/helper.mk +++ /dev/null @@ -1,64 +0,0 @@ -# -# 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/include/command.h b/include/command.h index 476e7cf..d412c87 100644 --- a/include/command.h +++ b/include/command.h @@ -173,7 +173,7 @@ int cmd_process(int flag, int argc, char * const argv[], _usage, _help, NULL)
#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \ - ll_entry_declare(cmd_tbl_t, _name, cmd, cmd) = \ + ll_entry_declare(cmd_tbl_t, _name, cmd) = \ U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \ _usage, _help, _comp);
diff --git a/include/env_callback.h b/include/env_callback.h index c583120..afdee28 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -76,7 +76,7 @@ void env_callback_init(ENTRY *var_entry); } #else #define U_BOOT_ENV_CALLBACK(name, callback) \ - ll_entry_declare(struct env_clbk_tbl, name, env_clbk, env_clbk) = \ + ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \ {#name, callback} #endif
diff --git a/include/linker_lists.h b/include/linker_lists.h index 0b405d7..b88ac82 100644 --- a/include/linker_lists.h +++ b/include/linker_lists.h @@ -13,6 +13,95 @@ * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. */ + +/** + * There is no use in including this from ASM files, but that happens + * anyway, e.g. PPC kgdb.S includes command.h which incluse us. + * So just don't define anything when included from ASM. + */ + +#if !defined(__ASSEMBLY__) + +/** + * Linker lists are constructed by grouping together linker input + * sections, each containning one entry of the list. Each input section + * contains a constant initialized variable which holds the entry's + * content. Linker list input sections are constructed from the list + * and entry names, plus a prefix which allows grouping all lists + * together. Assuming _list and _entry are the list and entry names, + * then the corresponding input section name is + * + * _u_boot_list + _2_ + @_list + _2_ + @_entry + * + * and the C variable name is + * + * .u_boot_list_ + 2_ + @_list + _2_ + @_entry + * + * This ensures uniqueness for both input section and C variable name. + * + * Note that the names differ only in the prefix character, "." for the + * setion and "_" for the variable, so that the linker cannot confuse + * section and symbol names. From now on, both names will be referred + * to as + * + * %u_boot_list_ + 2_ + @_list + _2_ + @_entry + * + * Entry variables need never be referred to directly. + * + * The naming scheme for input sections allows grouping all linker lists + * into a single linker output section and grouping all entries for a + * single list. + * + * Note the two '_2_' constant components in the names: they are needed + * to be able to put start and end symbols around a list, by mapping + * them to sections names with components "1" (before) and "3" (after). + * Start and end symbols for a list can generally be defined as + * + * %u_boot_list_2_ + @_list + _1_... + * %u_boot_list_2_ + @_list + _3_... + * + * Start and end symbols for the whole of the linker lists area can be + * defined as + * + * %u_boot_list_1_... + * %u_boot_list_3_... + * + * Here is an example of the sorted sections which result from a list + * "array" made up of three entries : "first", "second" and "third", + * iterated at least once. + * + * .u_boot_list_2_array_1 + * .u_boot_list_2_array_2_first + * .u_boot_list_2_array_2_second + * .u_boot_list_2_array_2_third + * .u_boot_list_2_array_3 + * + * If lists must be divided into sublists (e.g. for iterating only on + * part of a list), one can simply use the list a name of the form + * 'outer_2_inner', where 'outer' is the global list name and 'inner' + * is the sub-list name. Iterators for the whole list should use the + * global list name ("outer"); iterators for only a sub-list should use + * the full sub-list name ("outer_2_inner"). + * + * Here is an example of the sections generated from a global list + * named "drivers", two sub-lists named "i2c" and "pci", and iterators + * defined for the whole list and each sub-list: + * + * %u_boot_list_2_drivers_1 + * %u_boot_list_2_drivers_2_i2c_1 + * %u_boot_list_2_drivers_2_i2c_2_first + * %u_boot_list_2_drivers_2_i2c_2_first + * %u_boot_list_2_drivers_2_i2c_2_second + * %u_boot_list_2_drivers_2_i2c_2_third + * %u_boot_list_2_drivers_2_i2c_3 + * %u_boot_list_2_drivers_2_pci_1 + * %u_boot_list_2_drivers_2_pci_2_first + * %u_boot_list_2_drivers_2_pci_2_second + * %u_boot_list_2_drivers_2_pci_2_third + * %u_boot_list_2_drivers_2_pci_3 + * %u_boot_list_2_drivers_3 + */ + #ifndef __LINKER_LISTS_H__ #define __LINKER_LISTS_H__
@@ -20,43 +109,28 @@ * 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) + * @_list: name of the list. Should contain only characters allowed + * in a C variable name! * * 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. + * A variable declared using this macro must be compile-time initialized. * * 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. + * 1) The _type must not contain the "static" keyword, otherwise the + * entry is generated and can be iterated but is listed in the map + * file and cannot be retrieved by name. * - * 3) In case a section is declared that contains some array elements AND a + * 2) 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 + * AND an 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. * @@ -66,39 +140,68 @@ * .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))) +#define ll_entry_declare(_type, _name, _list) \ + _type _u_boot_list_2_##_list##_2_##_name __aligned(4) \ + __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_2_"#_name))) + +/** + * We need a zero-size type for iterator symbols, and the compiler does + * not allow defining objects of C type 'void'. Therefore we go for the + * next best thing: an empty struct. + */
/** * 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) + * @_list: Name of the list in which this entry is placed * * 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. + * specified by _list argument. + * + * Since this macro defines an array start symbol, its leftmost index + * must be 2 and its rightmost index must be 1. * * 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; \ - }) +#define ll_entry_start(_type, _list) \ +({ \ + static struct {} start __aligned(4) __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_1"))); \ + (_type *)&start; \ +})
/** - * ll_entry_count() - Return the number of elements in linker-generated array + * ll_entry_end() - Point after last entry of linker-generated array * @_type: Data type of the entry - * @_section_u: Subsection of u_boot_list in which this entry is placed + * @_list: Name of the list in which this entry is placed * (with underscores instead of dots) * + * This function returns (_type *) pointer after the very last entry of + * a linker-generated array placed into subsection of .u_boot_list + * section specified by _list argument. + * + * Since this macro defines an array end symbol, its leftmost index + * must be 2 and its rightmost index must be 3. + * + * Example: + * struct my_sub_cmd *msc = ll_entry_end(struct my_sub_cmd, cmd_sub); + */ +#define ll_entry_end(_type, _list) \ +({ \ + static struct {} end __aligned(4) __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_3"))); \ + (_type *)&end; \ +}) +/** + * ll_entry_count() - Return the number of elements in linker-generated array + * @_type: Data type of the entry + * @_list: Name of the list of which the number of elements is computed + * * This function returns the number of elements of a linker-generated array - * placed into subsection of .u_boot_list section specified by _section_u + * placed into subsection of .u_boot_list section specified by _list * argument. The result is of an unsigned int type. * * Example: @@ -108,23 +211,19 @@ * 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) \ +#define ll_entry_count(_type, _list) \ ({ \ - 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; \ + _type *start = ll_entry_start(_type, _list); \ + _type *end = ll_entry_end(_type, _list); \ + unsigned int _ll_result = end - 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) + * @_list: Name of the list in which this entry is placed * * This function returns a pointer to a particular entry in LG-array * identified by the subsection of u_boot_list where the entry resides @@ -138,11 +237,54 @@ * ... * 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) \ +#define ll_entry_get(_type, _name, _list) \ ({ \ - extern _type _u_boot_list_##_section_u##_##_name; \ - _type *_ll_result = &_u_boot_list_##_section_u##_##_name;\ + extern _type _u_boot_list_2_##_list##_2_##_name; \ + _type *_ll_result = \ + &_u_boot_list_2_##_list##_2_##_name; \ _ll_result; \ })
+/** + * ll_start() - Point to first entry of first linker-generated array + * @_type: Data type of the entry + * + * This function returns (_type *) pointer to the very first entry of + * the very first linker-generated array. + * + * Since this macro defines the start of the linker-generated arrays, + * its leftmost index must be 1. + * + * Example: + * struct my_sub_cmd *msc = ll_start(struct my_sub_cmd); + */ +#define ll_start(_type) \ +({ \ + static struct {} start __aligned(4) __attribute__((unused, \ + section(".u_boot_list_1"))); \ + (_type *)&start; \ +}) + +/** + * ll_entry_end() - Point after last entry of last linker-generated array + * @_type: Data type of the entry + * + * This function returns (_type *) pointer after the very last entry of + * the very last linker-generated array. + * + * Since this macro defines the end of the linker-generated arrays, + * its leftmost index must be 3. + * + * Example: + * struct my_sub_cmd *msc = ll_end(struct my_sub_cmd); + */ +#define ll_end(_type) \ +({ \ + static struct {} end __aligned(4) __attribute__((unused, \ + section(".u_boot_list_3"))); \ + (_type *)&end; \ +}) + +#endif /* __ASSEMBLY__ */ + #endif /* __LINKER_LISTS_H__ */ diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile index 9c77826..d5a71c3 100644 --- a/nand_spl/board/freescale/mpc8536ds/Makefile +++ b/nand_spl/board/freescale/mpc8536ds/Makefile @@ -62,11 +62,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile index 9c77826..d5a71c3 100644 --- a/nand_spl/board/freescale/mpc8569mds/Makefile +++ b/nand_spl/board/freescale/mpc8569mds/Makefile @@ -62,11 +62,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile index 9c77826..d5a71c3 100644 --- a/nand_spl/board/freescale/mpc8572ds/Makefile +++ b/nand_spl/board/freescale/mpc8572ds/Makefile @@ -62,11 +62,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile index fd0dfc1..59c46b6 100644 --- a/nand_spl/board/freescale/mx31pdk/Makefile +++ b/nand_spl/board/freescale/mx31pdk/Makefile @@ -38,11 +38,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds -Map $(nandobj)u-boot-spl.map \ -o $@
-# 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) +$(nandobj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds index a26110f..0656176 100644 --- a/nand_spl/board/freescale/mx31pdk/u-boot.lds +++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile index c3495ec..ca9be7c 100644 --- a/nand_spl/board/freescale/p1010rdb/Makefile +++ b/nand_spl/board/freescale/p1010rdb/Makefile @@ -62,11 +62,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile index 9b2c0d7..a873c76 100644 --- a/nand_spl/board/freescale/p1023rds/Makefile +++ b/nand_spl/board/freescale/p1023rds/Makefile @@ -57,11 +57,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile index 9c77826..d5a71c3 100644 --- a/nand_spl/board/freescale/p1_p2_rdb/Makefile +++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile @@ -62,11 +62,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile index 82489d2..7b1e62e 100644 --- a/nand_spl/board/karo/tx25/Makefile +++ b/nand_spl/board/karo/tx25/Makefile @@ -59,11 +59,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds -Map $(nandobj)u-boot-spl.map \ -o $@
-# 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) +$(nandobj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds index ee36131..ea84d64 100644 --- a/nand_spl/board/karo/tx25/u-boot.lds +++ b/nand_spl/board/karo/tx25/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds index 2ed6466..66b412e 100644 --- a/nand_spl/board/samsung/smdk6400/u-boot.lds +++ b/nand_spl/board/samsung/smdk6400/u-boot.lds @@ -53,7 +53,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/spl/Makefile b/spl/Makefile index 6dbb105..d496811 100644 --- a/spl/Makefile +++ b/spl/Makefile @@ -178,11 +178,7 @@ $(START): depend $(LIBS): depend $(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
-# 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 +$(obj)u-boot-spl.lds: $(LDSCRIPT) depend $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(obj). -ansi -D__ASSEMBLY__ -P - < $< > $@
depend: $(obj).depend

Hi Albert,
2013/2/2 Albert ARIBAUD albert.u.boot@aribaud.net:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
for the MIPS part: Tested-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
BTW: if we use
.u_boot_list : { KEEP(*(SORT(.u_boot_list*))) }
we can get rid of the undef magic in the final link of u-boot
--- a/Makefile +++ b/Makefile @@ -559,10 +559,8 @@ GEN_UBOOT = \ $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot else GEN_UBOOT = \ - 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_LST $(__OBJS) \ + $(__OBJS) \ --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \ -Map u-boot.map -o u-boot endif

Dear Daniel Schwierzeck,
Hi Albert,
2013/2/2 Albert ARIBAUD albert.u.boot@aribaud.net:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
for the MIPS part: Tested-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
BTW: if we use
.u_boot_list : { KEEP(*(SORT(.u_boot_list*))) }
we can get rid of the undef magic in the final link of u-boot
UUuuuu, that's amazing. We're shifting from one kind of black magic onto another voodoo. But certainly, this KEEP() is much cleaner, I like it :)
Best regards, Marek Vasut

Hello Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Just tested this patch and it solves my "ll_entry_* work only after relocation" problem posted here:
http://lists.denx.de/pipermail/u-boot/2013-February/145711.html
Will test it deeper on monday, thanks!
bye, Heiko

Hello Albert,
On 02/02/2013 06:02 PM, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
Command completion currently traps with U-Boot master on a twister board, as mentioned in [1]. Depending on random, valid changes in the code, the name pointers in the command list can become corrupted. Although this patch shouldn't effect code running after relocation, it does prevent the incorrect pointers and solves mentioned problem. The exact reason is unknown, but it might be that code running before relocation corrupts the data used after relocation.
At least this patch fixes the behaviour for the twister and prevents that I get completely insane, thanks!
For the twister: Tested-by: Jeroen Hofstee jhofstee@myspectrum.nl
Thanks, Jeroen
[1] http://lists.denx.de/pipermail/u-boot/2013-February/145709.html

Hello Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
for arm926ejs
Tested-by: Heiko Schocher hs@denx.de
Just one minor comment ...
[...]
diff --git a/common/command.c b/common/command.c index 50c8429..6ac59e4 100644 --- a/common/command.c +++ b/common/command.c @@ -507,6 +507,7 @@ static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int result;
result = (cmdtp->cmd)(cmdtp, flag, argc, argv);
remove this Codingstyle change please.
bye, Heiko

Hi Heiko,
On Mon, 04 Feb 2013 09:21:02 +0100, Heiko Schocher hs@denx.de wrote:
Hello Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
for arm926ejs
Tested-by: Heiko Schocher hs@denx.de
Thanks!
Just one minor comment ...
[...]
diff --git a/common/command.c b/common/command.c index 50c8429..6ac59e4 100644 --- a/common/command.c +++ b/common/command.c @@ -507,6 +507,7 @@ static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int result;
result = (cmdtp->cmd)(cmdtp, flag, argc, argv);
remove this Codingstyle change please.
Sorry, should have triple-checked that -- this single blank line change in common/command.c stems from ad hoc code I'd added here for test purposes when the patch was only proof-of-concept. Will fix in V2.
bye, Heiko
Amicalement,

Hi Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
Tested on avr32. The patch seems to work (basic shell testing), however it generates an aliasing warning:
---8<--- abiessmann@azuregos % PATH=$AVR32_PATH:$PATH BUILD_DIR=/tmp/build_avr32 MAKEALL_LOGDIR=/tmp/LOG BUILD_NCPUS=4 BUILD_NBUILDS=4 ./MAKEALL atstk1002 Configuring for atstk1002 board... text data bss dec hex filename 116315 8972 211900 337187 52523 /tmp/build_avr32/atstk1002/u-boot env_callback.c: In function 'find_env_callback': env_callback.c:47: warning: dereferencing pointer 'clbkp' does break strict-aliasing rules env_callback.c:44: note: initialized from here env_callback.c:46: note: initialized from here --->8---
I think it has something to do with tha fact that you re-cast the anonymous struct 'start' here:
---8<--- #define ll_entry_start(_type, _list) ({ static struct {} start __aligned(4) __attribute__((unused, section(".u_boot_list_2_"#_list"_1"))); (_type *)&start; }) --->8---
I think other gcc-4.4 users will see the same error. Currently I have no time to dive into this.
Best regards
Andreas Bießmann

Hi Andreas,
On Mon, 04 Feb 2013 13:41:09 +0100, "Andreas Bießmann" andreas.devel@googlemail.com wrote:
Hi Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
Tested on avr32. The patch seems to work (basic shell testing), however it generates an aliasing warning:
---8<--- abiessmann@azuregos % PATH=$AVR32_PATH:$PATH BUILD_DIR=/tmp/build_avr32 MAKEALL_LOGDIR=/tmp/LOG BUILD_NCPUS=4 BUILD_NBUILDS=4 ./MAKEALL atstk1002 Configuring for atstk1002 board... text data bss dec hex filename 116315 8972 211900 337187 52523 /tmp/build_avr32/atstk1002/u-boot env_callback.c: In function 'find_env_callback': env_callback.c:47: warning: dereferencing pointer 'clbkp' does break strict-aliasing rules env_callback.c:44: note: initialized from here env_callback.c:46: note: initialized from here --->8---
I think it has something to do with tha fact that you re-cast the anonymous struct 'start' here:
---8<--- #define ll_entry_start(_type, _list) ({ static struct {} start __aligned(4) __attribute__((unused, section(".u_boot_list_2_"#_list"_1"))); (_type *)&start; }) --->8---
Thanks Andreas for bringing this to my attention -- I'm surprised that there's only one such warning, though, as there are may such casts. I'll get my hands on a 4.4 compiler and try to find a way to cleanly avoid the warning.
I think other gcc-4.4 users will see the same error. Currently I have no time to dive into this.
Don't bother. I'll do the diving. :)
Best regards
Andreas Bießmann
Amicalement,

Hi Andreas,
On Mon, 04 Feb 2013 13:41:09 +0100, "Andreas Bießmann" andreas.devel@googlemail.com wrote:
Hi Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net
Tested on avr32. The patch seems to work (basic shell testing), however it generates an aliasing warning:
---8<--- abiessmann@azuregos % PATH=$AVR32_PATH:$PATH BUILD_DIR=/tmp/build_avr32 MAKEALL_LOGDIR=/tmp/LOG BUILD_NCPUS=4 BUILD_NBUILDS=4 ./MAKEALL atstk1002 Configuring for atstk1002 board... text data bss dec hex filename 116315 8972 211900 337187 52523 /tmp/build_avr32/atstk1002/u-boot env_callback.c: In function 'find_env_callback': env_callback.c:47: warning: dereferencing pointer 'clbkp' does break strict-aliasing rules env_callback.c:44: note: initialized from here env_callback.c:46: note: initialized from here --->8---
I think it has something to do with tha fact that you re-cast the anonymous struct 'start' here:
---8<--- #define ll_entry_start(_type, _list) ({ static struct {} start __aligned(4) __attribute__((unused, section(".u_boot_list_2_"#_list"_1"))); (_type *)&start; }) --->8---
I think other gcc-4.4 users will see the same error. Currently I have no time to dive into this.
I have dug into it and found a way to avoid GCC 4.4 or below to warn about aliasing, by replacing 'struct {}' with 'char[0]' as the 0-byte-size type.
I still have some warnings through, regarding some regions not being declared:
avr32-ld:built in linker script:15: warning: memory region `FLASH' not declared avr32-ld:built in linker script:69: warning: memory region `CPUSRAM' not declared
It appears 'normal' in that without my patch, the same error occurs; but I'd prefer that you confirm whether you have the same warnings on your side.
Best regards
Andreas Bießmann
Amicalement,

Hi Albert,
On 02/16/2013 07:20 PM, Albert ARIBAUD wrote:
Hi Andreas,
On Mon, 04 Feb 2013 13:41:09 +0100, "Andreas Bießmann" andreas.devel@googlemail.com wrote:
Hi Albert,
On 02.02.2013 18:02, Albert ARIBAUD wrote:
<snip strict aliasing error on gcc-4.4>
I have dug into it and found a way to avoid GCC 4.4 or below to warn about aliasing, by replacing 'struct {}' with 'char[0]' as the 0-byte-size type.
I still have some warnings through, regarding some regions not being declared:
avr32-ld:built in linker script:15: warning: memory region `FLASH' not declared avr32-ld:built in linker script:69: warning: memory region `CPUSRAM' not declared
I assume you use Mike Frysingers precompiled avr32 toolchain. I know about that warnings and beware, these toolchain produce defective binaries! The u-boot does not relocate itself properly with these newlib toolchains (also the atmel provided one).
It appears 'normal' in that without my patch, the same error occurs; but I'd prefer that you confirm whether you have the same warnings on your side.
It's ok so far, the arm-linux toolchain I have do not produce these warnings. Kan you provide the patch so I will do a runtime test.
Best regards
Andreas Bießmann

On 02/18/2013 11:39 AM, Andreas Bießmann wrote:
Hi Albert,
On 02/16/2013 07:20 PM, Albert ARIBAUD wrote:
<snip>
It's ok so far, the arm-linux toolchain I have do not produce these
I mean avr32-linux ... damn weekend ...

Hi Andreas,
On Mon, 18 Feb 2013 11:42:07 +0100, "Andreas Bießmann" andreas.devel@googlemail.com wrote:
On 02/18/2013 11:39 AM, Andreas Bießmann wrote:
Hi Albert,
On 02/16/2013 07:20 PM, Albert ARIBAUD wrote:
<snip>
It's ok so far, the arm-linux toolchain I have do not produce these
I mean avr32-linux ... damn weekend ...
Thanks Andreas for the feedback. I am currently testing V2 locally and will send it out in a few hours hopefully.
Amicalement,

R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2: - fixed missing .sram memory mapping in OMAP lds - removed useless linker script sections in SPL lds files - made BSS start and end compiler-generated - moved SPL linker script changes to their own commit - added KEEP() to all linker files - removed spurious change to common/command.c - changed empty type from struct {} to char[0] - dropped patch to removed board/micronas/vct/u-boot.lds - removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
.gitignore | 1 - Makefile | 13 +- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 2 +- arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 6 - arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 6 - arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 67 ++++++ arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 4 - arch/arm/cpu/ixp/u-boot.lds | 14 +- arch/arm/cpu/u-boot-spl.lds | 93 ++++++++ arch/arm/cpu/u-boot.lds | 14 +- arch/arm/lib/Makefile | 1 + arch/arm/lib/bss.c | 39 ++++ arch/avr32/cpu/u-boot.lds | 2 +- arch/blackfin/cpu/u-boot.lds | 2 +- arch/microblaze/cpu/u-boot.lds | 2 +- arch/mips/cpu/u-boot.lds | 2 +- arch/nds32/cpu/n1213/u-boot.lds | 2 +- arch/nios2/cpu/u-boot.lds | 2 +- arch/powerpc/cpu/74xx_7xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc512x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8220/u-boot.lds | 2 +- arch/powerpc/cpu/mpc824x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8260/u-boot.lds | 2 +- arch/powerpc/cpu/mpc83xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc86xx/u-boot.lds | 2 +- arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 +- arch/sandbox/cpu/u-boot.lds | 2 +- arch/sh/cpu/sh2/u-boot.lds | 2 +- arch/sh/cpu/sh3/u-boot.lds | 2 +- arch/sh/cpu/sh4/u-boot.lds | 2 +- arch/x86/cpu/u-boot.lds | 2 +- board/BuS/eb_cpu5282/u-boot.lds | 2 +- board/LEOX/elpt860/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds.debug | 2 +- board/RPXlite/u-boot.lds | 2 +- board/RPXlite/u-boot.lds.debug | 2 +- board/RPXlite_dw/u-boot.lds | 2 +- board/RPXlite_dw/u-boot.lds.debug | 2 +- board/RRvision/u-boot.lds | 2 +- board/actux1/u-boot.lds | 24 ++- board/actux2/u-boot.lds | 24 ++- board/actux3/u-boot.lds | 18 +- board/adder/u-boot.lds | 2 +- board/ait/cam_enc_4xx/u-boot-spl.lds | 4 - board/altera/nios2-generic/u-boot.lds | 2 +- board/amcc/acadia/u-boot-nand.lds | 2 +- board/amcc/bamboo/u-boot-nand.lds | 2 +- board/amcc/canyonlands/u-boot-nand.lds | 2 +- board/amcc/kilauea/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-ram.lds | 2 +- board/astro/mcf5373l/u-boot.lds | 2 +- board/cobra5272/u-boot.lds | 2 +- board/cogent/u-boot.lds | 2 +- board/cogent/u-boot.lds.debug | 2 +- board/cray/L1/u-boot.lds.debug | 2 +- board/dave/PPChameleonEVB/u-boot.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 5 - board/davinci/da8xxevm/u-boot-spl-hawk.lds | 5 - board/dvlhost/u-boot.lds | 18 +- board/eltec/mhpc/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds.debug | 2 +- board/emk/top860/u-boot.lds | 2 +- board/ep88x/u-boot.lds | 2 +- board/esd/dasa_sim/u-boot.lds | 2 +- board/esd/pmc440/u-boot-nand.lds | 2 +- board/esd/tasreg/u-boot.lds | 2 +- board/esteem192e/u-boot.lds | 2 +- board/evb64260/u-boot.lds | 2 +- board/fads/u-boot.lds | 2 +- board/flagadm/u-boot.lds | 2 +- board/flagadm/u-boot.lds.debug | 2 +- board/freescale/m5208evbe/u-boot.lds | 2 +- board/freescale/m52277evb/u-boot.lds | 2 +- board/freescale/m5235evb/u-boot.lds | 2 +- board/freescale/m5249evb/u-boot.lds | 2 +- board/freescale/m5253demo/u-boot.lds | 2 +- board/freescale/m5253evbe/u-boot.lds | 2 +- board/freescale/m5271evb/u-boot.lds | 2 +- board/freescale/m5272c3/u-boot.lds | 2 +- board/freescale/m5275evb/u-boot.lds | 2 +- board/freescale/m5282evb/u-boot.lds | 2 +- board/freescale/m53017evb/u-boot.lds | 2 +- board/freescale/m5329evb/u-boot.lds | 2 +- board/freescale/m5373evb/u-boot.lds | 2 +- board/freescale/m54418twr/u-boot.lds | 2 +- board/freescale/m54451evb/u-boot.lds | 2 +- board/freescale/m54455evb/u-boot.lds | 2 +- board/freescale/m547xevb/u-boot.lds | 2 +- board/freescale/m548xevb/u-boot.lds | 2 +- board/freescale/mx31ads/u-boot.lds | 16 +- board/gaisler/gr_cpci_ax2000/u-boot.lds | 2 +- board/gaisler/gr_ep2s60/u-boot.lds | 2 +- board/gaisler/gr_xc3s_1500/u-boot.lds | 2 +- board/gaisler/grsim/u-boot.lds | 2 +- board/gaisler/grsim_leon2/u-boot.lds | 2 +- board/gen860t/u-boot-flashenv.lds | 2 +- board/gen860t/u-boot.lds | 2 +- board/genietv/u-boot.lds | 2 +- board/genietv/u-boot.lds.debug | 2 +- board/hermes/u-boot.lds | 2 +- board/hermes/u-boot.lds.debug | 2 +- board/hymod/u-boot.lds | 2 +- board/hymod/u-boot.lds.debug | 2 +- board/icu862/u-boot.lds | 2 +- board/icu862/u-boot.lds.debug | 2 +- board/idmr/u-boot.lds | 2 +- board/ip860/u-boot.lds | 2 +- board/ip860/u-boot.lds.debug | 2 +- board/ivm/u-boot.lds | 2 +- board/ivm/u-boot.lds.debug | 2 +- board/korat/u-boot-F7FC.lds | 2 +- board/kup/kup4k/u-boot.lds | 2 +- board/kup/kup4k/u-boot.lds.debug | 2 +- board/kup/kup4x/u-boot.lds | 2 +- board/kup/kup4x/u-boot.lds.debug | 2 +- board/lwmon/u-boot.lds | 2 +- board/lwmon/u-boot.lds.debug | 2 +- board/manroland/uc100/u-boot.lds | 2 +- board/matrix_vision/mvsmr/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds.debug | 2 +- board/mousse/u-boot.lds | 2 +- board/mpl/pip405/u-boot.lds.debug | 2 +- board/mvblue/u-boot.lds | 2 +- board/netphone/u-boot.lds | 2 +- board/netphone/u-boot.lds.debug | 2 +- board/netta/u-boot.lds | 2 +- board/netta/u-boot.lds.debug | 2 +- board/netta2/u-boot.lds | 2 +- board/netta2/u-boot.lds.debug | 2 +- board/netvia/u-boot.lds | 2 +- board/netvia/u-boot.lds.debug | 2 +- board/nx823/u-boot.lds | 2 +- board/nx823/u-boot.lds.debug | 2 +- board/openrisc/openrisc-generic/u-boot.lds | 2 +- board/quantum/u-boot.lds | 2 +- board/r360mpi/u-boot.lds | 2 +- board/rbc823/u-boot.lds | 2 +- board/renesas/sh7752evb/u-boot.lds | 2 +- board/renesas/sh7757lcr/u-boot.lds | 2 +- board/rsdproto/u-boot.lds | 2 +- board/samsung/smdk5250/smdk5250-uboot-spl.lds | 2 +- board/samsung/smdk6400/u-boot-nand.lds | 2 +- board/sandburst/karef/u-boot.lds.debug | 2 +- board/sandburst/metrobox/u-boot.lds.debug | 2 +- board/sandpoint/u-boot.lds | 2 +- board/sixnet/u-boot.lds | 2 +- board/snmc/qs850/u-boot.lds | 2 +- board/snmc/qs860t/u-boot.lds | 2 +- board/spc1920/u-boot.lds | 2 +- board/spd8xx/u-boot.lds | 2 +- board/spd8xx/u-boot.lds.debug | 2 +- board/stx/stxxtc/u-boot.lds | 2 +- board/stx/stxxtc/u-boot.lds.debug | 2 +- board/svm_sc8xx/u-boot.lds | 2 +- board/tqc/tqm8xx/u-boot.lds | 2 +- board/v37/u-boot.lds | 2 +- board/vpac270/u-boot-spl.lds | 4 - board/w7o/u-boot.lds.debug | 2 +- board/xes/xpedite1000/u-boot.lds.debug | 2 +- common/cmd_help.c | 2 +- config.mk | 2 - doc/README.commands | 18 +- helper.mk | 64 ------ include/command.h | 2 +- include/configs/am335x_evm.h | 2 +- include/configs/pcm051.h | 2 +- include/env_callback.h | 2 +- include/linker_lists.h | 252 +++++++++++++++++----- nand_spl/board/freescale/mpc8536ds/Makefile | 7 +- nand_spl/board/freescale/mpc8569mds/Makefile | 7 +- nand_spl/board/freescale/mpc8572ds/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/u-boot.lds | 2 +- nand_spl/board/freescale/p1010rdb/Makefile | 7 +- nand_spl/board/freescale/p1023rds/Makefile | 7 +- nand_spl/board/freescale/p1_p2_rdb/Makefile | 7 +- nand_spl/board/karo/tx25/Makefile | 7 +- nand_spl/board/karo/tx25/u-boot.lds | 2 +- nand_spl/board/samsung/smdk6400/u-boot.lds | 2 +- spl/.gitignore | 1 - spl/Makefile | 8 +- 190 files changed, 665 insertions(+), 424 deletions(-) create mode 100644 arch/arm/cpu/armv7/am33xx/u-boot-spl.lds create mode 100644 arch/arm/cpu/u-boot-spl.lds create mode 100644 arch/arm/lib/bss.c delete mode 100644 helper.mk

Output section .u_boot_list was left unmapped in u-boot-spl.lds for omap-common, causing the location counter to roll back to bteween .rodata and .data, making __image_copy_end and _end symbols wrong.
Mapping output section .u_boot_list to memory .sram fixes these symbols' mapping.
This modifies the SPL binary but has no functional impact, as __image_copy_end and _end are never used in SPLs and u_boot_list is empty for all 29 boards affected (omap4_sdp4430 eco5pk igep0030 am335x_evm_uart3 omap3_beagle am3517_crane igep0032 mt_ventoux pcm051 am3517_evm omap3_evm_quick_mmc am335x_evm_uart2 am335x_evm_spiboot am335x_evm_uart1 omap3_evm igep0030_nand omap3_overo igep0020 am335x_evm omap4_panda omap5_evm am335x_evm_uart4 devkit8000 tricorder mcx twister omap3_evm_quick_nand am335x_evm_uart5 igep0020_nand).
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net --- Changes in v2: - fixed missing .sram memory mapping in OMAP lds
arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
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 9979c30..6755628 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -50,7 +50,7 @@ SECTIONS
.u_boot_list : { #include <u-boot.lst> - } + } > .sram
. = ALIGN(4); __image_copy_end = .;

Many SPL linker scripts needlessly include linker lists (aka LGAs). Remove them whenever possible; keep it only in the seven am335x_evm variants (am335x_evm, am335x_evm_uart[1-5], am335x_evm_spiboot), where there is actual content in output section .u_boot_list.
This commit keeps all u-boot.bin and u-boot-spl.bin in ARM targets byte-identical.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net --- Changes in v2: - removed useless linker script sections in SPL lds files
arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 6 -- arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 6 -- arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 67 +++++++++++++++++ arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 4 - arch/arm/cpu/u-boot-spl.lds | 93 ++++++++++++++++++++++++ board/ait/cam_enc_4xx/u-boot-spl.lds | 4 - board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 5 -- board/davinci/da8xxevm/u-boot-spl-hawk.lds | 5 -- board/vpac270/u-boot-spl.lds | 4 - include/configs/am335x_evm.h | 2 +- include/configs/pcm051.h | 2 +- spl/Makefile | 8 +- 12 files changed, 164 insertions(+), 42 deletions(-) create mode 100644 arch/arm/cpu/armv7/am33xx/u-boot-spl.lds create mode 100644 arch/arm/cpu/u-boot-spl.lds
diff --git a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds index 6dc681a..0f3222c 100644 --- a/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds @@ -51,12 +51,6 @@ SECTIONS
. = ALIGN(4);
- .u_boot_list : { - #include <u-boot.lst> - } - - . = ALIGN(4); - .rel.dyn : { __rel_dyn_start = .; *(.rel*) diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds index f3bd5e7..0af3e0a 100644 --- a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds @@ -51,12 +51,6 @@ SECTIONS
. = ALIGN(4);
- .u_boot_list : { - #include <u-boot.lst> - } - - . = ALIGN(4); - .rel.dyn : { __rel_dyn_start = .; *(.rel*) diff --git a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds new file mode 100644 index 0000000..1c3deef --- /dev/null +++ b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds @@ -0,0 +1,67 @@ +/* + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, garyj@denx.de + * + * (C) Copyright 2010 + * Texas Instruments, <www.ti.com> + * Aneesh V aneesh@ti.com + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ + LENGTH = CONFIG_SPL_MAX_SIZE } +MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ + LENGTH = CONFIG_SPL_BSS_MAX_SIZE } + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + .text : + { + __start = .; + arch/arm/cpu/armv7/start.o (.text) + *(.text*) + } >.sram + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram + + . = ALIGN(4); + .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram + + .u_boot_list : { + #include <u-boot.lst> + } >.sram + + . = ALIGN(4); + __image_copy_end = .; + _end = .; + + .bss : + { + . = ALIGN(4); + __bss_start = .; + *(.bss*) + . = ALIGN(4); + __bss_end__ = .; + } >.sdram +} 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 6755628..88f4069 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -48,10 +48,6 @@ SECTIONS . = ALIGN(4); .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
- .u_boot_list : { - #include <u-boot.lst> - } > .sram - . = ALIGN(4); __image_copy_end = .; _end = .; diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds new file mode 100644 index 0000000..8321afb --- /dev/null +++ b/arch/arm/cpu/u-boot-spl.lds @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, garyj@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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + __image_copy_start = .; + CPUDIR/start.o (.text*) + *(.text*) + } + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(4); + .data : { + *(.data*) + } + + . = ALIGN(4); + + . = .; + + __image_copy_end = .; + + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + _end = .; + + /* + * Deprecated: this MMU section is used by pxa at present but + * should not be used by new boards/CPUs. + */ + . = ALIGN(4096); + .mmutable : { + *(.mmutable) + } + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss*) + . = ALIGN(4); + __bss_end__ = .; + } + + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } +} + +#if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE) +ASSERT(__bss_end__ < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big"); +#endif diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds index 656b2fb..52c986e 100644 --- a/board/ait/cam_enc_4xx/u-boot-spl.lds +++ b/board/ait/cam_enc_4xx/u-boot-spl.lds @@ -48,10 +48,6 @@ 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/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds index c5fd93c..dd5f266 100644 --- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds +++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds @@ -49,11 +49,6 @@ SECTIONS .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/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds index 86dc172..b3a41af 100644 --- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds +++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds @@ -58,11 +58,6 @@ SECTIONS }
. = ALIGN(4); - .u_boot_list : { - #include <u-boot.lst> - } - - . = ALIGN(4); __rel_dyn_start = .; __rel_dyn_end = .; __dynsym_start = .; diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds index 20161a4..1958c2f 100644 --- a/board/vpac270/u-boot-spl.lds +++ b/board/vpac270/u-boot-spl.lds @@ -57,10 +57,6 @@ SECTIONS *(.data) }
- .u_boot_list : { - #include <u-boot.lst> - } - . = ALIGN(4);
.rel.dyn : { diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 0dc2a50..78054b0 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -282,7 +282,7 @@ #define CONFIG_SPL_SPI_CS 0 #define CONFIG_SYS_SPI_U_BOOT_OFFS 0x80000 #define CONFIG_SPL_MUSB_NEW_SUPPORT -#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds" +#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/am33xx/u-boot-spl.lds"
#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_AM33XX_BCH diff --git a/include/configs/pcm051.h b/include/configs/pcm051.h index aa90ba9..63ab123 100644 --- a/include/configs/pcm051.h +++ b/include/configs/pcm051.h @@ -234,7 +234,7 @@ #define CONFIG_SPL_SPI_CS 0 #define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000 #define CONFIG_SYS_SPI_U_BOOT_SIZE 0x40000 -#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds" +#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/am33xx/u-boot-spl.lds"
/* * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM diff --git a/spl/Makefile b/spl/Makefile index aac6146..14095c8 100644 --- a/spl/Makefile +++ b/spl/Makefile @@ -119,7 +119,7 @@ ifeq ($(wildcard $(LDSCRIPT)),) LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-spl.lds endif ifeq ($(wildcard $(LDSCRIPT)),) - LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot.lds + LDSCRIPT := $(TOPDIR)/arch/$(ARCH)/cpu/u-boot-spl.lds endif ifeq ($(wildcard $(LDSCRIPT)),) $(error could not find linker script) @@ -177,11 +177,7 @@ $(START): depend $(LIBS): depend $(MAKE) -C $(SRCTREE)$(dir $(subst $(SPLTREE),,$@))
-# 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 +$(obj)u-boot-spl.lds: $(LDSCRIPT) depend $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(obj). -ansi -D__ASSEMBLY__ -P - < $< > $@
depend: $(obj).depend

Turn __bss_start and __bss_end__ from linker-generated to compiler-generated symbols, causing relocations for these symbols to change type, from R_ARM_ABS32 to R_ARM_RELATIVE.
This should have no functional impact, as it affects references to __bss_start and __bss_end__ only before relocation, and no such references are done.
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net --- Changes in v2: - made BSS start and end compiler-generated
arch/arm/cpu/ixp/u-boot.lds | 12 ++++++++--- arch/arm/cpu/u-boot.lds | 12 ++++++++--- arch/arm/lib/Makefile | 1 + arch/arm/lib/bss.c | 39 ++++++++++++++++++++++++++++++++++++ board/actux1/u-boot.lds | 22 +++++++++++++------- board/actux2/u-boot.lds | 22 +++++++++++++------- board/actux3/u-boot.lds | 16 +++++++++++---- board/dvlhost/u-boot.lds | 16 +++++++++++---- board/freescale/mx31ads/u-boot.lds | 14 +++++++++---- 9 files changed, 122 insertions(+), 32 deletions(-) create mode 100644 arch/arm/lib/bss.c
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds index 81d954f..bba91d5 100644 --- a/arch/arm/cpu/ixp/u-boot.lds +++ b/arch/arm/cpu/ixp/u-boot.lds @@ -67,11 +67,17 @@ SECTIONS
_end = .;
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - __bss_end__ = .; + ___bssend___ = .; + } + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); }
/DISCARD/ : { *(.dynstr*) } diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds index e6b202b..e1bc8e7 100644 --- a/arch/arm/cpu/u-boot.lds +++ b/arch/arm/cpu/u-boot.lds @@ -81,11 +81,17 @@ SECTIONS *(.mmutable) }
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - __bss_end__ = .; + ___bssend___ = .; + } + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); }
/DISCARD/ : { *(.dynstr*) } diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index 57111af..11c2674 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -39,6 +39,7 @@ GLCOBJS += div0.o SOBJS-y += crt0.o
ifndef CONFIG_SPL_BUILD +COBJS-y += bss.o COBJS-y += board.o COBJS-y += bootm.o COBJS-$(CONFIG_SYS_L2_PL310) += cache-pl310.o diff --git a/arch/arm/lib/bss.c b/arch/arm/lib/bss.c new file mode 100644 index 0000000..7c0b154 --- /dev/null +++ b/arch/arm/lib/bss.c @@ -0,0 +1,39 @@ +/* + * Copyright 2013 Albert ARIBAUD albert.u.boot@aribaud.net + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/** + * These two symbols are declared in a C file so that the linker + * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one + * it would use if the symbols were defined in the linker file. + * Using only R_ARM_RELATIVE relocation ensures that references to + * the symbols are correct after as well as before relocation. + * + * We need a 0-byte-size type for these symbols, and the compiler + * does not allow defining objects of C type 'void'. Using an empty + * struct is allowed by the compiler, but causes gcc versions 4.4 and + * below to complain about aliasing. Therefore we use the next best + * thing: zero-sized arrays, which are both 0-byte-size and exempt from + * aliasing warnings. + */ + +char __bss_start[0] __attribute__((used, section(".__bss_start"))); +char __bss_end__[0] __attribute__((used, section(".__bss_end__"))); diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds index c41eed0..572bcea 100644 --- a/board/actux1/u-boot.lds +++ b/board/actux1/u-boot.lds @@ -41,15 +41,15 @@ SECTIONS *(.text*) }
- . = ALIGN (4); + . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - . = ALIGN (4); + . = ALIGN(4); .data : { *(.data*) } - . = ALIGN (4); + . = ALIGN(4); .got : { *(.got) } @@ -72,13 +72,21 @@ SECTIONS *(.dynsym) }
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + _end = .; + + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - _end = .; + ___bssend___ = .; } - __bss_end__ =.; + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); + } + /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds index 8409984..6272a10 100644 --- a/board/actux2/u-boot.lds +++ b/board/actux2/u-boot.lds @@ -41,15 +41,15 @@ SECTIONS *(.text*) }
- . = ALIGN (4); + . = ALIGN(4); .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } - . = ALIGN (4); + . = ALIGN(4); .data : { *(.data*) } - . = ALIGN (4); + . = ALIGN(4); .got : { *(.got) } @@ -72,13 +72,21 @@ SECTIONS *(.dynsym) }
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + _end = .; + + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - _end = .; + ___bssend___ = .; } - __bss_end__ =.; + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); + } + /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds index a3bd02b..488e1e7 100644 --- a/board/actux3/u-boot.lds +++ b/board/actux3/u-boot.lds @@ -72,13 +72,21 @@ SECTIONS *(.dynsym) }
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + _end = .; + + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - _end = .; + ___bssend___ = .; } - __bss_end__ =.; + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); + } + /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds index 1bd1700..6dc26c8 100644 --- a/board/dvlhost/u-boot.lds +++ b/board/dvlhost/u-boot.lds @@ -72,13 +72,21 @@ SECTIONS *(.dynsym) }
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; + _end = .; + + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { *(.bss*) . = ALIGN(4); - _end = .; + ___bssend___ = .; } - __bss_end__ =.; + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); + } + /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index 5267729..12d7c12 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -80,11 +80,17 @@ SECTIONS
_end = .;
- .bss __rel_dyn_start (OVERLAY) : { - __bss_start = .; - *(.bss) + .bss_start __rel_dyn_start (OVERLAY) : { + KEEP(*(.__bss_start)); + } + + .bss __bss_start (OVERLAY) : { + *(.bss*) . = ALIGN(4); - __bss_end__ = .; + ___bssend___ = .; + } + .bss_end ___bssend___ (OVERLAY) : { + KEEP(*(.__bss_end__)); }
/DISCARD/ : { *(.bss*) }

Refactor linker-generated array code so that symbols which were previously linker-generated are now compiler- generated. This causes relocation records of type R_ARM_ABS32 to become R_ARM_RELATIVE, which makes code which uses LGA able to run before relocation as well as after.
Note: this affects more than ARM targets, as linker- lists span possibly all target architectures, notably PowerPC.
Conflicts: arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds arch/arm/cpu/armv7/omap-common/u-boot-spl.lds board/ait/cam_enc_4xx/u-boot-spl.lds board/davinci/da8xxevm/u-boot-spl-da850evm.lds board/davinci/da8xxevm/u-boot-spl-hawk.lds board/vpac270/u-boot-spl.lds
Signed-off-by: Albert ARIBAUD albert.u.boot@aribaud.net --- Changes in v2: - moved SPL linker script changes to their own commit - added KEEP() to all linker files - removed spurious change to common/command.c - changed empty type from struct {} to char[0] - dropped patch to removed board/micronas/vct/u-boot.lds - removed all references to u-boot.lst
.gitignore | 1 - Makefile | 13 +- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 2 +- arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 2 +- arch/arm/cpu/ixp/u-boot.lds | 2 +- arch/arm/cpu/u-boot.lds | 2 +- arch/avr32/cpu/u-boot.lds | 2 +- arch/blackfin/cpu/u-boot.lds | 2 +- arch/microblaze/cpu/u-boot.lds | 2 +- arch/mips/cpu/u-boot.lds | 2 +- arch/nds32/cpu/n1213/u-boot.lds | 2 +- arch/nios2/cpu/u-boot.lds | 2 +- arch/powerpc/cpu/74xx_7xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc512x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8220/u-boot.lds | 2 +- arch/powerpc/cpu/mpc824x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8260/u-boot.lds | 2 +- arch/powerpc/cpu/mpc83xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc86xx/u-boot.lds | 2 +- arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 +- arch/sandbox/cpu/u-boot.lds | 2 +- arch/sh/cpu/sh2/u-boot.lds | 2 +- arch/sh/cpu/sh3/u-boot.lds | 2 +- arch/sh/cpu/sh4/u-boot.lds | 2 +- arch/x86/cpu/u-boot.lds | 2 +- board/BuS/eb_cpu5282/u-boot.lds | 2 +- board/LEOX/elpt860/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds.debug | 2 +- board/RPXlite/u-boot.lds | 2 +- board/RPXlite/u-boot.lds.debug | 2 +- board/RPXlite_dw/u-boot.lds | 2 +- board/RPXlite_dw/u-boot.lds.debug | 2 +- board/RRvision/u-boot.lds | 2 +- board/actux1/u-boot.lds | 2 +- board/actux2/u-boot.lds | 2 +- board/actux3/u-boot.lds | 2 +- board/adder/u-boot.lds | 2 +- board/altera/nios2-generic/u-boot.lds | 2 +- board/amcc/acadia/u-boot-nand.lds | 2 +- board/amcc/bamboo/u-boot-nand.lds | 2 +- board/amcc/canyonlands/u-boot-nand.lds | 2 +- board/amcc/kilauea/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-ram.lds | 2 +- board/astro/mcf5373l/u-boot.lds | 2 +- board/cobra5272/u-boot.lds | 2 +- board/cogent/u-boot.lds | 2 +- board/cogent/u-boot.lds.debug | 2 +- board/cray/L1/u-boot.lds.debug | 2 +- board/dave/PPChameleonEVB/u-boot.lds | 2 +- board/dvlhost/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds.debug | 2 +- board/emk/top860/u-boot.lds | 2 +- board/ep88x/u-boot.lds | 2 +- board/esd/dasa_sim/u-boot.lds | 2 +- board/esd/pmc440/u-boot-nand.lds | 2 +- board/esd/tasreg/u-boot.lds | 2 +- board/esteem192e/u-boot.lds | 2 +- board/evb64260/u-boot.lds | 2 +- board/fads/u-boot.lds | 2 +- board/flagadm/u-boot.lds | 2 +- board/flagadm/u-boot.lds.debug | 2 +- board/freescale/m5208evbe/u-boot.lds | 2 +- board/freescale/m52277evb/u-boot.lds | 2 +- board/freescale/m5235evb/u-boot.lds | 2 +- board/freescale/m5249evb/u-boot.lds | 2 +- board/freescale/m5253demo/u-boot.lds | 2 +- board/freescale/m5253evbe/u-boot.lds | 2 +- board/freescale/m5271evb/u-boot.lds | 2 +- board/freescale/m5272c3/u-boot.lds | 2 +- board/freescale/m5275evb/u-boot.lds | 2 +- board/freescale/m5282evb/u-boot.lds | 2 +- board/freescale/m53017evb/u-boot.lds | 2 +- board/freescale/m5329evb/u-boot.lds | 2 +- board/freescale/m5373evb/u-boot.lds | 2 +- board/freescale/m54418twr/u-boot.lds | 2 +- board/freescale/m54451evb/u-boot.lds | 2 +- board/freescale/m54455evb/u-boot.lds | 2 +- board/freescale/m547xevb/u-boot.lds | 2 +- board/freescale/m548xevb/u-boot.lds | 2 +- board/freescale/mx31ads/u-boot.lds | 2 +- board/gaisler/gr_cpci_ax2000/u-boot.lds | 2 +- board/gaisler/gr_ep2s60/u-boot.lds | 2 +- board/gaisler/gr_xc3s_1500/u-boot.lds | 2 +- board/gaisler/grsim/u-boot.lds | 2 +- board/gaisler/grsim_leon2/u-boot.lds | 2 +- board/gen860t/u-boot-flashenv.lds | 2 +- board/gen860t/u-boot.lds | 2 +- board/genietv/u-boot.lds | 2 +- board/genietv/u-boot.lds.debug | 2 +- board/hermes/u-boot.lds | 2 +- board/hermes/u-boot.lds.debug | 2 +- board/hymod/u-boot.lds | 2 +- board/hymod/u-boot.lds.debug | 2 +- board/icu862/u-boot.lds | 2 +- board/icu862/u-boot.lds.debug | 2 +- board/idmr/u-boot.lds | 2 +- board/ip860/u-boot.lds | 2 +- board/ip860/u-boot.lds.debug | 2 +- board/ivm/u-boot.lds | 2 +- board/ivm/u-boot.lds.debug | 2 +- board/korat/u-boot-F7FC.lds | 2 +- board/kup/kup4k/u-boot.lds | 2 +- board/kup/kup4k/u-boot.lds.debug | 2 +- board/kup/kup4x/u-boot.lds | 2 +- board/kup/kup4x/u-boot.lds.debug | 2 +- board/lwmon/u-boot.lds | 2 +- board/lwmon/u-boot.lds.debug | 2 +- board/manroland/uc100/u-boot.lds | 2 +- board/matrix_vision/mvsmr/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds.debug | 2 +- board/mousse/u-boot.lds | 2 +- board/mpl/pip405/u-boot.lds.debug | 2 +- board/mvblue/u-boot.lds | 2 +- board/netphone/u-boot.lds | 2 +- board/netphone/u-boot.lds.debug | 2 +- board/netta/u-boot.lds | 2 +- board/netta/u-boot.lds.debug | 2 +- board/netta2/u-boot.lds | 2 +- board/netta2/u-boot.lds.debug | 2 +- board/netvia/u-boot.lds | 2 +- board/netvia/u-boot.lds.debug | 2 +- board/nx823/u-boot.lds | 2 +- board/nx823/u-boot.lds.debug | 2 +- board/openrisc/openrisc-generic/u-boot.lds | 2 +- board/quantum/u-boot.lds | 2 +- board/r360mpi/u-boot.lds | 2 +- board/rbc823/u-boot.lds | 2 +- board/renesas/sh7752evb/u-boot.lds | 2 +- board/renesas/sh7757lcr/u-boot.lds | 2 +- board/rsdproto/u-boot.lds | 2 +- board/samsung/smdk5250/smdk5250-uboot-spl.lds | 2 +- board/samsung/smdk6400/u-boot-nand.lds | 2 +- board/sandburst/karef/u-boot.lds.debug | 2 +- board/sandburst/metrobox/u-boot.lds.debug | 2 +- board/sandpoint/u-boot.lds | 2 +- board/sixnet/u-boot.lds | 2 +- board/snmc/qs850/u-boot.lds | 2 +- board/snmc/qs860t/u-boot.lds | 2 +- board/spc1920/u-boot.lds | 2 +- board/spd8xx/u-boot.lds | 2 +- board/spd8xx/u-boot.lds.debug | 2 +- board/stx/stxxtc/u-boot.lds | 2 +- board/stx/stxxtc/u-boot.lds.debug | 2 +- board/svm_sc8xx/u-boot.lds | 2 +- board/tqc/tqm8xx/u-boot.lds | 2 +- board/v37/u-boot.lds | 2 +- board/w7o/u-boot.lds.debug | 2 +- board/xes/xpedite1000/u-boot.lds.debug | 2 +- common/cmd_help.c | 2 +- config.mk | 2 - doc/README.commands | 18 +- helper.mk | 64 ------ include/command.h | 2 +- include/env_callback.h | 2 +- include/linker_lists.h | 252 +++++++++++++++++----- nand_spl/board/freescale/mpc8536ds/Makefile | 7 +- nand_spl/board/freescale/mpc8569mds/Makefile | 7 +- nand_spl/board/freescale/mpc8572ds/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/u-boot.lds | 2 +- nand_spl/board/freescale/p1010rdb/Makefile | 7 +- nand_spl/board/freescale/p1023rds/Makefile | 7 +- nand_spl/board/freescale/p1_p2_rdb/Makefile | 7 +- nand_spl/board/karo/tx25/Makefile | 7 +- nand_spl/board/karo/tx25/u-boot.lds | 2 +- nand_spl/board/samsung/smdk6400/u-boot.lds | 2 +- spl/.gitignore | 1 - 177 files changed, 380 insertions(+), 351 deletions(-) delete mode 100644 helper.mk
diff --git a/.gitignore b/.gitignore index e40eb7b..be09894 100644 --- a/.gitignore +++ b/.gitignore @@ -44,7 +44,6 @@ /u-boot.dtb /u-boot.sb /u-boot.geany -/include/u-boot.lst
# # Generated files diff --git a/Makefile b/Makefile index fc18dd4..ee6e609 100644 --- a/Makefile +++ b/Makefile @@ -555,10 +555,8 @@ GEN_UBOOT = \ $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot else GEN_UBOOT = \ - 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_LST $(__OBJS) \ + $(__OBJS) \ --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \ -Map u-boot.map -o u-boot endif @@ -591,11 +589,7 @@ $(SUBDIR_EXAMPLES): $(obj)u-boot $(LDSCRIPT): depend $(MAKE) -C $(dir $@) $(notdir $@)
-# 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)include/u-boot.lst, $(LIBBOARD) $(LIBS))) -$(obj)u-boot.lds: $(LDSCRIPT) $(obj)include/u-boot.lst +$(obj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$< >$@
nand_spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend @@ -831,7 +825,6 @@ clean: $(obj)board/matrix_vision/*/bootscript.img \ $(obj)board/voiceblue/eeprom \ $(obj)u-boot.lds \ - $(obj)include/u-boot.lst \ $(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs] \ $(obj)arch/blackfin/cpu/init.{lds,elf} @rm -f $(obj)include/bmp_logo.h @@ -869,7 +862,7 @@ clobber: tidy @rm -f $(obj)nand_spl/{u-boot.{lds,lst},System.map} @rm -f $(obj)nand_spl/{u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map} @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.map} - @rm -f $(obj)spl/{u-boot-spl.lds,u-boot.lst} + @rm -f $(obj)spl/u-boot-spl.lds @rm -f $(obj)MLO MLO.byteswap @rm -f $(obj)SPL @rm -f $(obj)tools/xway-swap-bytes diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds index 008ae89..c19285d 100644 --- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds +++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds @@ -51,7 +51,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds index 1c3deef..69f6d48 100644 --- a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds @@ -49,7 +49,7 @@ SECTIONS .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); } >.sram
. = ALIGN(4); diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds index bba91d5..5e66dd1 100644 --- a/arch/arm/cpu/ixp/u-boot.lds +++ b/arch/arm/cpu/ixp/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds index e1bc8e7..d4ad352 100644 --- a/arch/arm/cpu/u-boot.lds +++ b/arch/arm/cpu/u-boot.lds @@ -52,7 +52,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/avr32/cpu/u-boot.lds b/arch/avr32/cpu/u-boot.lds index 0b16d2a..4a3fc2a 100644 --- a/arch/avr32/cpu/u-boot.lds +++ b/arch/avr32/cpu/u-boot.lds @@ -50,7 +50,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds index 58db838..77f48c1 100644 --- a/arch/blackfin/cpu/u-boot.lds +++ b/arch/blackfin/cpu/u-boot.lds @@ -114,7 +114,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); } >ram_data
.text_l1 : diff --git a/arch/microblaze/cpu/u-boot.lds b/arch/microblaze/cpu/u-boot.lds index fe3d97d..1ae4184 100644 --- a/arch/microblaze/cpu/u-boot.lds +++ b/arch/microblaze/cpu/u-boot.lds @@ -54,7 +54,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.bss ALIGN(0x4): diff --git a/arch/mips/cpu/u-boot.lds b/arch/mips/cpu/u-boot.lds index 10513ab..ca18d46 100644 --- a/arch/mips/cpu/u-boot.lds +++ b/arch/mips/cpu/u-boot.lds @@ -64,7 +64,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/nds32/cpu/n1213/u-boot.lds b/arch/nds32/cpu/n1213/u-boot.lds index cef19c5..5790948 100644 --- a/arch/nds32/cpu/n1213/u-boot.lds +++ b/arch/nds32/cpu/n1213/u-boot.lds @@ -55,7 +55,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/arch/nios2/cpu/u-boot.lds b/arch/nios2/cpu/u-boot.lds index d0eb80d..f937396 100644 --- a/arch/nios2/cpu/u-boot.lds +++ b/arch/nios2/cpu/u-boot.lds @@ -48,7 +48,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
/* INIT DATA sections - "Small" data (see the gcc -G option) diff --git a/arch/powerpc/cpu/74xx_7xx/u-boot.lds b/arch/powerpc/cpu/74xx_7xx/u-boot.lds index ecee439..c58d979 100644 --- a/arch/powerpc/cpu/74xx_7xx/u-boot.lds +++ b/arch/powerpc/cpu/74xx_7xx/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc512x/u-boot.lds b/arch/powerpc/cpu/mpc512x/u-boot.lds index 7faefba..a34501b 100644 --- a/arch/powerpc/cpu/mpc512x/u-boot.lds +++ b/arch/powerpc/cpu/mpc512x/u-boot.lds @@ -60,7 +60,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc5xx/u-boot.lds b/arch/powerpc/cpu/mpc5xx/u-boot.lds index c91e146..0d87c8c 100644 --- a/arch/powerpc/cpu/mpc5xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xx/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds index ac7844d..cdb36c0 100644 --- a/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds +++ b/arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds @@ -68,7 +68,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/arch/powerpc/cpu/mpc5xxx/u-boot.lds b/arch/powerpc/cpu/mpc5xxx/u-boot.lds index 1f46ead..6bd646b 100644 --- a/arch/powerpc/cpu/mpc5xxx/u-boot.lds +++ b/arch/powerpc/cpu/mpc5xxx/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc8220/u-boot.lds b/arch/powerpc/cpu/mpc8220/u-boot.lds index c147954..6e9967c 100644 --- a/arch/powerpc/cpu/mpc8220/u-boot.lds +++ b/arch/powerpc/cpu/mpc8220/u-boot.lds @@ -62,7 +62,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc824x/u-boot.lds b/arch/powerpc/cpu/mpc824x/u-boot.lds index a713012..699fb85 100644 --- a/arch/powerpc/cpu/mpc824x/u-boot.lds +++ b/arch/powerpc/cpu/mpc824x/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc8260/u-boot.lds b/arch/powerpc/cpu/mpc8260/u-boot.lds index 42385fc..2709f37 100644 --- a/arch/powerpc/cpu/mpc8260/u-boot.lds +++ b/arch/powerpc/cpu/mpc8260/u-boot.lds @@ -62,7 +62,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc83xx/u-boot.lds b/arch/powerpc/cpu/mpc83xx/u-boot.lds index d699def..905823c 100644 --- a/arch/powerpc/cpu/mpc83xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc83xx/u-boot.lds @@ -61,7 +61,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds index f7c4a22..3bb7572 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds @@ -72,7 +72,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds index 46dbaed..87522b8 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds @@ -54,7 +54,7 @@ SECTIONS _edata = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(8); diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds index 4a40a1f..8c6e66e 100644 --- a/arch/powerpc/cpu/mpc85xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/arch/powerpc/cpu/mpc86xx/u-boot.lds b/arch/powerpc/cpu/mpc86xx/u-boot.lds index 8bfadf2..81804e3 100644 --- a/arch/powerpc/cpu/mpc86xx/u-boot.lds +++ b/arch/powerpc/cpu/mpc86xx/u-boot.lds @@ -67,7 +67,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds index a96ddd5..2cadcc9 100644 --- a/arch/powerpc/cpu/ppc4xx/u-boot.lds +++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds @@ -81,7 +81,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/arch/sandbox/cpu/u-boot.lds b/arch/sandbox/cpu/u-boot.lds index 1b781eb..94c26f1 100644 --- a/arch/sandbox/cpu/u-boot.lds +++ b/arch/sandbox/cpu/u-boot.lds @@ -27,7 +27,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
__u_boot_sandbox_option_start = .; diff --git a/arch/sh/cpu/sh2/u-boot.lds b/arch/sh/cpu/sh2/u-boot.lds index 17f8091..9bf1d85 100644 --- a/arch/sh/cpu/sh2/u-boot.lds +++ b/arch/sh/cpu/sh2/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/sh/cpu/sh3/u-boot.lds b/arch/sh/cpu/sh3/u-boot.lds index c831961..29352ad 100644 --- a/arch/sh/cpu/sh3/u-boot.lds +++ b/arch/sh/cpu/sh3/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/sh/cpu/sh4/u-boot.lds b/arch/sh/cpu/sh4/u-boot.lds index 0ecafcf..cf3da0d 100644 --- a/arch/sh/cpu/sh4/u-boot.lds +++ b/arch/sh/cpu/sh4/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
PROVIDE (reloc_dst_end = .); diff --git a/arch/x86/cpu/u-boot.lds b/arch/x86/cpu/u-boot.lds index 2313cd7..e2c5627 100644 --- a/arch/x86/cpu/u-boot.lds +++ b/arch/x86/cpu/u-boot.lds @@ -36,7 +36,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/board/BuS/eb_cpu5282/u-boot.lds b/board/BuS/eb_cpu5282/u-boot.lds index 0c92d31..43bd9b7 100644 --- a/board/BuS/eb_cpu5282/u-boot.lds +++ b/board/BuS/eb_cpu5282/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/LEOX/elpt860/u-boot.lds b/board/LEOX/elpt860/u-boot.lds index 2bb876d..3ff3871 100644 --- a/board/LEOX/elpt860/u-boot.lds +++ b/board/LEOX/elpt860/u-boot.lds @@ -89,7 +89,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/RPXClassic/u-boot.lds b/board/RPXClassic/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/RPXClassic/u-boot.lds +++ b/board/RPXClassic/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RPXClassic/u-boot.lds.debug b/board/RPXClassic/u-boot.lds.debug index dc8c4e9..e88bd97 100644 --- a/board/RPXClassic/u-boot.lds.debug +++ b/board/RPXClassic/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RPXlite/u-boot.lds b/board/RPXlite/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/RPXlite/u-boot.lds +++ b/board/RPXlite/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RPXlite/u-boot.lds.debug b/board/RPXlite/u-boot.lds.debug index dc8c4e9..e88bd97 100644 --- a/board/RPXlite/u-boot.lds.debug +++ b/board/RPXlite/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RPXlite_dw/u-boot.lds b/board/RPXlite_dw/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/RPXlite_dw/u-boot.lds +++ b/board/RPXlite_dw/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RPXlite_dw/u-boot.lds.debug b/board/RPXlite_dw/u-boot.lds.debug index b43a1e4..88c410c 100644 --- a/board/RPXlite_dw/u-boot.lds.debug +++ b/board/RPXlite_dw/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/RRvision/u-boot.lds b/board/RRvision/u-boot.lds index 748e511..f9d2ec2 100644 --- a/board/RRvision/u-boot.lds +++ b/board/RRvision/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/actux1/u-boot.lds b/board/actux1/u-boot.lds index 572bcea..7cf5b46 100644 --- a/board/actux1/u-boot.lds +++ b/board/actux1/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN (4); diff --git a/board/actux2/u-boot.lds b/board/actux2/u-boot.lds index 6272a10..e9b5547 100644 --- a/board/actux2/u-boot.lds +++ b/board/actux2/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN (4); diff --git a/board/actux3/u-boot.lds b/board/actux3/u-boot.lds index 488e1e7..b79ea3c 100644 --- a/board/actux3/u-boot.lds +++ b/board/actux3/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN (4); diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds index 73e2f3f..5e0ed00 100644 --- a/board/adder/u-boot.lds +++ b/board/adder/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/altera/nios2-generic/u-boot.lds b/board/altera/nios2-generic/u-boot.lds index 289386b..900fe65 100644 --- a/board/altera/nios2-generic/u-boot.lds +++ b/board/altera/nios2-generic/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
/* INIT DATA sections - "Small" data (see the gcc -G option) diff --git a/board/amcc/acadia/u-boot-nand.lds b/board/amcc/acadia/u-boot-nand.lds index beba978..3861b67 100644 --- a/board/amcc/acadia/u-boot-nand.lds +++ b/board/amcc/acadia/u-boot-nand.lds @@ -74,7 +74,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/amcc/bamboo/u-boot-nand.lds b/board/amcc/bamboo/u-boot-nand.lds index 2dd00d7..6308d49 100644 --- a/board/amcc/bamboo/u-boot-nand.lds +++ b/board/amcc/bamboo/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/amcc/canyonlands/u-boot-nand.lds b/board/amcc/canyonlands/u-boot-nand.lds index 8ac5116..5fc9062 100644 --- a/board/amcc/canyonlands/u-boot-nand.lds +++ b/board/amcc/canyonlands/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/amcc/kilauea/u-boot-nand.lds b/board/amcc/kilauea/u-boot-nand.lds index beba978..3861b67 100644 --- a/board/amcc/kilauea/u-boot-nand.lds +++ b/board/amcc/kilauea/u-boot-nand.lds @@ -74,7 +74,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/amcc/sequoia/u-boot-nand.lds b/board/amcc/sequoia/u-boot-nand.lds index 18266ef..b4600de 100644 --- a/board/amcc/sequoia/u-boot-nand.lds +++ b/board/amcc/sequoia/u-boot-nand.lds @@ -75,7 +75,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/amcc/sequoia/u-boot-ram.lds b/board/amcc/sequoia/u-boot-ram.lds index 6b02784..521d12a 100644 --- a/board/amcc/sequoia/u-boot-ram.lds +++ b/board/amcc/sequoia/u-boot-ram.lds @@ -66,7 +66,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/astro/mcf5373l/u-boot.lds b/board/astro/mcf5373l/u-boot.lds index bc40fd6..5ee8fcc 100644 --- a/board/astro/mcf5373l/u-boot.lds +++ b/board/astro/mcf5373l/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/cobra5272/u-boot.lds b/board/cobra5272/u-boot.lds index d054f20..7421eec 100644 --- a/board/cobra5272/u-boot.lds +++ b/board/cobra5272/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/cogent/u-boot.lds b/board/cogent/u-boot.lds index 2a6027f..357f59d 100644 --- a/board/cogent/u-boot.lds +++ b/board/cogent/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/cogent/u-boot.lds.debug b/board/cogent/u-boot.lds.debug index dc8c4e9..e88bd97 100644 --- a/board/cogent/u-boot.lds.debug +++ b/board/cogent/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/cray/L1/u-boot.lds.debug b/board/cray/L1/u-boot.lds.debug index d7a2e56..99cbed4 100644 --- a/board/cray/L1/u-boot.lds.debug +++ b/board/cray/L1/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/dave/PPChameleonEVB/u-boot.lds b/board/dave/PPChameleonEVB/u-boot.lds index 8a306d6..987b52d 100644 --- a/board/dave/PPChameleonEVB/u-boot.lds +++ b/board/dave/PPChameleonEVB/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/dvlhost/u-boot.lds b/board/dvlhost/u-boot.lds index 6dc26c8..eb83b6f 100644 --- a/board/dvlhost/u-boot.lds +++ b/board/dvlhost/u-boot.lds @@ -57,7 +57,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN (4); diff --git a/board/eltec/mhpc/u-boot.lds b/board/eltec/mhpc/u-boot.lds index c8d3894..bd74d74 100644 --- a/board/eltec/mhpc/u-boot.lds +++ b/board/eltec/mhpc/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/eltec/mhpc/u-boot.lds.debug b/board/eltec/mhpc/u-boot.lds.debug index 92796e6..614bbb2 100644 --- a/board/eltec/mhpc/u-boot.lds.debug +++ b/board/eltec/mhpc/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/emk/top860/u-boot.lds b/board/emk/top860/u-boot.lds index 22626d3..ea04eca 100644 --- a/board/emk/top860/u-boot.lds +++ b/board/emk/top860/u-boot.lds @@ -70,7 +70,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/ep88x/u-boot.lds b/board/ep88x/u-boot.lds index 1dcc22a..e5fa63e 100644 --- a/board/ep88x/u-boot.lds +++ b/board/ep88x/u-boot.lds @@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/esd/dasa_sim/u-boot.lds b/board/esd/dasa_sim/u-boot.lds index 7eca183..cca527f 100644 --- a/board/esd/dasa_sim/u-boot.lds +++ b/board/esd/dasa_sim/u-boot.lds @@ -76,7 +76,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/esd/pmc440/u-boot-nand.lds b/board/esd/pmc440/u-boot-nand.lds index ca7df45..4469b80 100644 --- a/board/esd/pmc440/u-boot-nand.lds +++ b/board/esd/pmc440/u-boot-nand.lds @@ -104,7 +104,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/esd/tasreg/u-boot.lds b/board/esd/tasreg/u-boot.lds index 0d6a0f3..7642bba 100644 --- a/board/esd/tasreg/u-boot.lds +++ b/board/esd/tasreg/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/esteem192e/u-boot.lds b/board/esteem192e/u-boot.lds index fe5cf09..357a794 100644 --- a/board/esteem192e/u-boot.lds +++ b/board/esteem192e/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/evb64260/u-boot.lds b/board/evb64260/u-boot.lds index eac9c07..e2cfcfe 100644 --- a/board/evb64260/u-boot.lds +++ b/board/evb64260/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/fads/u-boot.lds b/board/fads/u-boot.lds index 6022dbc..450103d 100644 --- a/board/fads/u-boot.lds +++ b/board/fads/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/flagadm/u-boot.lds b/board/flagadm/u-boot.lds index c8d3894..bd74d74 100644 --- a/board/flagadm/u-boot.lds +++ b/board/flagadm/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/flagadm/u-boot.lds.debug b/board/flagadm/u-boot.lds.debug index 92796e6..614bbb2 100644 --- a/board/flagadm/u-boot.lds.debug +++ b/board/flagadm/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/freescale/m5208evbe/u-boot.lds b/board/freescale/m5208evbe/u-boot.lds index 2c151f2..f3c9ed8 100644 --- a/board/freescale/m5208evbe/u-boot.lds +++ b/board/freescale/m5208evbe/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m52277evb/u-boot.lds b/board/freescale/m52277evb/u-boot.lds index dbd6f6a..ae0a48d 100644 --- a/board/freescale/m52277evb/u-boot.lds +++ b/board/freescale/m52277evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5235evb/u-boot.lds b/board/freescale/m5235evb/u-boot.lds index 00932ae..603858b 100644 --- a/board/freescale/m5235evb/u-boot.lds +++ b/board/freescale/m5235evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5249evb/u-boot.lds b/board/freescale/m5249evb/u-boot.lds index d054f20..7421eec 100644 --- a/board/freescale/m5249evb/u-boot.lds +++ b/board/freescale/m5249evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5253demo/u-boot.lds b/board/freescale/m5253demo/u-boot.lds index f8116f6..6838247 100644 --- a/board/freescale/m5253demo/u-boot.lds +++ b/board/freescale/m5253demo/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5253evbe/u-boot.lds b/board/freescale/m5253evbe/u-boot.lds index d054f20..7421eec 100644 --- a/board/freescale/m5253evbe/u-boot.lds +++ b/board/freescale/m5253evbe/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5271evb/u-boot.lds b/board/freescale/m5271evb/u-boot.lds index 133ec01..e222e80 100644 --- a/board/freescale/m5271evb/u-boot.lds +++ b/board/freescale/m5271evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5272c3/u-boot.lds b/board/freescale/m5272c3/u-boot.lds index d054f20..7421eec 100644 --- a/board/freescale/m5272c3/u-boot.lds +++ b/board/freescale/m5272c3/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5275evb/u-boot.lds b/board/freescale/m5275evb/u-boot.lds index fc68de1..c18758a 100644 --- a/board/freescale/m5275evb/u-boot.lds +++ b/board/freescale/m5275evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5282evb/u-boot.lds b/board/freescale/m5282evb/u-boot.lds index ad49874..20f6c47 100644 --- a/board/freescale/m5282evb/u-boot.lds +++ b/board/freescale/m5282evb/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m53017evb/u-boot.lds b/board/freescale/m53017evb/u-boot.lds index d25a36f..15dfa7d 100644 --- a/board/freescale/m53017evb/u-boot.lds +++ b/board/freescale/m53017evb/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5329evb/u-boot.lds b/board/freescale/m5329evb/u-boot.lds index 6616594..5013ff4 100644 --- a/board/freescale/m5329evb/u-boot.lds +++ b/board/freescale/m5329evb/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m5373evb/u-boot.lds b/board/freescale/m5373evb/u-boot.lds index bc40fd6..5ee8fcc 100644 --- a/board/freescale/m5373evb/u-boot.lds +++ b/board/freescale/m5373evb/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m54418twr/u-boot.lds b/board/freescale/m54418twr/u-boot.lds index 36a4c26..2df386b 100644 --- a/board/freescale/m54418twr/u-boot.lds +++ b/board/freescale/m54418twr/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m54451evb/u-boot.lds b/board/freescale/m54451evb/u-boot.lds index 91328a4..4440d61 100644 --- a/board/freescale/m54451evb/u-boot.lds +++ b/board/freescale/m54451evb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m54455evb/u-boot.lds b/board/freescale/m54455evb/u-boot.lds index 36a4c26..2df386b 100644 --- a/board/freescale/m54455evb/u-boot.lds +++ b/board/freescale/m54455evb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m547xevb/u-boot.lds b/board/freescale/m547xevb/u-boot.lds index de4d0eb..269bf8a 100644 --- a/board/freescale/m547xevb/u-boot.lds +++ b/board/freescale/m547xevb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/m548xevb/u-boot.lds b/board/freescale/m548xevb/u-boot.lds index fbbe0c5..68bdad4 100644 --- a/board/freescale/m548xevb/u-boot.lds +++ b/board/freescale/m548xevb/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index 12d7c12..2d08fea 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -60,7 +60,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = ALIGN(4); diff --git a/board/gaisler/gr_cpci_ax2000/u-boot.lds b/board/gaisler/gr_cpci_ax2000/u-boot.lds index 774c494..dac87db 100644 --- a/board/gaisler/gr_cpci_ax2000/u-boot.lds +++ b/board/gaisler/gr_cpci_ax2000/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.data : diff --git a/board/gaisler/gr_ep2s60/u-boot.lds b/board/gaisler/gr_ep2s60/u-boot.lds index f6d1301..78e0e2d 100644 --- a/board/gaisler/gr_ep2s60/u-boot.lds +++ b/board/gaisler/gr_ep2s60/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.data : diff --git a/board/gaisler/gr_xc3s_1500/u-boot.lds b/board/gaisler/gr_xc3s_1500/u-boot.lds index 7df6e83..87ea473 100644 --- a/board/gaisler/gr_xc3s_1500/u-boot.lds +++ b/board/gaisler/gr_xc3s_1500/u-boot.lds @@ -88,7 +88,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.data : diff --git a/board/gaisler/grsim/u-boot.lds b/board/gaisler/grsim/u-boot.lds index b241cbc..e854a16 100644 --- a/board/gaisler/grsim/u-boot.lds +++ b/board/gaisler/grsim/u-boot.lds @@ -87,7 +87,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.data : diff --git a/board/gaisler/grsim_leon2/u-boot.lds b/board/gaisler/grsim_leon2/u-boot.lds index 63c15b9..f247e56 100644 --- a/board/gaisler/grsim_leon2/u-boot.lds +++ b/board/gaisler/grsim_leon2/u-boot.lds @@ -87,7 +87,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.data : diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds index 1cbe7e3..b061441 100644 --- a/board/gen860t/u-boot-flashenv.lds +++ b/board/gen860t/u-boot-flashenv.lds @@ -73,7 +73,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds index dd89c70..9e9449d 100644 --- a/board/gen860t/u-boot.lds +++ b/board/gen860t/u-boot.lds @@ -74,7 +74,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/genietv/u-boot.lds b/board/genietv/u-boot.lds index 124b183..958dd84 100644 --- a/board/genietv/u-boot.lds +++ b/board/genietv/u-boot.lds @@ -83,7 +83,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/genietv/u-boot.lds.debug b/board/genietv/u-boot.lds.debug index e1cf249..a3aeb60 100644 --- a/board/genietv/u-boot.lds.debug +++ b/board/genietv/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/hermes/u-boot.lds b/board/hermes/u-boot.lds index f02eb1c..b2bb50d 100644 --- a/board/hermes/u-boot.lds +++ b/board/hermes/u-boot.lds @@ -75,7 +75,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/hermes/u-boot.lds.debug b/board/hermes/u-boot.lds.debug index e84cc79..4383c49 100644 --- a/board/hermes/u-boot.lds.debug +++ b/board/hermes/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/hymod/u-boot.lds b/board/hymod/u-boot.lds index 7afae0a..3133c55 100644 --- a/board/hymod/u-boot.lds +++ b/board/hymod/u-boot.lds @@ -113,7 +113,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/hymod/u-boot.lds.debug b/board/hymod/u-boot.lds.debug index dc8c4e9..e88bd97 100644 --- a/board/hymod/u-boot.lds.debug +++ b/board/hymod/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/icu862/u-boot.lds b/board/icu862/u-boot.lds index 6778eb1..40f4a38 100644 --- a/board/icu862/u-boot.lds +++ b/board/icu862/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/icu862/u-boot.lds.debug b/board/icu862/u-boot.lds.debug index 3e075a8..9995288 100644 --- a/board/icu862/u-boot.lds.debug +++ b/board/icu862/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/idmr/u-boot.lds b/board/idmr/u-boot.lds index 0d6a0f3..6d13831 100644 --- a/board/idmr/u-boot.lds +++ b/board/idmr/u-boot.lds @@ -68,7 +68,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/ip860/u-boot.lds b/board/ip860/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/ip860/u-boot.lds +++ b/board/ip860/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/ip860/u-boot.lds.debug b/board/ip860/u-boot.lds.debug index e47aff0..0b34177 100644 --- a/board/ip860/u-boot.lds.debug +++ b/board/ip860/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/ivm/u-boot.lds b/board/ivm/u-boot.lds index 4cca652..dcd53ec 100644 --- a/board/ivm/u-boot.lds +++ b/board/ivm/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/ivm/u-boot.lds.debug b/board/ivm/u-boot.lds.debug index 53a19b2..bae9fb2 100644 --- a/board/ivm/u-boot.lds.debug +++ b/board/ivm/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/korat/u-boot-F7FC.lds b/board/korat/u-boot-F7FC.lds index 033cff4..b6fa79f 100644 --- a/board/korat/u-boot-F7FC.lds +++ b/board/korat/u-boot-F7FC.lds @@ -110,7 +110,7 @@ SECTIONS . = .;
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/kup/kup4k/u-boot.lds b/board/kup/kup4k/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/kup/kup4k/u-boot.lds +++ b/board/kup/kup4k/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/kup/kup4k/u-boot.lds.debug b/board/kup/kup4k/u-boot.lds.debug index b43a1e4..88c410c 100644 --- a/board/kup/kup4k/u-boot.lds.debug +++ b/board/kup/kup4k/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/kup/kup4x/u-boot.lds b/board/kup/kup4x/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/kup/kup4x/u-boot.lds +++ b/board/kup/kup4x/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/kup/kup4x/u-boot.lds.debug b/board/kup/kup4x/u-boot.lds.debug index b43a1e4..88c410c 100644 --- a/board/kup/kup4x/u-boot.lds.debug +++ b/board/kup/kup4x/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/lwmon/u-boot.lds b/board/lwmon/u-boot.lds index bc71b0d..30523dc 100644 --- a/board/lwmon/u-boot.lds +++ b/board/lwmon/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/lwmon/u-boot.lds.debug b/board/lwmon/u-boot.lds.debug index 0a3e646..1d1b76a 100644 --- a/board/lwmon/u-boot.lds.debug +++ b/board/lwmon/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/manroland/uc100/u-boot.lds b/board/manroland/uc100/u-boot.lds index e32ae37..8c75dea 100644 --- a/board/manroland/uc100/u-boot.lds +++ b/board/manroland/uc100/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/matrix_vision/mvsmr/u-boot.lds b/board/matrix_vision/mvsmr/u-boot.lds index 5a3a9ea..5707770 100644 --- a/board/matrix_vision/mvsmr/u-boot.lds +++ b/board/matrix_vision/mvsmr/u-boot.lds @@ -77,7 +77,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/mbx8xx/u-boot.lds b/board/mbx8xx/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/mbx8xx/u-boot.lds +++ b/board/mbx8xx/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/mbx8xx/u-boot.lds.debug b/board/mbx8xx/u-boot.lds.debug index 4155b60..063f2cc 100644 --- a/board/mbx8xx/u-boot.lds.debug +++ b/board/mbx8xx/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/mousse/u-boot.lds b/board/mousse/u-boot.lds index 43f91f1..080829b 100644 --- a/board/mousse/u-boot.lds +++ b/board/mousse/u-boot.lds @@ -63,7 +63,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/mpl/pip405/u-boot.lds.debug b/board/mpl/pip405/u-boot.lds.debug index d7a2e56..99cbed4 100644 --- a/board/mpl/pip405/u-boot.lds.debug +++ b/board/mpl/pip405/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/mvblue/u-boot.lds b/board/mvblue/u-boot.lds index c378564..e186ee6 100644 --- a/board/mvblue/u-boot.lds +++ b/board/mvblue/u-boot.lds @@ -73,7 +73,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netphone/u-boot.lds b/board/netphone/u-boot.lds index cdc1fda..ddb5a72 100644 --- a/board/netphone/u-boot.lds +++ b/board/netphone/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netphone/u-boot.lds.debug b/board/netphone/u-boot.lds.debug index 900da64..e1fe052 100644 --- a/board/netphone/u-boot.lds.debug +++ b/board/netphone/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netta/u-boot.lds b/board/netta/u-boot.lds index cdc1fda..ddb5a72 100644 --- a/board/netta/u-boot.lds +++ b/board/netta/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netta/u-boot.lds.debug b/board/netta/u-boot.lds.debug index 900da64..e1fe052 100644 --- a/board/netta/u-boot.lds.debug +++ b/board/netta/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netta2/u-boot.lds b/board/netta2/u-boot.lds index cdc1fda..ddb5a72 100644 --- a/board/netta2/u-boot.lds +++ b/board/netta2/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netta2/u-boot.lds.debug b/board/netta2/u-boot.lds.debug index 900da64..e1fe052 100644 --- a/board/netta2/u-boot.lds.debug +++ b/board/netta2/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netvia/u-boot.lds b/board/netvia/u-boot.lds index cdc1fda..ddb5a72 100644 --- a/board/netvia/u-boot.lds +++ b/board/netvia/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/netvia/u-boot.lds.debug b/board/netvia/u-boot.lds.debug index 6cbf4dc..3243fc0 100644 --- a/board/netvia/u-boot.lds.debug +++ b/board/netvia/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/nx823/u-boot.lds b/board/nx823/u-boot.lds index c8d3894..bd74d74 100644 --- a/board/nx823/u-boot.lds +++ b/board/nx823/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/nx823/u-boot.lds.debug b/board/nx823/u-boot.lds.debug index 92796e6..614bbb2 100644 --- a/board/nx823/u-boot.lds.debug +++ b/board/nx823/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/openrisc/openrisc-generic/u-boot.lds b/board/openrisc/openrisc-generic/u-boot.lds index 4cffacb..9024f30 100644 --- a/board/openrisc/openrisc-generic/u-boot.lds +++ b/board/openrisc/openrisc-generic/u-boot.lds @@ -29,7 +29,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
.rodata : { diff --git a/board/quantum/u-boot.lds b/board/quantum/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/quantum/u-boot.lds +++ b/board/quantum/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/r360mpi/u-boot.lds b/board/r360mpi/u-boot.lds index 3ef0d9e..9262aa5 100644 --- a/board/r360mpi/u-boot.lds +++ b/board/r360mpi/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/rbc823/u-boot.lds b/board/rbc823/u-boot.lds index a86b568..c6560c6 100644 --- a/board/rbc823/u-boot.lds +++ b/board/rbc823/u-boot.lds @@ -80,7 +80,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = .; diff --git a/board/renesas/sh7752evb/u-boot.lds b/board/renesas/sh7752evb/u-boot.lds index 28449b6..5bbb63f 100644 --- a/board/renesas/sh7752evb/u-boot.lds +++ b/board/renesas/sh7752evb/u-boot.lds @@ -78,7 +78,7 @@ SECTIONS PROVIDE (_egot = .);
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
PROVIDE (reloc_dst_end = .); diff --git a/board/renesas/sh7757lcr/u-boot.lds b/board/renesas/sh7757lcr/u-boot.lds index cf406ce..0717d04 100644 --- a/board/renesas/sh7757lcr/u-boot.lds +++ b/board/renesas/sh7757lcr/u-boot.lds @@ -79,7 +79,7 @@ SECTIONS
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
PROVIDE (reloc_dst_end = .); diff --git a/board/rsdproto/u-boot.lds b/board/rsdproto/u-boot.lds index ff95029..4662546 100644 --- a/board/rsdproto/u-boot.lds +++ b/board/rsdproto/u-boot.lds @@ -100,7 +100,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/samsung/smdk5250/smdk5250-uboot-spl.lds b/board/samsung/smdk5250/smdk5250-uboot-spl.lds index 951d8ce..4ef6a51 100644 --- a/board/samsung/smdk5250/smdk5250-uboot-spl.lds +++ b/board/samsung/smdk5250/smdk5250-uboot-spl.lds @@ -49,7 +49,7 @@ SECTIONS . = ALIGN(4);
.u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); } >.sram . = ALIGN(4);
diff --git a/board/samsung/smdk6400/u-boot-nand.lds b/board/samsung/smdk6400/u-boot-nand.lds index fbb442a..ae32b16 100644 --- a/board/samsung/smdk6400/u-boot-nand.lds +++ b/board/samsung/smdk6400/u-boot-nand.lds @@ -50,7 +50,7 @@ SECTIONS
. = align(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
. = align(4); diff --git a/board/sandburst/karef/u-boot.lds.debug b/board/sandburst/karef/u-boot.lds.debug index 7a0757f..6b99f13 100644 --- a/board/sandburst/karef/u-boot.lds.debug +++ b/board/sandburst/karef/u-boot.lds.debug @@ -118,7 +118,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/sandburst/metrobox/u-boot.lds.debug b/board/sandburst/metrobox/u-boot.lds.debug index 07bd6fe..0b4192e 100644 --- a/board/sandburst/metrobox/u-boot.lds.debug +++ b/board/sandburst/metrobox/u-boot.lds.debug @@ -118,7 +118,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/sandpoint/u-boot.lds b/board/sandpoint/u-boot.lds index ae3afa1..ca13619 100644 --- a/board/sandpoint/u-boot.lds +++ b/board/sandpoint/u-boot.lds @@ -71,7 +71,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/sixnet/u-boot.lds b/board/sixnet/u-boot.lds index 6cf7a01..fa4de9d 100644 --- a/board/sixnet/u-boot.lds +++ b/board/sixnet/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/snmc/qs850/u-boot.lds b/board/snmc/qs850/u-boot.lds index f57f8a0..5929335 100644 --- a/board/snmc/qs850/u-boot.lds +++ b/board/snmc/qs850/u-boot.lds @@ -72,7 +72,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/snmc/qs860t/u-boot.lds b/board/snmc/qs860t/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/snmc/qs860t/u-boot.lds +++ b/board/snmc/qs860t/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/spc1920/u-boot.lds b/board/spc1920/u-boot.lds index 18f962c..c2ec827 100644 --- a/board/spc1920/u-boot.lds +++ b/board/spc1920/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/spd8xx/u-boot.lds b/board/spd8xx/u-boot.lds index f69e39d..b2ad343 100644 --- a/board/spd8xx/u-boot.lds +++ b/board/spd8xx/u-boot.lds @@ -78,7 +78,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/spd8xx/u-boot.lds.debug b/board/spd8xx/u-boot.lds.debug index 4155b60..063f2cc 100644 --- a/board/spd8xx/u-boot.lds.debug +++ b/board/spd8xx/u-boot.lds.debug @@ -110,7 +110,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/stx/stxxtc/u-boot.lds b/board/stx/stxxtc/u-boot.lds index cdc1fda..ddb5a72 100644 --- a/board/stx/stxxtc/u-boot.lds +++ b/board/stx/stxxtc/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/stx/stxxtc/u-boot.lds.debug b/board/stx/stxxtc/u-boot.lds.debug index 900da64..e1fe052 100644 --- a/board/stx/stxxtc/u-boot.lds.debug +++ b/board/stx/stxxtc/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/svm_sc8xx/u-boot.lds b/board/svm_sc8xx/u-boot.lds index 1635875..ebfa890 100644 --- a/board/svm_sc8xx/u-boot.lds +++ b/board/svm_sc8xx/u-boot.lds @@ -86,7 +86,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/tqc/tqm8xx/u-boot.lds b/board/tqc/tqm8xx/u-boot.lds index e1e1ccd..bab452c 100644 --- a/board/tqc/tqm8xx/u-boot.lds +++ b/board/tqc/tqm8xx/u-boot.lds @@ -82,7 +82,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/v37/u-boot.lds b/board/v37/u-boot.lds index fd2d72e..9504fcd 100644 --- a/board/v37/u-boot.lds +++ b/board/v37/u-boot.lds @@ -69,7 +69,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/w7o/u-boot.lds.debug b/board/w7o/u-boot.lds.debug index 2ce5a9a..18b7752 100644 --- a/board/w7o/u-boot.lds.debug +++ b/board/w7o/u-boot.lds.debug @@ -109,7 +109,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/board/xes/xpedite1000/u-boot.lds.debug b/board/xes/xpedite1000/u-boot.lds.debug index c4e5706..c02581d 100644 --- a/board/xes/xpedite1000/u-boot.lds.debug +++ b/board/xes/xpedite1000/u-boot.lds.debug @@ -114,7 +114,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + KEEP(*(SORT(.u_boot_list*))); }
diff --git a/common/cmd_help.c b/common/cmd_help.c index f832a96..d9bdc4d 100644 --- a/common/cmd_help.c +++ b/common/cmd_help.c @@ -41,7 +41,7 @@ U_BOOT_CMD( );
/* This does not use the U_BOOT_CMD macro as ? can't be used in symbol names */ -ll_entry_declare(cmd_tbl_t, question_mark, cmd, cmd) = { +ll_entry_declare(cmd_tbl_t, question_mark, cmd) = { "?", CONFIG_SYS_MAXARGS, 1, do_help, "alias for 'help'", #ifdef CONFIG_SYS_LONGHELP diff --git a/config.mk b/config.mk index b7cd481..bb5c69a 100644 --- a/config.mk +++ b/config.mk @@ -23,8 +23,6 @@
#########################################################################
-include $(TOPDIR)/helper.mk - ifeq ($(CURDIR),$(SRCTREE)) dir := else diff --git a/doc/README.commands b/doc/README.commands index 923418b..9eb3671 100644 --- a/doc/README.commands +++ b/doc/README.commands @@ -15,24 +15,22 @@ help: Long description. This is a string
**** Behind the scene ******
-The structure created is named with a special prefix (__u_boot_list_cmd_) -and placed by the linker in a special section. +The structure created is named with a special prefix and placed by +the linker in a special section using the linker lists mechanism +(see include/linker_lists.h)
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_list_cmd__start. +command array can be iterated over using the linker lists macros.
-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 -on the sections mentioned above) and use that to force the linker to -first enter the symbol as undefined in the output object so that there -is then a need for the symbol to be kept (this is the UNDEF_SYM logic in -the Makefile). +The linker lists feature ensures that the linker does not discard +these symbols when linking full U-Boot even though they are not +referenced in the source code as such.
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_list : { - #include "u-boot.lst"; + KEEP(*(SORT(.u_boot_list*))); } diff --git a/helper.mk b/helper.mk deleted file mode 100644 index 79a1da0..0000000 --- a/helper.mk +++ /dev/null @@ -1,64 +0,0 @@ -# -# 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/include/command.h b/include/command.h index 3785eb9..65692fd 100644 --- a/include/command.h +++ b/include/command.h @@ -175,7 +175,7 @@ int cmd_process(int flag, int argc, char * const argv[], _usage, _help, NULL)
#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \ - ll_entry_declare(cmd_tbl_t, _name, cmd, cmd) = \ + ll_entry_declare(cmd_tbl_t, _name, cmd) = \ U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, \ _usage, _help, _comp);
diff --git a/include/env_callback.h b/include/env_callback.h index c583120..afdee28 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -76,7 +76,7 @@ void env_callback_init(ENTRY *var_entry); } #else #define U_BOOT_ENV_CALLBACK(name, callback) \ - ll_entry_declare(struct env_clbk_tbl, name, env_clbk, env_clbk) = \ + ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \ {#name, callback} #endif
diff --git a/include/linker_lists.h b/include/linker_lists.h index 0b405d7..6c28bf9 100644 --- a/include/linker_lists.h +++ b/include/linker_lists.h @@ -13,6 +13,96 @@ * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. */ + +/* + * There is no use in including this from ASM files, but that happens + * anyway, e.g. PPC kgdb.S includes command.h which incluse us. + * So just don't define anything when included from ASM. + */ + +#if !defined(__ASSEMBLY__) + +/** + * A linker list is constructed by grouping together linker input + * sections, each containning one entry of the list. Each input section + * contains a constant initialized variable which holds the entry's + * content. Linker list input sections are constructed from the list + * and entry names, plus a prefix which allows grouping all lists + * together. Assuming _list and _entry are the list and entry names, + * then the corresponding input section name is + * + * _u_boot_list + _2_ + @_list + _2_ + @_entry + * + * and the C variable name is + * + * .u_boot_list_ + 2_ + @_list + _2_ + @_entry + * + * This ensures uniqueness for both input section and C variable name. + * + * Note that the names differ only in the first character, "." for the + * setion and "_" for the variable, so that the linker cannot confuse + * section and symbol names. From now on, both names will be referred + * to as + * + * %u_boot_list_ + 2_ + @_list + _2_ + @_entry + * + * Entry variables need never be referred to directly. + * + * The naming scheme for input sections allows grouping all linker lists + * into a single linker output section and grouping all entries for a + * single list. + * + * Note the two '_2_' constant components in the names: their presence + * allows putting a start and end symbols around a list, by mapping + * these symbols to sections names with components "1" (before) and + * "3" (after) instead of "2" (within). + * Start and end symbols for a list can generally be defined as + * + * %u_boot_list_2_ + @_list + _1_... + * %u_boot_list_2_ + @_list + _3_... + * + * Start and end symbols for the whole of the linker lists area can be + * defined as + * + * %u_boot_list_1_... + * %u_boot_list_3_... + * + * Here is an example of the sorted sections which result from a list + * "array" made up of three entries : "first", "second" and "third", + * iterated at least once. + * + * .u_boot_list_2_array_1 + * .u_boot_list_2_array_2_first + * .u_boot_list_2_array_2_second + * .u_boot_list_2_array_2_third + * .u_boot_list_2_array_3 + * + * If lists must be divided into sublists (e.g. for iterating only on + * part of a list), one can simply give the list a name of the form + * 'outer_2_inner', where 'outer' is the global list name and 'inner' + * is the sub-list name. Iterators for the whole list should use the + * global list name ("outer"); iterators for only a sub-list should use + * the full sub-list name ("outer_2_inner"). + * + * Here is an example of the sections generated from a global list + * named "drivers", two sub-lists named "i2c" and "pci", and iterators + * defined for the whole list and each sub-list: + * + * %u_boot_list_2_drivers_1 + * %u_boot_list_2_drivers_2_i2c_1 + * %u_boot_list_2_drivers_2_i2c_2_first + * %u_boot_list_2_drivers_2_i2c_2_first + * %u_boot_list_2_drivers_2_i2c_2_second + * %u_boot_list_2_drivers_2_i2c_2_third + * %u_boot_list_2_drivers_2_i2c_3 + * %u_boot_list_2_drivers_2_pci_1 + * %u_boot_list_2_drivers_2_pci_2_first + * %u_boot_list_2_drivers_2_pci_2_second + * %u_boot_list_2_drivers_2_pci_2_third + * %u_boot_list_2_drivers_2_pci_3 + * %u_boot_list_2_drivers_3 + */ + #ifndef __LINKER_LISTS_H__ #define __LINKER_LISTS_H__
@@ -20,43 +110,28 @@ * 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) + * @_list: name of the list. Should contain only characters allowed + * in a C variable name! * * 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. + * A variable declared using this macro must be compile-time initialized. * * 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. + * 1) The _type must not contain the "static" keyword, otherwise the + * entry is generated and can be iterated but is listed in the map + * file and cannot be retrieved by name. * - * 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. + * 2) 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 + * AND an 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. * @@ -66,39 +141,71 @@ * .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))) +#define ll_entry_declare(_type, _name, _list) \ + _type _u_boot_list_2_##_list##_2_##_name __aligned(4) \ + __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_2_"#_name))) + +/** + * We need a 0-byte-size type for iterator symbols, and the compiler + * does not allow defining objects of C type 'void'. Using an empty + * struct is allowed by the compiler, but causes gcc versions 4.4 and + * below to complain about aliasing. Therefore we use the next best + * thing: zero-sized arrays, which are both 0-byte-size and exempt from + * aliasing warnings. + */
/** * 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) + * @_list: Name of the list in which this entry is placed * * 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. + * specified by _list argument. + * + * Since this macro defines an array start symbol, its leftmost index + * must be 2 and its rightmost index must be 1. * * 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; \ - }) +#define ll_entry_start(_type, _list) \ +({ \ + static char start[0] __aligned(4) __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_1"))); \ + (_type *)&start; \ +})
/** - * ll_entry_count() - Return the number of elements in linker-generated array + * ll_entry_end() - Point after last entry of linker-generated array * @_type: Data type of the entry - * @_section_u: Subsection of u_boot_list in which this entry is placed + * @_list: Name of the list in which this entry is placed * (with underscores instead of dots) * + * This function returns (_type *) pointer after the very last entry of + * a linker-generated array placed into subsection of .u_boot_list + * section specified by _list argument. + * + * Since this macro defines an array end symbol, its leftmost index + * must be 2 and its rightmost index must be 3. + * + * Example: + * struct my_sub_cmd *msc = ll_entry_end(struct my_sub_cmd, cmd_sub); + */ +#define ll_entry_end(_type, _list) \ +({ \ + static char end[0] __aligned(4) __attribute__((unused, \ + section(".u_boot_list_2_"#_list"_3"))); \ + (_type *)&end; \ +}) +/** + * ll_entry_count() - Return the number of elements in linker-generated array + * @_type: Data type of the entry + * @_list: Name of the list of which the number of elements is computed + * * This function returns the number of elements of a linker-generated array - * placed into subsection of .u_boot_list section specified by _section_u + * placed into subsection of .u_boot_list section specified by _list * argument. The result is of an unsigned int type. * * Example: @@ -108,23 +215,19 @@ * 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) \ +#define ll_entry_count(_type, _list) \ ({ \ - 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; \ + _type *start = ll_entry_start(_type, _list); \ + _type *end = ll_entry_end(_type, _list); \ + unsigned int _ll_result = end - 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) + * @_list: Name of the list in which this entry is placed * * This function returns a pointer to a particular entry in LG-array * identified by the subsection of u_boot_list where the entry resides @@ -138,11 +241,54 @@ * ... * 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) \ +#define ll_entry_get(_type, _name, _list) \ ({ \ - extern _type _u_boot_list_##_section_u##_##_name; \ - _type *_ll_result = &_u_boot_list_##_section_u##_##_name;\ + extern _type _u_boot_list_2_##_list##_2_##_name; \ + _type *_ll_result = \ + &_u_boot_list_2_##_list##_2_##_name; \ _ll_result; \ })
+/** + * ll_start() - Point to first entry of first linker-generated array + * @_type: Data type of the entry + * + * This function returns (_type *) pointer to the very first entry of + * the very first linker-generated array. + * + * Since this macro defines the start of the linker-generated arrays, + * its leftmost index must be 1. + * + * Example: + * struct my_sub_cmd *msc = ll_start(struct my_sub_cmd); + */ +#define ll_start(_type) \ +({ \ + static char start[0] __aligned(4) __attribute__((unused, \ + section(".u_boot_list_1"))); \ + (_type *)&start; \ +}) + +/** + * ll_entry_end() - Point after last entry of last linker-generated array + * @_type: Data type of the entry + * + * This function returns (_type *) pointer after the very last entry of + * the very last linker-generated array. + * + * Since this macro defines the end of the linker-generated arrays, + * its leftmost index must be 3. + * + * Example: + * struct my_sub_cmd *msc = ll_end(struct my_sub_cmd); + */ +#define ll_end(_type) \ +({ \ + static char end[0] __aligned(4) __attribute__((unused, \ + section(".u_boot_list_3"))); \ + (_type *)&end; \ +}) + +#endif /* __ASSEMBLY__ */ + #endif /* __LINKER_LISTS_H__ */ diff --git a/nand_spl/board/freescale/mpc8536ds/Makefile b/nand_spl/board/freescale/mpc8536ds/Makefile index 9c77826..3a2a2d4 100644 --- a/nand_spl/board/freescale/mpc8536ds/Makefile +++ b/nand_spl/board/freescale/mpc8536ds/Makefile @@ -32,7 +32,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +61,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mpc8569mds/Makefile b/nand_spl/board/freescale/mpc8569mds/Makefile index 9c77826..3a2a2d4 100644 --- a/nand_spl/board/freescale/mpc8569mds/Makefile +++ b/nand_spl/board/freescale/mpc8569mds/Makefile @@ -32,7 +32,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +61,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mpc8572ds/Makefile b/nand_spl/board/freescale/mpc8572ds/Makefile index 9c77826..3a2a2d4 100644 --- a/nand_spl/board/freescale/mpc8572ds/Makefile +++ b/nand_spl/board/freescale/mpc8572ds/Makefile @@ -32,7 +32,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +61,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mx31pdk/Makefile b/nand_spl/board/freescale/mx31pdk/Makefile index fd0dfc1..3d57059 100644 --- a/nand_spl/board/freescale/mx31pdk/Makefile +++ b/nand_spl/board/freescale/mx31pdk/Makefile @@ -6,7 +6,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds -LSTSCRIPT= $(nandobj)/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 @@ -38,11 +37,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds -Map $(nandobj)u-boot-spl.map \ -o $@
-# 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) +$(nandobj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds index a26110f..0656176 100644 --- a/nand_spl/board/freescale/mx31pdk/u-boot.lds +++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/nand_spl/board/freescale/p1010rdb/Makefile b/nand_spl/board/freescale/p1010rdb/Makefile index c3495ec..f7bdf92 100644 --- a/nand_spl/board/freescale/p1010rdb/Makefile +++ b/nand_spl/board/freescale/p1010rdb/Makefile @@ -32,7 +32,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +61,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/p1023rds/Makefile b/nand_spl/board/freescale/p1023rds/Makefile index 9b2c0d7..fb7d561 100644 --- a/nand_spl/board/freescale/p1023rds/Makefile +++ b/nand_spl/board/freescale/p1023rds/Makefile @@ -27,7 +27,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +56,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/freescale/p1_p2_rdb/Makefile b/nand_spl/board/freescale/p1_p2_rdb/Makefile index 9c77826..3a2a2d4 100644 --- a/nand_spl/board/freescale/p1_p2_rdb/Makefile +++ b/nand_spl/board/freescale/p1_p2_rdb/Makefile @@ -32,7 +32,6 @@ include $(TOPDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/$(CPUDIR)/u-boot-nand_spl.lds -LSTSCRIPT= $(nandobj)/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,11 +61,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot-nand_spl.lds -Map $(nandobj)u-boot-spl.map \ -o $(nandobj)u-boot-spl
-# 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) +$(nandobj)u-boot-nand_spl.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/karo/tx25/Makefile b/nand_spl/board/karo/tx25/Makefile index 82489d2..9f9c589 100644 --- a/nand_spl/board/karo/tx25/Makefile +++ b/nand_spl/board/karo/tx25/Makefile @@ -27,7 +27,6 @@ include $(TOPDIR)/nand_spl/board/$(BOARDDIR)/config.mk nandobj := $(OBJTREE)/nand_spl/
LDSCRIPT= $(TOPDIR)/nand_spl/board/$(BOARDDIR)/u-boot.lds -LSTSCRIPT= $(nandobj)/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 @@ -59,11 +58,7 @@ $(nandobj)u-boot-spl: $(OBJS) $(nandobj)u-boot.lds -Map $(nandobj)u-boot-spl.map \ -o $@
-# 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) +$(nandobj)u-boot.lds: $(LDSCRIPT) $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -I$(nandobj)/board/$(BOARDDIR) \ -ansi -D__ASSEMBLY__ -P - <$< >$@
diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds index ee36131..ea84d64 100644 --- a/nand_spl/board/karo/tx25/u-boot.lds +++ b/nand_spl/board/karo/tx25/u-boot.lds @@ -49,7 +49,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/nand_spl/board/samsung/smdk6400/u-boot.lds b/nand_spl/board/samsung/smdk6400/u-boot.lds index 2ed6466..66b412e 100644 --- a/nand_spl/board/samsung/smdk6400/u-boot.lds +++ b/nand_spl/board/samsung/smdk6400/u-boot.lds @@ -53,7 +53,7 @@ SECTIONS
. = ALIGN(4); .u_boot_list : { - #include <u-boot.lst> + *(SORT(.u_boot_list*)); }
. = ALIGN(4); diff --git a/spl/.gitignore b/spl/.gitignore index 8cf487e..7c88147 100644 --- a/spl/.gitignore +++ b/spl/.gitignore @@ -2,4 +2,3 @@ u-boot-spl u-boot-spl.bin u-boot-spl.lds u-boot-spl.map -u-boot.lst

Dear Albert ARIBAUD,
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
[...]
Reviewed-by: Marek Vasut marex@denx.de

On Mon, Feb 25, 2013 at 11:58:56AM +0100, Albert ARIBAUD wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
Reviewed-by: Tom Rini trini@ti.com
Aside from ARM and I assume Sandbox, has this been runtime tested on other arches yet?

Hi Albert, Tom,
2013/2/25 Tom Rini trini@ti.com:
On Mon, Feb 25, 2013 at 11:58:56AM +0100, Albert ARIBAUD wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
Reviewed-by: Tom Rini trini@ti.com
Aside from ARM and I assume Sandbox, has this been runtime tested on other arches yet?
I've runtime tested the refactored LGA on MIPS, so
Tested-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com

On Mon, Feb 25, 2013 at 05:20:34PM +0100, Daniel Schwierzeck wrote:
Hi Albert, Tom,
2013/2/25 Tom Rini trini@ti.com:
On Mon, Feb 25, 2013 at 11:58:56AM +0100, Albert ARIBAUD wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
Reviewed-by: Tom Rini trini@ti.com
Aside from ARM and I assume Sandbox, has this been runtime tested on other arches yet?
I've runtime tested the refactored LGA on MIPS, so
Tested-by: Daniel Schwierzeck daniel.schwierzeck@gmail.com
I've also now tested this on am335x_evm as part of seeing if it resolved another issue:
Tested-by: Tom Rini trini@ti.com
Lets bring this in please, thanks!

Hi Tom,
On Mon, 25 Feb 2013 10:19:13 -0500, Tom Rini trini@ti.com wrote:
On Mon, Feb 25, 2013 at 11:58:56AM +0100, Albert ARIBAUD wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
Reviewed-by: Tom Rini trini@ti.com
Aside from ARM and I assume Sandbox, has this been runtime tested on other arches yet?
None other on my side.
Amicalement,

On Mon, 25 Feb 2013 11:58:56 +0100, Albert ARIBAUD albert.u.boot@aribaud.net wrote:
R_ARM_ABS32 relocation records cause symbol references to be zero before relocation, and become correct only after relocation. On the other hand, R_ARM_RELATIVE records make references correct before as well as after relocation.
This patch series aims at removing all R_ARM_ABS32 relocations from ARM targets.
the main contributor of R_ARM_ABS32 relocations is the support code for linker-lists, aka Linker-Generated Arrays. This is due to the fact that LGA start and end symbols, used for ranging these arrays, are linker- generated symbols, which always relocate as R_ARM_ABS32 even though they are supposed *not* to be absolute.
V1 of this patch series fixed LGAs so that start or end symbols are actually compiler-generated, and thus their references are relocated using R_ARM_RELATIVE; V2 also fixes crt0 so that BSS start and end references do not produce R_ARM_ABS32 relocations either.
With V2, none of the targets built with MAKEALL -a arm produces any R_ARM_ABS32 relocation.
This series has been build-tested with ARM (295 targets clean) and powerpc (634 targets clean)
Changes in v2:
- fixed missing .sram memory mapping in OMAP lds
- removed useless linker script sections in SPL lds files
- made BSS start and end compiler-generated
- moved SPL linker script changes to their own commit
- added KEEP() to all linker files
- removed spurious change to common/command.c
- changed empty type from struct {} to char[0]
- dropped patch to removed board/micronas/vct/u-boot.lds
- removed all references to u-boot.lst
Albert ARIBAUD (4): arm: omap: map u_boot_lists section to .sram Remove linker lists (LGAs) from SPL linker scripts arm: make __bss_start and __bss_end__ compiler-generated Refactor linker-generated arrays
.gitignore | 1 - Makefile | 13 +- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 2 +- arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds | 6 - arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds | 6 - arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 67 ++++++ arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 4 - arch/arm/cpu/ixp/u-boot.lds | 14 +- arch/arm/cpu/u-boot-spl.lds | 93 ++++++++ arch/arm/cpu/u-boot.lds | 14 +- arch/arm/lib/Makefile | 1 + arch/arm/lib/bss.c | 39 ++++ arch/avr32/cpu/u-boot.lds | 2 +- arch/blackfin/cpu/u-boot.lds | 2 +- arch/microblaze/cpu/u-boot.lds | 2 +- arch/mips/cpu/u-boot.lds | 2 +- arch/nds32/cpu/n1213/u-boot.lds | 2 +- arch/nios2/cpu/u-boot.lds | 2 +- arch/powerpc/cpu/74xx_7xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc512x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds | 2 +- arch/powerpc/cpu/mpc5xxx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8220/u-boot.lds | 2 +- arch/powerpc/cpu/mpc824x/u-boot.lds | 2 +- arch/powerpc/cpu/mpc8260/u-boot.lds | 2 +- arch/powerpc/cpu/mpc83xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds | 2 +- arch/powerpc/cpu/mpc85xx/u-boot.lds | 2 +- arch/powerpc/cpu/mpc86xx/u-boot.lds | 2 +- arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 +- arch/sandbox/cpu/u-boot.lds | 2 +- arch/sh/cpu/sh2/u-boot.lds | 2 +- arch/sh/cpu/sh3/u-boot.lds | 2 +- arch/sh/cpu/sh4/u-boot.lds | 2 +- arch/x86/cpu/u-boot.lds | 2 +- board/BuS/eb_cpu5282/u-boot.lds | 2 +- board/LEOX/elpt860/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds | 2 +- board/RPXClassic/u-boot.lds.debug | 2 +- board/RPXlite/u-boot.lds | 2 +- board/RPXlite/u-boot.lds.debug | 2 +- board/RPXlite_dw/u-boot.lds | 2 +- board/RPXlite_dw/u-boot.lds.debug | 2 +- board/RRvision/u-boot.lds | 2 +- board/actux1/u-boot.lds | 24 ++- board/actux2/u-boot.lds | 24 ++- board/actux3/u-boot.lds | 18 +- board/adder/u-boot.lds | 2 +- board/ait/cam_enc_4xx/u-boot-spl.lds | 4 - board/altera/nios2-generic/u-boot.lds | 2 +- board/amcc/acadia/u-boot-nand.lds | 2 +- board/amcc/bamboo/u-boot-nand.lds | 2 +- board/amcc/canyonlands/u-boot-nand.lds | 2 +- board/amcc/kilauea/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-nand.lds | 2 +- board/amcc/sequoia/u-boot-ram.lds | 2 +- board/astro/mcf5373l/u-boot.lds | 2 +- board/cobra5272/u-boot.lds | 2 +- board/cogent/u-boot.lds | 2 +- board/cogent/u-boot.lds.debug | 2 +- board/cray/L1/u-boot.lds.debug | 2 +- board/dave/PPChameleonEVB/u-boot.lds | 2 +- board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 5 - board/davinci/da8xxevm/u-boot-spl-hawk.lds | 5 - board/dvlhost/u-boot.lds | 18 +- board/eltec/mhpc/u-boot.lds | 2 +- board/eltec/mhpc/u-boot.lds.debug | 2 +- board/emk/top860/u-boot.lds | 2 +- board/ep88x/u-boot.lds | 2 +- board/esd/dasa_sim/u-boot.lds | 2 +- board/esd/pmc440/u-boot-nand.lds | 2 +- board/esd/tasreg/u-boot.lds | 2 +- board/esteem192e/u-boot.lds | 2 +- board/evb64260/u-boot.lds | 2 +- board/fads/u-boot.lds | 2 +- board/flagadm/u-boot.lds | 2 +- board/flagadm/u-boot.lds.debug | 2 +- board/freescale/m5208evbe/u-boot.lds | 2 +- board/freescale/m52277evb/u-boot.lds | 2 +- board/freescale/m5235evb/u-boot.lds | 2 +- board/freescale/m5249evb/u-boot.lds | 2 +- board/freescale/m5253demo/u-boot.lds | 2 +- board/freescale/m5253evbe/u-boot.lds | 2 +- board/freescale/m5271evb/u-boot.lds | 2 +- board/freescale/m5272c3/u-boot.lds | 2 +- board/freescale/m5275evb/u-boot.lds | 2 +- board/freescale/m5282evb/u-boot.lds | 2 +- board/freescale/m53017evb/u-boot.lds | 2 +- board/freescale/m5329evb/u-boot.lds | 2 +- board/freescale/m5373evb/u-boot.lds | 2 +- board/freescale/m54418twr/u-boot.lds | 2 +- board/freescale/m54451evb/u-boot.lds | 2 +- board/freescale/m54455evb/u-boot.lds | 2 +- board/freescale/m547xevb/u-boot.lds | 2 +- board/freescale/m548xevb/u-boot.lds | 2 +- board/freescale/mx31ads/u-boot.lds | 16 +- board/gaisler/gr_cpci_ax2000/u-boot.lds | 2 +- board/gaisler/gr_ep2s60/u-boot.lds | 2 +- board/gaisler/gr_xc3s_1500/u-boot.lds | 2 +- board/gaisler/grsim/u-boot.lds | 2 +- board/gaisler/grsim_leon2/u-boot.lds | 2 +- board/gen860t/u-boot-flashenv.lds | 2 +- board/gen860t/u-boot.lds | 2 +- board/genietv/u-boot.lds | 2 +- board/genietv/u-boot.lds.debug | 2 +- board/hermes/u-boot.lds | 2 +- board/hermes/u-boot.lds.debug | 2 +- board/hymod/u-boot.lds | 2 +- board/hymod/u-boot.lds.debug | 2 +- board/icu862/u-boot.lds | 2 +- board/icu862/u-boot.lds.debug | 2 +- board/idmr/u-boot.lds | 2 +- board/ip860/u-boot.lds | 2 +- board/ip860/u-boot.lds.debug | 2 +- board/ivm/u-boot.lds | 2 +- board/ivm/u-boot.lds.debug | 2 +- board/korat/u-boot-F7FC.lds | 2 +- board/kup/kup4k/u-boot.lds | 2 +- board/kup/kup4k/u-boot.lds.debug | 2 +- board/kup/kup4x/u-boot.lds | 2 +- board/kup/kup4x/u-boot.lds.debug | 2 +- board/lwmon/u-boot.lds | 2 +- board/lwmon/u-boot.lds.debug | 2 +- board/manroland/uc100/u-boot.lds | 2 +- board/matrix_vision/mvsmr/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds | 2 +- board/mbx8xx/u-boot.lds.debug | 2 +- board/mousse/u-boot.lds | 2 +- board/mpl/pip405/u-boot.lds.debug | 2 +- board/mvblue/u-boot.lds | 2 +- board/netphone/u-boot.lds | 2 +- board/netphone/u-boot.lds.debug | 2 +- board/netta/u-boot.lds | 2 +- board/netta/u-boot.lds.debug | 2 +- board/netta2/u-boot.lds | 2 +- board/netta2/u-boot.lds.debug | 2 +- board/netvia/u-boot.lds | 2 +- board/netvia/u-boot.lds.debug | 2 +- board/nx823/u-boot.lds | 2 +- board/nx823/u-boot.lds.debug | 2 +- board/openrisc/openrisc-generic/u-boot.lds | 2 +- board/quantum/u-boot.lds | 2 +- board/r360mpi/u-boot.lds | 2 +- board/rbc823/u-boot.lds | 2 +- board/renesas/sh7752evb/u-boot.lds | 2 +- board/renesas/sh7757lcr/u-boot.lds | 2 +- board/rsdproto/u-boot.lds | 2 +- board/samsung/smdk5250/smdk5250-uboot-spl.lds | 2 +- board/samsung/smdk6400/u-boot-nand.lds | 2 +- board/sandburst/karef/u-boot.lds.debug | 2 +- board/sandburst/metrobox/u-boot.lds.debug | 2 +- board/sandpoint/u-boot.lds | 2 +- board/sixnet/u-boot.lds | 2 +- board/snmc/qs850/u-boot.lds | 2 +- board/snmc/qs860t/u-boot.lds | 2 +- board/spc1920/u-boot.lds | 2 +- board/spd8xx/u-boot.lds | 2 +- board/spd8xx/u-boot.lds.debug | 2 +- board/stx/stxxtc/u-boot.lds | 2 +- board/stx/stxxtc/u-boot.lds.debug | 2 +- board/svm_sc8xx/u-boot.lds | 2 +- board/tqc/tqm8xx/u-boot.lds | 2 +- board/v37/u-boot.lds | 2 +- board/vpac270/u-boot-spl.lds | 4 - board/w7o/u-boot.lds.debug | 2 +- board/xes/xpedite1000/u-boot.lds.debug | 2 +- common/cmd_help.c | 2 +- config.mk | 2 - doc/README.commands | 18 +- helper.mk | 64 ------ include/command.h | 2 +- include/configs/am335x_evm.h | 2 +- include/configs/pcm051.h | 2 +- include/env_callback.h | 2 +- include/linker_lists.h | 252 +++++++++++++++++----- nand_spl/board/freescale/mpc8536ds/Makefile | 7 +- nand_spl/board/freescale/mpc8569mds/Makefile | 7 +- nand_spl/board/freescale/mpc8572ds/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/Makefile | 7 +- nand_spl/board/freescale/mx31pdk/u-boot.lds | 2 +- nand_spl/board/freescale/p1010rdb/Makefile | 7 +- nand_spl/board/freescale/p1023rds/Makefile | 7 +- nand_spl/board/freescale/p1_p2_rdb/Makefile | 7 +- nand_spl/board/karo/tx25/Makefile | 7 +- nand_spl/board/karo/tx25/u-boot.lds | 2 +- nand_spl/board/samsung/smdk6400/u-boot.lds | 2 +- spl/.gitignore | 1 - spl/Makefile | 8 +- 190 files changed, 665 insertions(+), 424 deletions(-) create mode 100644 arch/arm/cpu/armv7/am33xx/u-boot-spl.lds create mode 100644 arch/arm/cpu/u-boot-spl.lds create mode 100644 arch/arm/lib/bss.c delete mode 100644 helper.mk
Applied to u-boot-arm/master.
Amicalement,
participants (7)
-
Albert ARIBAUD
-
Andreas Bießmann
-
Daniel Schwierzeck
-
Heiko Schocher
-
Jeroen Hofstee
-
Marek Vasut
-
Tom Rini