From: David Daney <ddaney@caviumnetworks.com>
Date: Wed, 13 Apr 2011 20:46:32 +0530
Subject: [PATCH] MIPS: Octeon: add option to ignore PT_NOTE section
Some early Octeon bootloaders cannot process PT_NOTE program
headers as reported in numerous sections of the web, here is
an example http://www.spinics.net/lists/mips/msg37799.html
Loading usually fails with such an error ...
Error allocating memory for elf image!
The work around usually is to strip the .notes section by using
such a command $mips-gnu-strip -R .notes vmlinux -o fixed-vmlinux
It is expected that the vmlinux image got after compilation be
bootable. Add a Kconfig option to ignore the PT_NOTE section.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Signed-off-by: Philby John <pjohn@mvista.com>
---
arch/mips/cavium-octeon/Kconfig | 8 ++++++++
arch/mips/kernel/vmlinux.lds.S | 6 ++++++
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/arch/mips/cavium-octeon/Kconfig b/arch/mips/cavium-octeon/Kconfig
index caae228..ddecee3 100644
--- a/arch/mips/cavium-octeon/Kconfig
+++ b/arch/mips/cavium-octeon/Kconfig
@@ -90,6 +90,14 @@ config CAVIUM_OCTEON_LOCK_L2_MEMCPY
help
Lock the kernel's implementation of memcpy() into L2.
+config DISABLE_ELF_NOTE_HEADER
+ bool "Disable the creation of the ELF PT_NOTE program header in vmlinux"
+ depends on CPU_CAVIUM_OCTEON
+ help
+ Some early Octeon bootloaders cannot process PT_NOTE program
+ headers. Select y to omit these headers so that the kernel
+ can be loaded with older bootloaders.
+
config ARCH_SPARSEMEM_ENABLE
def_bool y
select SPARSEMEM_STATIC
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index 832afbb..0536910 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -8,7 +8,9 @@ OUTPUT_ARCH(mips)
ENTRY(kernel_entry)
PHDRS {
text PT_LOAD FLAGS(7); /* RWX */
+#ifndef CONFIG_DISABLE_ELF_NOTE_HEADER
note PT_NOTE FLAGS(4); /* R__ */
+#endif
}
#ifdef CONFIG_32BIT
@@ -62,7 +64,11 @@ SECTIONS
__stop___dbe_table = .;
}
+#ifndef CONFIG_DISABLE_ELF_NOTE_HEADER
NOTES :text :note
+#else
+ NOTES :text
+#endif
.dummy : { *(.dummy) } :text
RODATA
--
1.7.4
|