On Mon, Jul 26, 2004 at 05:14:36PM +0200, Gilles Chanteperdrix wrote: > > I've just noticed a namespace pollution. A linux-2.6.x kernel (2.6.7 > > here) exports by default a symbol called 'sem_init'. > > > > # lsmod > > Module Size Used by > > adeos 26208 0 > > 3c59x 36296 0 > > # cat /proc/kallsyms |grep sem_init > > c0381ab0 t sem_init > > > > This collides with the sem_init symbol from the posix skin. > > Ok. I just wonder how insmod happens to work then... And I do not see a > simple fix : the only thing which comes to my mind is the dreaded > "posix_override.h", which I had to use in user-space to avoid > pollution.
I think there is no reason to panic. It seems that the lowercase 't' means, that it's a internal text (=code) symbol. A uppercase 'T' means global symbol. See manpage of 'nm'. This must be new for linux-2.6.x If I load the posix.ko all symbols are lowercase 't', probably due to missing EXPORT_SYMBOL(). This also explains why I cannot load a modul using this symbols. (I got undef kernel symbols) After adding EXPORT_SYMBOLS all works fine... hth - Marc -- #!/bin/sh set - `type $0` 'tr "[a-zA-Z]" "[n-za-mN-ZA-M]"';while [ "$2" != "" ];do \ shift;done; echo 'frq -a -rc '`echo "$0"| $1 `'>$UBZR/.`rpub signature|'`\ echo $1|$1`'`;rpub "Jr ner fvtangher bs obet. Erfvfgnapr vf shgvyr!"'|$1|sh
