On Wed, 2021-03-17 at 21:24 -0600, David Ahern wrote: > On 3/17/21 9:19 PM, David Miller wrote: > > From: Andreas Roeseler <andreas.a.roese...@gmail.com> > > Date: Wed, 17 Mar 2021 22:11:47 -0500 > > > > > On Mon, 2021-03-15 at 04:35 +0800, kernel test robot wrote: > > > Is there something that I'm not understanding about compiling > > > kernel > > > components modularly? How do I avoid this error? > > > > > > > You cannot reference module exported symbols from statically linked > > code. > > y > > > > Look at ipv6_stub to see how it exports IPv6 functions for v4 code. > There are a few examples under net/ipv4.
Thanks for the advice. I've been able to make some progress but I still have some questions that I have been unable to find online. What steps are required to include a function into the ipv6_stub struct? I've added the declaration of the function to the struct, but when I attempt to call it using <ipv6_stub->ipv6_dev_find()> the kernel locks up. Additionally, a typo in the declaration isn't flagged during compilation. Are there other places where I need to edit the ipv6_stub struct or include various headers? The examples I have looked at are <fib_semantics.c>, <nexthop.c>, and <udp.c> in the <net/ipv4> folder and they don't seem to do anything on the caller side of ipv6_stub, so I think I am not adding the function to ipv6_stub properly. I have been able to call other functions that currently exist in ipv6_stub, but not the one I am attempting to add, so am I missing a step? I've noticed that some functions such as <ipv6_route_input> aren't exported using EXPORT_SYMBOL when it is defined in <net/ipv6/af_inet6.c>, but it is still loaded into ipv6_stub. How can this be? Is there a different way to include symbols into ipv6_stub based on whether or not they are explicitly exported using EXPORT_SYMBOL?