diff mbox

Work around ld bug in older binutils

Message ID 18688.257.812926.680480@drongo.ozlabs.ibm.com (mailing list archive)
State Accepted, archived
Commit 2a4b9c5af82035c591adca951a9af1665ad1a2b0
Delegated to: Benjamin Herrenschmidt
Headers show

Commit Message

Paul Mackerras Oct. 23, 2008, 4:43 a.m. UTC
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>
---

Comments

Sean MacLennan Oct. 28, 2008, 12:58 a.m. UTC | #1
On Thu, 23 Oct 2008 15:43:45 +1100
Paul Mackerras <paulus@samba.org> wrote:

> 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.

I'd like to try this. I did a git revert to back out the aforementioned
commit. How do I get it back? Do I git revert again?

Cheers,
   Sean
Paul Mackerras Oct. 28, 2008, 3:05 a.m. UTC | #2
Sean MacLennan writes:

> I'd like to try this. I did a git revert to back out the aforementioned
> commit. How do I get it back? Do I git revert again?

You could revert the reversion, or else rebase any patches you have on
top of the reversion onto the commit before the reversion.

Paul.
diff mbox

Patch

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b39c27e..384dca5 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -187,6 +187,7 @@  SECTIONS
 		*(.machine.desc)
 		__machine_desc_end = . ;
 	}
+#ifdef CONFIG_RELOCATABLE
 	. = ALIGN(8);
 	.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) }
 	.dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
@@ -202,6 +203,7 @@  SECTIONS
 		__rela_dyn_start = .;
 		*(.rela*)
 	}
+#endif
 
 	/* Fake ELF header containing RPA note; for addnote */
 	.fakeelf : AT(ADDR(.fakeelf) - LOAD_OFFSET) { *(.fakeelf) }