[pso] tema 3: warninguri ciudate

Alex Badea vamposdecampos at gmail.com
Wed May 9 09:10:06 EEST 2007


Ghervase Gabriel wrote:
> Salut.
> 
> Am niste warninguri la tema 3 si nu stiu de ce apar:
> 
> warning : __moddi3 undefined
> warning: __divdi3 undefined

Din cate-mi aduc aminte, astea sunt helper functions pentru modulo,
respectiv impartire cu operanzi de tip "long long" (sau u64/s64). In mod
normal se gasesc in libgcc.a, care in kernel nu exista :)

E posibil, chiar daca n-ai folosit explicit tipuri pe 64 de biti, sa fi
facut compilatorul extensia operanzilor ca sa incapa rezultatul;
probabil pe la o inmultire.

Ca sa gasesti codul vinovat, poti sa incerci ceva gen:

$ grep CFLAGS Kbuild
EXTRA_CFLAGS    = -g
$ objdump -r pitix.ko | grep __moddi3
00001749 R_386_PC32        __moddi3
$ addr2line -e pitix.ko 0x1749
/tmp/syms/bitmap.c:157

E posibil sa rezolvi problema rearanjand codul, cu variabile temporare,
sau cu cast-uri explicite. Daca chiar ai nevoie de operatii pe 64 de
biti, uite ce zice google:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7b09cdac5af1e13ab4b30421ae5c4b7953c26841

Bafta.


More information about the pso mailing list