On Tue, 2008-09-16 at 23:11 +0200, Johannes Berg wrote:
quoted
83 for (cmd = &__start___cmd; cmd < &__stop___cmd; cmd++) {
(gdb) p __start___cmd
$1 = {section = 0x0, name = 0x403d02 "info", args = 0x0, cmd = NL80211_CMD_GET_WIPHY,
nl_msg_flags = 0, idby = CIB_PHY, handler = 0x402403 <handle_info>}
(gdb) p *(&__start___cmd + 1)
$2 = {section = 0x0, name = 0x0, args = 0x0, cmd = 4209927, nl_msg_flags = 0, idby = CIB_NONE,
handler = 0x30000000001}
(gdb)
That means, __start___cmd points to "info". The next command has no
name (and appears to be a complete mess). The clever section trick
doesn't seem to work properly.
Hmm. can you send the output of
nm iw | grep __cmd
objdump -h iw
(only the __cmd section part is fine)
and
objdump -j __cmd -s iw
johannes