diff options
author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-02-25 00:59:00 +0000 |
---|---|---|
committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-03-12 23:28:40 +0100 |
commit | ef123c525370463254a6f8e67563fdb0b0b46412 (patch) | |
tree | e4c49bfa2efe3608b5e65fc6a10f02176637ceea /helper.mk | |
parent | 3ebd1cbc49f0005092d69cf0d9a6e64d7a1c300b (diff) | |
download | u-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 'helper.mk')
-rw-r--r-- | helper.mk | 64 |
1 files changed, 0 insertions, 64 deletions
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 |