aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJie Zhang <jie.zhang@analog.com>2010-01-04 23:22:33 -0500
committerMike Frysinger <vapier@gentoo.org>2010-03-09 00:30:48 -0500
commit0afc272cc6044b7a4f1318eadbfb10c4be654441 (patch)
treefcf25311a64d1334fae7d75b6e8304c64f3638fe
parentcb191718fcca887fb4d5e3de833546ab12b433f9 (diff)
Blackfin: fix relocation errors with large initramfs images
Since we are now discarding .exit.text at runtime instead of link time, we need to place all .text sections ahead of the .data sections. Otherwise, a really large attached initramfs may cause link errors as it pushes the PC relative relocations behind the limits of the Blackfin ISA (~16meg). The instructions in the .exit.text are unable to call back into the .text sections leading to a link failure. Signed-off-by: Jie Zhang <jie.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S13
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index 66799e763dc9..be4b1bbb3918 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -104,18 +104,21 @@ SECTIONS
104 ___init_begin = .; 104 ___init_begin = .;
105 105
106 INIT_TEXT_SECTION(PAGE_SIZE) 106 INIT_TEXT_SECTION(PAGE_SIZE)
107 . = ALIGN(16);
108 INIT_DATA_SECTION(16)
109 PERCPU(4)
110 107
111 /* we have to discard exit text and such at runtime, not link time, to 108 /* We have to discard exit text and such at runtime, not link time, to
112 * handle embedded cross-section references (alt instructions, bug 109 * handle embedded cross-section references (alt instructions, bug
113 * table, eh_frame, etc...) 110 * table, eh_frame, etc...). We need all of our .text up front and
111 * .data after it for PCREL call issues.
114 */ 112 */
115 .exit.text : 113 .exit.text :
116 { 114 {
117 EXIT_TEXT 115 EXIT_TEXT
118 } 116 }
117
118 . = ALIGN(16);
119 INIT_DATA_SECTION(16)
120 PERCPU(4)
121
119 .exit.data : 122 .exit.data :
120 { 123 {
121 EXIT_DATA 124 EXIT_DATA