Re: Link modules to DYN type
- In reply to: Hans Petter Selasky : "Re: Link modules to DYN type"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 26 Apr 2023 12:19:18 UTC
> On 26. Apr 2023, at 13:38, Hans Petter Selasky <hselasky@freebsd.org> wrote: > > On 4/26/23 13:12, Konstantin Belousov wrote: >> No, in-kernel linker does not behave this way. >> Modules need to contain explicit reference to all modules they depend upon, >> using the MODULE_DEPEND() macro. Only symbols from the dependencies are >> resolved. >> All modules get an implicit reference to kernel. > > Hi Konstantin, > > Maybe I wasn't so clear. Trying again: > >> diff --git a/sys/tests/ktest.c b/sys/tests/ktest.c >> index 495fedf95dde..eb42cf062487 100644 >> --- a/sys/tests/ktest.c >> +++ b/sys/tests/ktest.c >> @@ -409,6 +409,12 @@ static moduledata_t ktestmod = { >> 0 >> }; >> +int >> +printf(const char *fmt, ...) >> +{ >> + return (0); >> +} >> + >> DECLARE_MODULE(ktestmod, ktestmod, SI_SUB_PSEUDO, SI_ORDER_ANY); >> MODULE_VERSION(ktestmod, 1); >> MODULE_DEPEND(ktestmod, netlink, 1, 1, 1); > > Then kldload ktest.ko . Which printf() function will be used if ktest.c calls printf() ? > > I would expect a warning from the kernel at least … Hi, This looks similar to this: https://lists.freebsd.org/pipermail/freebsd-stable/2015-July/082751.html https://lists.freebsd.org/pipermail/freebsd-stable/2015-July/082760.html The “not knowing” about how symbols are going to be resolved has bothered me for a while. Regards, Jan M.