On 2020-08-27 11:12 -0700, Brian Vazquez wrote: > I've been trying to reproduce it with your config but I didn't > succeed. I also looked at the file after the preprocessor and it > looked good: > > ret = ({ __builtin_expect(!!(ops->match == fib6_rule_match), 1) ? > fib6_rule_match(rule, fl, flags) : ops->match(rule, fl, flags); }) However, in my configuration I have CONFIG_IPV6=m, and so fib6_rule_match is not available as a builtin. I think that's why ld is complaining about the undefined reference. Changing the configuration to CONFIG_IPV6=y helps, FWIW. > Note that fib4_rule_match doesn't appear as the > CONFIG_IP_MULTIPLE_TABLES is not there. > > Could you share more details on how you're compiling it and what > compiler you're using?? Tried with both gcc 9 and gcc 10 under Debian unstable, binutils 2.35. I usually use "make bindebpkg", but just running "make" is sufficient to reproduce the problem, as it happens when linking vmlinux. Cheers, Sven > On Mon, Aug 24, 2020 at 1:08 AM Sven Joachim <svenjoac@xxxxxx> wrote: >> >> On 2020-08-22 08:16 +0200, Sven Joachim wrote: >> >> > On 2020-08-21 09:23 -0700, Brian Vazquez wrote: >> > >> >> Hi Sven, >> >> >> >> Sorry for the late reply, did you still see this after: >> >> https://patchwork.ozlabs.org/project/netdev/patch/20200803131948.41736-1-yuehaibing@xxxxxxxxxx/ >> >> ?? >> > >> > That patch is apparently already in 5.9-rc1 as commit 80fbbb1672e7, so >> > yes I'm still seeing it. >> >> Still present in 5.9-rc2 as of today, I have attached my .config for >> reference. Note that I have CONFIG_IPV6_MULTIPLE_TABLES=y, but >> CONFIG_IP_MULTIPLE_TABLES is not mentioned at all there. >> >> To build the kernel, I have now deselected IPV6_MULTIPLE_TABLES. Not >> sure why this was enabled in my .config which has grown organically over >> many years. >> >> Cheers, >> Sven >> >> >> >> On Mon, Aug 17, 2020 at 12:21 AM Sven Joachim <svenjoac@xxxxxx> wrote: >> >> >> >>> On 2020-07-29 21:27 +1000, Stephen Rothwell wrote: >> >>> >> >>> > Hi all, >> >>> > >> >>> > After merging the net-next tree, today's linux-next build (i386 >> >>> defconfig) >> >>> > failed like this: >> >>> > >> >>> > x86_64-linux-gnu-ld: net/core/fib_rules.o: in function >> >>> `fib_rules_lookup': >> >>> > fib_rules.c:(.text+0x5c6): undefined reference to `fib6_rule_match' >> >>> > x86_64-linux-gnu-ld: fib_rules.c:(.text+0x5d8): undefined reference to >> >>> `fib6_rule_match' >> >>> > x86_64-linux-gnu-ld: fib_rules.c:(.text+0x64d): undefined reference to >> >>> `fib6_rule_action' >> >>> > x86_64-linux-gnu-ld: fib_rules.c:(.text+0x662): undefined reference to >> >>> `fib6_rule_action' >> >>> > x86_64-linux-gnu-ld: fib_rules.c:(.text+0x67a): undefined reference to >> >>> `fib6_rule_suppress' >> >>> > x86_64-linux-gnu-ld: fib_rules.c:(.text+0x68d): undefined reference to >> >>> `fib6_rule_suppress' >> >>> >> >>> FWIW, I saw these errors in 5.9-rc1 today, so the fix in commit >> >>> 41d707b7332f ("fib: fix fib_rules_ops indirect calls wrappers") was >> >>> apparently not sufficient. >> >>> >> >>> ,---- >> >>> | $ grep IPV6 .config >> >>> | CONFIG_IPV6=m >> >>> | # CONFIG_IPV6_ROUTER_PREF is not set >> >>> | # CONFIG_IPV6_OPTIMISTIC_DAD is not set >> >>> | # CONFIG_IPV6_MIP6 is not set >> >>> | # CONFIG_IPV6_ILA is not set >> >>> | # CONFIG_IPV6_VTI is not set >> >>> | CONFIG_IPV6_SIT=m >> >>> | # CONFIG_IPV6_SIT_6RD is not set >> >>> | CONFIG_IPV6_NDISC_NODETYPE=y >> >>> | CONFIG_IPV6_TUNNEL=m >> >>> | CONFIG_IPV6_MULTIPLE_TABLES=y >> >>> | # CONFIG_IPV6_SUBTREES is not set >> >>> | # CONFIG_IPV6_MROUTE is not set >> >>> | # CONFIG_IPV6_SEG6_LWTUNNEL is not set >> >>> | # CONFIG_IPV6_SEG6_HMAC is not set >> >>> | # CONFIG_IPV6_RPL_LWTUNNEL is not set >> >>> | # CONFIG_NF_SOCKET_IPV6 is not set >> >>> | # CONFIG_NF_TPROXY_IPV6 is not set >> >>> | # CONFIG_NF_DUP_IPV6 is not set >> >>> | # CONFIG_NF_REJECT_IPV6 is not set >> >>> | # CONFIG_NF_LOG_IPV6 is not set >> >>> | CONFIG_NF_DEFRAG_IPV6=m >> >>> `---- >> >>> >> >>> > Caused by commit >> >>> > >> >>> > b9aaec8f0be5 ("fib: use indirect call wrappers in the most common >> >>> fib_rules_ops") >> >>> > >> >>> > # CONFIG_IPV6_MULTIPLE_TABLES is not set >> >>> > >> >>> > I have reverted that commit for today. >> >>> >> >>> Cheers, >> >>> Sven >> >>>