Unresolved symbols and exported symbols version
Hello all,
I've got a stock 2.4.20 kernel upon which I applied the latest ACPI
patch (acpi-20021212-2.4.20.diff.gz). After recompiling it together with the modules, rebooting, ``modprobe battery'' complains about unresolved symbols. I lookup these symbols in ``System.map'' and they seem indeed present! A deeper investigation in /proc/ksyms shows some oddity (at least for me) in kernel symbol versioning. I've been able to work around the issue by exporting the symbols in ``acpi_ksyms.c'' as ``EXPORT_SYMBOL_NOVERS''.
The following transcript shows the difference between the unversioned
symbols vs. versioned ones:
------------8<------------8<------------8<------------8<------------ Script started on Sat Dec 28 15:50:51 2002 [root@Thorin:~root@Thorin root]# cat /proc/ksyms
[.. these are versioned ..]c017fdb0 acpi_get_handle_R__ver_acpi_get_handlec01800b0 acpi_get_parent_R__ver_acpi_get_parentc0180040 acpi_get_type_R__ver_acpi_get_typec017fe80 acpi_get_name_R__ver_acpi_get_namec017ff20 acpi_get_object_info_R__ver_acpi_get_object_info [.. whereas a typical versioned symbol looks like : ..] c0217f80 rb_insert_color_Raa2b5a22
[..]
[.. these are my messed up EXPORT_SYMBOL_NOVERS ones ..] c01888e0 acpi_bus_get_devicec0188920 acpi_bus_get_statusc0188990 acpi_bus_get_powerc0188a50 acpi_bus_set_power
[..]
[root@Thorin root]# depmod -ae
depmod: *** Unresolved symbols in /lib/modules/2.4.20/kernel/drivers/acpi/ac.o
depmod: acpi_install_notify_handler
depmod: acpi_evaluate_integer
depmod: acpi_remove_notify_handler
depmod: *** Unresolved symbols in /lib/modules/2.4.20/kernel/drivers/acpi/battery.o
depmod: acpi_os_free
depmod: acpi_install_notify_handler
depmod: acpi_extract_package
depmod: acpi_evaluate_object
depmod: acpi_get_handle
[..]
[root@Thorin root]# exit
Script done on Sat Dec 28 15:51:25 2002 ------------8<------------8<------------8<------------8<------------
Note that if I do ``depmod -F System.map -ae'' I don't get any
error...
In short: if I replace every EXPORT_SYMBOL in ``acpi_ksyms.c'' withEXPORT_SYMBOL_NOVERS, the unresolved symbols go away, the modules load and everything seems to work right.
My modutils/binutils, etc. meet the requirements of this kernel.
I don't know if this is a non-issue, maybe that's just me not
understanding enough of how modules' versions work... :)
thanks,
Signature · 7 lines
Aragorn ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf