kernel module linking (general, ipfw table, netgraph)
Eugene Grosbein
eugen at grosbein.net
Thu Sep 6 11:58:01 UTC 2018
On 06.09.2018 19:02, freeuser wrote:
> Hello,
>
> I'm working on a netgraph kernel module that modifies ipfw table contents.
> But i can not load the module, because
> kldload: an error occurred while loading the module. Please check
> dmesg(8)
> for more details.
>
> dmesg informs:
> ..
> link_elf_obj: symbol add_table_entry undefined
> linker_load_file: Unsupported file type
>
> add_table_entry is a function that modifies ipfw table, the thing is that i
> have included the relevant header files, but i don't understand how
> should i
> deal with linking. I assumed that this function will be available for
> module
> since "sysctl -b kern.function_list | tr '\0' '\n' | grep add_table" shows
> it.
>
> I am building my module using /usr/src/sys/modules/netgraph/sample and
> /usr/src/sys/netgraph/ng_sample.* as templates. On the other hand,
> ng_socket
> uses kern_kldload, "sysctl -b kern.function_list | tr '\0' '\n' | grep
> kern_kldload"
> shows it and it works without any problems.
>
> Why is that? What have i not noticed that must be done?
Perhaps, this is KBI mismatch due to VIMAGE kernel option
that changes symbols like add_table_entry to V_add_table_entry
and your kernel module should be built WITH_VIMAGE defined too
to be loadable to such a kernel.
More information about the freebsd-hackers
mailing list