MIPS: tools: Add relocs tool
authorMatt Redfearn <matt.redfearn@imgtec.com>
Thu, 31 Mar 2016 09:05:32 +0000 (10:05 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 12:02:01 +0000 (14:02 +0200)
commit766c580356ecca88b32c47b8128bec7d6d014533
treec28f4c6d7d4b1fcb6d77cc7d7222cc1bb34ef594
parentcb4253aa0f77f20be018970dbe5d01d78b930ef9
MIPS: tools: Add relocs tool

This tool is based on the x86/boot/tools/relocs tool.

It parses the relocations present in the vmlinux elf file, building a
table of relocations that will be necessary to run the kernel from an
address other than its link address. This table is inserted into the
vmlinux elf, in the .data.relocs section. The table is subsequently used
by the code in arch/mips/kernel/relocate.c (added later) to relocate the
kernel.

The tool, by default, also marks all relocation sections as 0 length.
This is due to objcopy currently being unable to handle copying the
relocations between 64 and 32 bit elf files as is done when building a
64 bit kernel.

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: kernel-hardening@lists.openwall.com
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/12981/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/boot/tools/Makefile [new file with mode: 0644]
arch/mips/boot/tools/relocs.c [new file with mode: 0644]
arch/mips/boot/tools/relocs.h [new file with mode: 0644]
arch/mips/boot/tools/relocs_32.c [new file with mode: 0644]
arch/mips/boot/tools/relocs_64.c [new file with mode: 0644]
arch/mips/boot/tools/relocs_main.c [new file with mode: 0644]