Re: breaking modules

From: Eugene Grosbein <eugen_at_grosbein.net>
Date: Tue, 03 May 2022 20:51:52 UTC
04.05.2022 2:42, Ed Maste wrote:

> On Fri, 29 Apr 2022 at 14:43, Eugene Grosbein <eugen@grosbein.net> wrote:
>>
>> For example:
>>
>> if_em           https://cgit.freebsd.org/src/commit/?id=c0460cf2e42d2819c1f191a1d6e1b3dc0c7ea010
>> if_epair        https://cgit.freebsd.org/src/commit/?id=7a382e744b0b0ba9b51dc34bfa0cd1515f744f25
>> linuxkpi        https://cgit.freebsd.org/src/commit/?id=f5a2e7b0e8483bf51519046fd149a6a31acef6b1
> 
> Ah, yes. We should add a CI task to build all modules outside of the
> kernel tree.

Also, there are multiple modules that can be built standalone just fine
but cannot be loaded with GENERIC kernel. In case of stable/12 examples are:

ipfw.ko;
if_lagg.ko;
if_bridge.ko and bridgestp.ko;
linux_common.ko, linprocfs.ko, linux.ko and linux64.ko;
h_ertt.ko and cc_chd.ko and surely many others.

Noted modules are built standalone without VIMAGE support but GENERIC has options VIMAGE,
hence ABI incompatibility. Somewhat hackish workaround is the following line added to /etc/src.conf:

CFLAGS+=        -DVIMAGE=1

This restores ABI compatibility. Unfortunately, we have no VIMAGE= nor WITH_VIMAGE= knob.
See also https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230009
that contains a patch by ae@