x86: Regex support and known-movable symbols for relocs, fix _end
authorH. Peter Anvin <hpa@zytor.com>
Mon, 14 Dec 2009 21:55:20 +0000 (13:55 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 14 Dec 2009 21:55:20 +0000 (13:55 -0800)
commit873b5271f878a11729fb4602c6ce967d0ff81119
treed8f50af1ba3b6f331f618d291417f48c44d578b6
parent494c2ebfb287eb10b229415063099e3700639028
x86: Regex support and known-movable symbols for relocs, fix _end

This adds a new category of symbols to the relocs program: symbols
which are known to be relative, even though the linker emits them as
absolute; this is the case for symbols that live in the linker script,
which currently applies to _end.

Unfortunately the previous workaround of putting _end in its own empty
section was defeated by newer binutils, which remove empty sections
completely.

This patch also changes the symbol matching to use regular expressions
instead of hardcoded C for specific patterns.

This is a decidedly non-minimal patch: a modified version of the
relocs program is used as part of the Syslinux build, and this  is
basically a backport to Linux of some of those changes; they have
thus been well tested.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
LKML-Reference: <4AF86211.3070103@zytor.com>
Acked-by: Michal Marek <mmarek@suse.cz>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
arch/x86/boot/compressed/relocs.c
arch/x86/kernel/vmlinux.lds.S