v2.6.28 of the kernel seems to have changed the way module sections are created 
which prevents KGDB/GDB (v6.8) from correctly evaluating the addresses of 
functions within the module. The problem does not exist with kernel v2.6.26 but 
the problem exist with kernel 2.6.30 also. Example follows:
 
After I load a module, I can see the module section information in the 
directory /sys/module/chardev/sections as follows:
 
#ls -a
.                          .symtab
..                         .text
.bss                       .text.cleanup_module
.data                      .text.device_ioctl
.fixup                     .text.device_open
.gnu.linkonce.this_module  .text.device_read
.note.gnu.build-id         .text.device_release
.reginfo                   .text.device_write
.rodata.str1.4             .text.init_module
.strtab                    __ex_table
#
 
I then add the module symbols to gdb as follows:
 
(gdb) add-symbol file chardev.ko 0xc0745000 -s .data0xc0745e20 -s .bss 
0xc0746000 -s .reginfo 0xc0745534
 
Now when I try to get the address of a function the wrong value is returned 
i.e. all functions get the same address
 
(gdb) p /x &device_write
$1 = 0xc0745000
(gdb) p /x &device_read
$2 = 0xc0745000
(gdb) p /x &device_open
$3 = 0xc0745000
 
Tried adding explicitly as follows:
 
(gdb) add-symbol-file ../moduletest/chardev.ko 0xc0745000 -s .reginfo 
0xc0745534 -s .data 0xc0745e20 -s .bss 0xc0746000 -s .text.device_open 
0xc07450a0 -s .text.device_write 0xc07450a0 -s .text.device_read 0xc07451ac 

add symbol table from file "../moduletest/chardev.ko" at
     .text_addr = 0xc0745000
     .reginfo_addr = 0xc0745534
     .data_addr = 0xc0745e20
     .bss_addr = 0xc0746000
     .text.device_open_addr = 0xc07450a0
     .text.device_write_addr = 0xc07450a0
     .text.device_read_addr = 0xc07451ac (y or n) y 
Reading symbols from
/home/suresh/moduletest/chardev.ko...done.
(gdb) 
 
However, the result is still the same i.e.:
 
(gdb) p /x &device_write
$4 = 0xc0745000
(gdb) p /x &device_read
$5 = 0xc0745000
(gdb) p /x &device_open
$6 = 0xc0745000
 
Any help/explanation appreciated.
 
Regards, 
Suresh


      Connect more, do more and share more with Yahoo! India Mail. Learn more. 
http://in.overview.mail.yahoo.com/

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Kgdb-bugreport mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to