]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "default exported asm symbols to zero"
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Dec 2016 16:39:00 +0000 (08:39 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Dec 2016 16:39:00 +0000 (08:39 -0800)
commitf9035a3b5df9e446056589c46ebbb50dea56c7f8
treeee212b592bc0fcf0f6523d9d664613fdb191b6d9
parentcad73a41497f2c504d08d1f9ecb6f7dd3db58661
Revert "default exported asm symbols to zero"

This reverts commit fcb8cd307c0fc0f4969452e52828d92bb226fb69.

I loved that commit because of how it explained what the problem with
newer versions of binutils were, but the actual patch itself turns out
to not work very well.

It has two problems:

 - a zero CRC value isn't actually right.  It happens to work for the
   case where both sides of the equation fail at giving the symbol a
   crc, but there are cases where the users of the exported symbol get
   the right crc (due to seeing the C declarations), but the actual
   exporting itself does not (due to the whole weak asm symbol issue).

   So then the module load fails after all - we did have a crc for the
   symbol, but we couldn't match it with the loaded module.

 - it seems that the alpha assembler has special semantics for the
   '.set' directive, and on alpha it doesn't actually set the value of
   the specified symbol at all, it is instead used to set various
   assembly modes (eg ".set noat" and ".set noreorder").

   So using ".set" to set the symbol value would just cause build
   failures on alpha.

I'm sure we'll find some other workaround for these issues (hopefully
that involves getting rid of modversions entirely some day, but people
are also talking about just using smarter tools).  But for now we'll
just fall back on commit a84c8606e837 ("Re-enable CONFIG_MODVERSIONS in
a slightly weaker form") that just let's a missing crc through.

Reported-by: Jan Stancek <jstancek@redhat.com>
Reported-by: Philip Müller <philm@manjaro.org>
Reported-by: Guenter Roeck <linux@roeck-us.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/asm-generic/export.h