tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

modload(8) v.s. alias



Hi,

modload(8) fails if some depended functions are alias, at least
on m68k. For example:

    # uname -a
    NetBSD  9.99.49 NetBSD 9.99.49 (GENERIC) #6: Mon Mar  9 22:53:07 JST 2020  rin@latipes:/build/src/sys/arch/sun2/compile/GENERIC sun2
    # modload nfs
    [xxx.xxx] kobj_checksyms, 998: [nfs]: linker error: symbol '__ffssi2' not found
    [xxx.xxx] WARNING: module error: unable to affix module 'nfs', error 8
    modload: nfs: Exec format error
    #

Here, __ffssi4 is weak alias of ffs on m68k:

    # nm /netbsd | grep __ffssi2
    0012327c W __ffssi2
    # nm /netbsd | grep 0012327c
    0012327c W __ffssi2
    0012327c T ffs
    #

If this symbol is turned into a ``real'' object by attached patch,
modload(8) and loaded module work fine:

    # nm /netbsd | grep __ffssi4
    0012327c T __ffssi2
    # modload nfs
    # mount_nfs server:/path /mnt
    # ls /mnt
    foo bar baz ...
    #

Is this a bug or feature? How can I fix this problem?

Thanks,
rin
----
Index: common/lib/libc/arch/m68k/string/ffs.S
===================================================================
RCS file: /cvsroot/src/common/lib/libc/arch/m68k/string/ffs.S,v
retrieving revision 1.7
diff -p -u -r1.7 ffs.S
--- common/lib/libc/arch/m68k/string/ffs.S	9 Mar 2020 13:36:10 -0000	1.7
+++ common/lib/libc/arch/m68k/string/ffs.S	9 Mar 2020 14:09:13 -0000
@@ -45,7 +45,11 @@
/* bit = ffs(value) */ +#ifdef _LIBC
 WEAK_ALIAS(__ffssi2,ffs)
+#else /* KERNEL */
+#define ffs __ffssi2
+#endif
#if (!defined(__mc68010__) && !defined(__mcoldfire__)) || defined(__mcfisac__)

Home | Main Index | Thread Index | Old Index