Mysterious unresolved externals in driver

Eric & Helena Fowler (sockeye@rmii.com)
Thu, 9 Jul 1998 16:14:09 -0600


------ =_NextPart_000_01BDAB54.9C6F8A00
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

I am 'writing' a simple char driver as a self-tutorial by =
copy-n-tweaking out of 'LINUX Device Drivers'. I had a simple 'scull' =
driver running (not correctly, but running), then made a few edits and =
rebuilt. When I run insmod, I get an error, 'Unresolved symbol: =
__divdi3'. There is indeed no such symbol in my file, but there never =
was. Running 'nm' flags a whole host of symbols as unresolved, including =
register_chrdev() and others, all from the kernel(kmalloc, kfree, etc). =
Yes, the file is compiling and linking with the same makefile, on the =
same machine, with the same set of input files as before. Yes, it did =
compile, link, load, and run before. Moreover, the sample stuff I got =
with the book still works fine (compile, link, and load). Yes, I did rm =
-f /dev/mydev, rmmod mydev, reboot, and recreate the device and run =
insmod again. Yes, I touched the input files and forced a complete =
rebuild.=20
Naturally, we must suspect my edits are to blame, but I have reviewed my =
changes and am unable to see what could be screwing up linkages to =
kernel symbols.=20
So ... what's wrong? In general, how do I make sure I am linking in the =
kernel stuff properly? Any ideas why this went south? I am on Red Hat =
5.0, 2.0.31 kernel, using stock GNU tools which I
have not changed lately. The entire project is attached for masochists - =
it's not very big. If someone could just try to load the binary and let =
me know if it worked, that would help.=20
Thanks gobs

=3DEric

PS. Yes, I did define __KERNEL__ and MODULE at the top of my only source
file, before the #include's.

=20

------ =_NextPart_000_01BDAB54.9C6F8A00
Content-Type: application/octet-stream; name="MAIN.C"
Content-Transfer-Encoding: base64

I2lmbmRlZiBfX0tFUk5FTF9fCiNkZWZpbmUgX19LRVJORUxfXwojZW5kaWYKCiNpZm5kZWYgTU9E
VUxFCiNkZWZpbmUgTU9EVUxFCiNlbmRpZgoKI2RlZmluZSBfX05PX1ZFUlNJT05fXwoKI2luY2x1
ZGUgPGxpbnV4L21vZHVsZS5oPgojaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgojaW5jbHVkZSA8
bGludXgva2VybmVsLmg+IApjaGFyIGtlcm5lbF92ZXJzaW9uW10gPSBVVFNfUkVMRUFTRTsKI2lu
Y2x1ZGUgPGxpbnV4L21hbGxvYy5oPgojaW5jbHVkZSA8bGludXgvZnMuaD4KI2luY2x1ZGUgPGxp
bnV4L2Vycm5vLmg+CiNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgojaW5jbHVkZSA8bGludXgvcHJv
Y19mcy5oPgojaW5jbHVkZSA8bGludXgvZmNudGwuaD4KCiNpbmNsdWRlICJkMC5oIgogCgppbnQg
ZDBfbWFqb3IgPSBEMF9NQUpPUjsgCmludCBkMF9ucl9kZXZzID0gRDBfTlJfREVWUzsgCmludCBk
MF9xdWFudHVtID0gRDBfUVVBTlRVTTsgCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGQwX2ZvcHMg
PSAKewogIE5VTEwsCn07CgogIAppbnQgaW5pdF9tb2R1bGUodm9pZCkKewogIC8vICBpbnQgbnVt
OyAKIHByaW50ayhLRVJOX0RFQlVHICJFbnRlcmluZyBpbml0X21vZHVsZSgpIik7CiAvLyBudW0g
PSByZWdpc3Rlcl9jaHJkZXYoZDBfbWFqb3IsICJkMCIsICZkMF9mb3BzKTsKIC8vIHByaW50ayhL
RVJOX0RFQlVHICJyZWdpc3Rlcl9jaHJkZXYoKSByZXR1cm5lZCAlZCIsIG51bSk7CiAgcmV0dXJu
IC1FSU5WQUw7Cn0KCnZvaWQgY2xlYW51cF9tb2R1bGUodm9pZCkKewogIHVucmVnaXN0ZXJfY2hy
ZGV2KGQwX21ham9yLCAiZDAiKTsgCn0KCgoKCgoKCgoKCgoKCg==

------ =_NextPart_000_01BDAB54.9C6F8A00
Content-Type: application/octet-stream; name="D0.H"
Content-Transfer-Encoding: base64

I2RlZmluZSBEMF9NQUpPUiAwOyAKI2RlZmluZSBEMF9OUl9ERVZTIDE7IAojZGVmaW5lIEQwX1FV
QU5UVU0gMTsgCg==

------ =_NextPart_000_01BDAB54.9C6F8A00
Content-Type: application/octet-stream; name="MAKEFILE"
Content-Transfer-Encoding: base64

U1JDUyA9IG1haW4uYyAKSEVBREVSUyA9IGQwLmggCgpkMC5vIDogJChTUkNTKSAkKEhFQURFUlMp
CgljYyAtYyAtbyBkMC5vICQoU1JDUykK

------ =_NextPart_000_01BDAB54.9C6F8A00
Content-Type: application/octet-stream; name="D0.O"
Content-Transfer-Encoding: base64

f0VMRgEBAQAAAAAAAAAAAAEAAwABAAAAAAAAAAAAAABEAQAAAAAAADQAAAAAACgACwAIAFWJ5WgA
AAAA6Pz///+DxAS46v///+sBkMnDifZVieVoGgAAAKEAAAAAUOj8////g8QIycMyLjAuMzEAAAAA
AAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAIAAAAAAAAAAEAAAAwMS4wMQAAADw3PkVudGVyaW5nIGluaXRfbW9kdWxlKCkAZDAAAEdD
QzogKEdOVSkgMi43LjIuMwAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAudGV4dAAucmVsLnRl
eHQALmRhdGEALmJzcwAubm90ZQAucm9kYXRhAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAABgAAAAAAAAA0AAAANAAAAAAAAAAAAAAABAAA
AAAAAAAhAAAACQAAAAAAAAAAAAAAoAQAACgAAAAJAAAAAQAAAAQAAAAIAAAAKwAAAAEAAAADAAAA
AAAAAGgAAABIAAAAAAAAAAAAAAAEAAAAAAAAADEAAAAIAAAAAwAAAAAAAACwAAAAAAAAAAAAAAAA
AAAABAAAAAAAAAA2AAAABwAAAAAAAAAAAAAAsAAAABQAAAAAAAAAAAAAAAEAAAAAAAAAPAAAAAEA
AAACAAAAAAAAAMQAAAAdAAAAAAAAAAAAAAABAAAAAAAAAEQAAAABAAAAAAAAAAAAAADhAAAAFAAA
AAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAA9QAAAE0AAAAAAAAAAAAAAAEAAAAAAAAA
AQAAAAIAAAAAAAAAAAAAAPwCAAAgAQAACgAAAAkAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAAAc
BAAAgQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABADx/wAA
AAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAADAAMAAAAAAAAAAAAAAAAAAwAEAAgAAAAAAAAAAAAA
AAAAAQAAAAAAAAAAAAAAAAADAAYAAAAAAAAAAAAAAAAAAwAFAAAAAAAAAAAAAAAAAAMABwAXAAAA
AAAAAAcAAAARAAMAJgAAAAgAAAAEAAAAEQADAC8AAAAMAAAABAAAABEAAwA6AAAAEAAAAAQAAAAR
AAMARQAAABQAAAA0AAAAEQADAE0AAAAAAAAAGgAAABIAAQBZAAAAAAAAAAAAAAAQAAAAYAAAABwA
AAAYAAAAEgABAG8AAAAAAAAAAAAAABAAAAAAbWFpbi5jAGdjYzJfY29tcGlsZWQuAGtlcm5lbF92
ZXJzaW9uAGQwX21ham9yAGQwX25yX2RldnMAZDBfcXVhbnR1bQBkMF9mb3BzAGluaXRfbW9kdWxl
AHByaW50awBjbGVhbnVwX21vZHVsZQB1bnJlZ2lzdGVyX2NocmRldgAAAAAEAAAAAQYAAAkAAAAC
DwAAIAAAAAEGAAAlAAAAAQoAACsAAAACEQAA

------ =_NextPart_000_01BDAB54.9C6F8A00--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu