summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>2013-02-25 00:59:00 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2013-03-12 23:28:40 +0100
commitef123c525370463254a6f8e67563fdb0b0b46412 (patch)
treee4c49bfa2efe3608b5e65fc6a10f02176637ceea /doc
parent3ebd1cbc49f0005092d69cf0d9a6e64d7a1c300b (diff)
downloadu-boot-imx-ef123c525370463254a6f8e67563fdb0b0b46412.zip
u-boot-imx-ef123c525370463254a6f8e67563fdb0b0b46412.tar.gz
u-boot-imx-ef123c525370463254a6f8e67563fdb0b0b46412.tar.bz2
Refactor linker-generated arrays
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>
Diffstat (limited to 'doc')
-rw-r--r--doc/README.commands18
1 files changed, 8 insertions, 10 deletions
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*)));
}