percpu section failure with Gold linker

From: Jan Engelhardt
Date: Fri Nov 23 2012 - 15:43:56 EST


Hi,


when compiling a kernel with the gold linker (3.7.0-rc6 26d29d06ea0204,
gcc-4.7 and binutils-2.23 in my case), certain pcpu symbols are
seemingly errneously copied over from .o files to .ko files, leading to
a hard warning during depmod:

gold$ make -j8 LD=gold HOSTLD=gold
gold$ make modules_install INSTALL_MOD_PATH=/tmp/foo
[...]
WARNING: /tmp/foo/lib/modules/3.7.0-rc6-jng6-default+
/kernel/net/rds/rds_tcp.ko needs unknown symbol
__pcpu_scope_rds_tcp_stats

This happens with many modules using percpu; looking at things with nm
reveals:

gold/net/ipv6$ nm ipv6.o | grep __pcpu_
0000000000000000 D __pcpu_unique_ipv6_cookie_scratch
gold/net/ipv6$ nm ipv6.ko | grep __pcpu_
U __pcpu_unique_ipv6_cookie_scratch

On the other hand, in a linux tree built with the original ld (ld.bfd),
things look like:

bfd$ make -j8
[...]
bfd/net/ipv6$ nm ipv6.o | grep pcpu
0000000000000000 D __pcpu_unique_ipv6_cookie_scratch
bfd/net/ipv6$ nm ipv6.ko | grep pcpu
(no result)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/