[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ksyms, objdump et. al.
Hello
I need help understanding problems with a driver I'm modifying. When used,
it will produce a Kernel panic because
of "Kernel access of bad area" and gives register / stack dump. I think
its because another driver is giving me bad
pointer address's and sizes. However I don't know so I'm trying to track
down the address's of the exported globals.
I've read that you can use ksymoops to decode the dumps. However, when I
run ksymoops I get a warning message about proc/ksyms entry differs from
module. Here's the message:
mismatch on symbol sizeOfD6Mem, module says c906 5308,
/opt/npref/bin/modules/pci_rethdd.o says c906 5ab0.
I examined /proc/ksyms and it is indeed located at c906 5308.
I did a objdump on the pci_rethdd.o module and. Here's what I found:
000 006c g o .sdata 0000 0004 sizeOfD6Mem
pci_rethdd.c defines the variable like this:
size_t const sizeOfD6Mem = 0x0400 0000
So how do I interpet these values? Is objdump saying that sizeOfD6Mem is a
global (g), which uses 4 bytes (0000 0004) and is located at offset 0000
006c? How do I determine the base address to add to this offset?
Shouldn't the sum be the value shown
in the ksyms file? Where is ksymoops getting the value c906 5ab0?
JD
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
IRC Channel: irc.openprojects.net / #kernelnewbies
Web Page: http://www.kernelnewbies.org/