Re: unresolved symbol __udivsi3_i4

Randy.Dunlap
2004-09-24T23:21:01Z

On Thu, 23 Sep 2004 21:49:52 -0700 (PDT) Donald Duckie wrote:

| hi randy!
|
| thank you very much for your help.
|
| it is indeed the % (mod) operator that generates the
| unresolved symbol. it is also true with the /
| (division) operator.
|
| is there any patch on this for
| 2.4.18-sh? or how will i do away with this problem
| aside from commenting it out from the code?

Sorry, I don't track sh changes. However, I do see in 2.4.26
that arch/sh/lib/udivdi3.c contains a __udivdi3() function,
so perhaps you could manage to use it or implement something
similar to it.

Or perhaps you could use a different kernel version.

| btw, the previous unresolved symbol problems were
| already solved. i just didn't copy the depmod
| generated files in the running machine, that was why
| those occured.

Good.

--
~Randy

| --- "Randy.Dunlap" <rddunlap@osdl.org> wrote:
|
| > On Thu, 23 Sep 2004 19:10:50 -0700 (PDT) Donald
| > Duckie wrote:
| >
| > | hi!
| > |
| > | can somebody please help me how to overcome this
| > | problem:
| > | unresolved symbol __udivsi3_i4
| > |
| > | I compiled the snull files that i got from
| > |
| >
| http://www.oreilly.com.tw/editor_column/a138_read.htmland
| > | ran depmod -a -F /proc/ksyms 2.4.18 snull.o
| > |
| > | And in another machine (my running machine), I got
| > the
| > | following files from my compilation machine:
| > | snull.o
| > | /lib/modules/2.4.18/*
| > |
| > | In my running machine, I ran modprobe but got this
| > | error:
| > | Using
| > /lib/modules/2.4.18-sh/kernel/drivers/net/snull.
| > | <cut>
| > | modprobe: unresolved symbol __udivsi3_i4
| > | <cut>
| >
| > Let me try this again. I suspect that the problem
| > is the '%' (mod)
| > operator at line 351. Can you just delete part of
| > that if-test
| > to prove or disprove my suspicion?
| >
| >
| > | The gcc version that is used is:
| > | [aprhodite@aphrodite2 bin]$ sh-linux-gcc -v
| > | Reading specs from
| > | /usr/lib/gcc-lib/sh-linux/3.0.3/specs
| > | Configured with: ../configure --prefix=/usr
| > | --mandir=/usr/share/man --target=sh-linux
| > | --host=i686-pc-linux-gnu --build=i
| > | 686-pc-linux-gnu --disable-c99 --disable-nls
| > | --enable-languages=c,c++ --with-system-zlib
| > | --with-gxx-include-dir=/usr/sh-
| > | linux/include/g++-v3
| > | --includedir=/usr/sh-linux/include
| > | --enable-threads=posix --enable-long-long
| > | Thread model: posix
| > | gcc version 3.0.3
| > |
| > |
| > | Running nm -l-s snull.o
| > | 00000000 a *ABS*
| > | <cut>
| > | U __udivsi3_i4
| > | /home/aphrodite/snull/snull3/snull/snull.c:355
| > | <cut>
| > |
| > |
| > | the block in snull.c that contains ine 355 is:
| > | 352 if (lockup && ((priv->stats.tx_packets
| > +
| > | 1) % lockup) == 0) {
| > | 353 /* Simulate a dropped transmit
| > | interrupt */
| > | 354 netif_stop_queue(dev);
| > | 355 PDEBUG("Simulate lockup at %ld,
| > txp
| > | %ld\n", jiffies,
| > | 356 (unsigned long)
| > | priv->stats.tx_packets);
| > | 357 }
| > | (which seems to be okey)
| > |
| > |
| > | The only modification to the downloaded snull
| > files is
| > | on snull.c:
| > | 30 //#include <linux/malloc.h> /* kmalloc()
| > */
| > | 31 #include <linux/slab.h> /* kmalloc()
| > | deprecated use slab.h instead*/
| > |
| > |
| > | can anyone please tell me how to deal with this
| > | unresolved symbol __udivsi3_i4?
| > |
| > |
| > | thank you very much.
| > | -donald