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 ...
--HPS