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.