diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2007-02-01 14:52:23 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-02 01:17:06 +0100 |
commit | 2a3d4f1f1f839e354ebd7d40b2d5d8ac8481a930 (patch) | |
tree | a22da6bd95c69ab7771b8e7870351bfa15b8025d /arch | |
parent | [PATCH] fork_idle() should be __cpuinit, not __devinit (diff) | |
download | linux-2a3d4f1f1f839e354ebd7d40b2d5d8ac8481a930.tar.xz linux-2a3d4f1f1f839e354ebd7d40b2d5d8ac8481a930.zip |
[PATCH] __crc_... is intended to be absolute
i386 boot/compressed/relocs checks for absolute symbols and warns about
unexpected ones. If you build with modversions, you get ~2500 warnings
about __crc_<symbol>. These suckers are really absolute symbols - we
do _not_ want to modify them on relocation.
They are generated by genksyms - EXPORT_... generates a weak alias, then
genksyms produces an ld script with __crc_<symbol> = <checksum> and it's
fed to ld to produce the final object file. Their only use is to match
kernel and module at modprobe time; they _must_ be absolute.
boot/compressed/relocs has a whitelist of known absolute symbols, but
it doesn't know about __crc_... stuff. As the result, we get shitloads
of false positives on any ld(1) version.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/boot/compressed/relocs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/i386/boot/compressed/relocs.c b/arch/i386/boot/compressed/relocs.c index 468da89153c4..881951ca03e1 100644 --- a/arch/i386/boot/compressed/relocs.c +++ b/arch/i386/boot/compressed/relocs.c @@ -43,6 +43,8 @@ static int is_safe_abs_reloc(const char* sym_name) /* Match found */ return 1; } + if (strncmp(sym_name, "__crc_", 6) == 0) + return 1; return 0; } |