fix alignment error in sparc64 linker script
PATCH 1/1 fix alignment error in sparc64 linker script
Hi Linus.
Davem asked me to look at the sparc64 linker script. It used a hardcoded alignment value of 8192 where the correct size is PAGE_SIZE (which may be 8192).
I have made both a minimal fix (see below) and
a version where the linker script becomes as readable as linker scripts can be.
== Fix that includes cleanup of vmlinux.lds for sparc64
The fix touches asm-generic/vmlinux.lds.h but will not impact other architectures.
The patches can be pulled from:
git pull git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix.git
Patches has been sent to peer review at lkml + sparclinux. David asked me to mark them "Signed-off-by" but
my understanding are that Signed-off-by: document the path of a patch so they are marked "Acked-by:".
Here is shortlog + diffstat.
Sam Ravnborg (5):
sparc64: ident vmlinux.lds.S
asm-generic: add RO_DATA which take alignment parameter
sparc64: use PAGE_SIZE in vmlinux.lds
asm-generic: add INITRAMFS to vmlinux.lds.h
sparc64: use INITRAMFS in vmlinux.lds.h
arch/sparc64/kernel/vmlinux.lds.S | 241 +++++++++++++++++++++---------------- include/asm-generic/vmlinux.lds.h | 22 +++- 2 files changed, 159 insertions(+), 104 deletions(-)
== The minimal fix
The minimal fix would be to just replace use of 8192 with PAGE_SIZE. This is indeed a much smaller patch.
If you prefer the smaller patch considering the -rc progress I
have pushed that out in the branch 'minimal'.
In this case please pull from the branch minimal:
git pull git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix.git minimal
diffstat and diff for the minimal fix below.
Sam
arch/sparc64/kernel/vmlinux.lds.S | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
arch/sparc64/kernel/vmlinux.lds.S +5 -4
@@ -1,5 +1,6 @@ /* ld script to make UltraLinux kernel */ +#include <asm/page.h> #include <asm-generic/vmlinux.lds.h> OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
@@ -44,7 +45,7 @@ SECTIONS __ex_table : { *(__ex_table) } __stop___ex_table = .; - . = ALIGN(8192); + . = ALIGN(PAGE_SIZE); __init_begin = .; .init.text : { _sinittext = .;
@@ -83,17 +84,17 @@ SECTIONS __sun4v_2insn_patch_end = .; #ifdef CONFIG_BLK_DEV_INITRD - . = ALIGN(8192); + . = ALIGN(PAGE_SIZE); __initramfs_start = .; .init.ramfs : { *(.init.ramfs) } __initramfs_end = .; #endif - . = ALIGN(8192); + . = ALIGN(PAGE_SIZE); __per_cpu_start = .; .data.percpu : { *(.data.percpu) } __per_cpu_end = .; - . = ALIGN(8192); + . = ALIGN(PAGE_SIZE); __init_end = .; __bss_start = .; .sbss : { *(.sbss) *(.scommon) }