diff options
author | Paul Mackerras <paulus@samba.org> | 2008-10-22 14:43:45 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-10-31 01:11:52 -0400 |
commit | 2a4b9c5af82035c591adca951a9af1665ad1a2b0 (patch) | |
tree | 6c9ee42eef037f833603cf1ba310d54fa59f1920 /arch/powerpc/kernel | |
parent | 8b8b0cc1c736ddca39b60bb098bd0a23daaa495f (diff) |
powerpc: Work around ld bug in older binutils
Commit 549e8152de8039506f69c677a4546e5427aa6ae7 ("powerpc: Make the
64-bit kernel as a position-independent executable") added lines to
vmlinux.lds.S to add the extra sections needed to implement a
relocatable kernel. However, those lines seem to trigger a bug in
older versions of GNU ld (such as 2.16.1) when building a
non-relocatable kernel. Since ld 2.16.1 is still a popular choice for
cross-toolchains, this adds an #ifdef to vmlinux.lds.S so the added
lines are only included when building a relocatable kernel.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index b39c27ed7919..384dca5a9c1d 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -187,6 +187,7 @@ SECTIONS | |||
187 | *(.machine.desc) | 187 | *(.machine.desc) |
188 | __machine_desc_end = . ; | 188 | __machine_desc_end = . ; |
189 | } | 189 | } |
190 | #ifdef CONFIG_RELOCATABLE | ||
190 | . = ALIGN(8); | 191 | . = ALIGN(8); |
191 | .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } | 192 | .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } |
192 | .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } | 193 | .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } |
@@ -202,6 +203,7 @@ SECTIONS | |||
202 | __rela_dyn_start = .; | 203 | __rela_dyn_start = .; |
203 | *(.rela*) | 204 | *(.rela*) |
204 | } | 205 | } |
206 | #endif | ||
205 | 207 | ||
206 | /* Fake ELF header containing RPA note; for addnote */ | 208 | /* Fake ELF header containing RPA note; for addnote */ |
207 | .fakeelf : AT(ADDR(.fakeelf) - LOAD_OFFSET) { *(.fakeelf) } | 209 | .fakeelf : AT(ADDR(.fakeelf) - LOAD_OFFSET) { *(.fakeelf) } |