mdb写経/カーネル実行時リンカー

2012/09/21

dcmds

::ctfinfo
モジュールの CTF(Compact ANSI-C Type Format) に関する情報を表示します。
> ::ctfinfo
MODULE                                  CTFDATA CTFSIZE
unix                           ffffff00c7bd5000 87877
genunix                        ffffff00c8398000 430688
specfs                         ffffff00c7bea920 538
fifofs                         ffffff00c7bea748 470
dtrace                         ffffff00cf7b3000 4271
devfs                          ffffff00c7beab3c 493
dev                            ffffff00c8401260 3319
dls                            ffffff00c8957000 31605
mac                            ffffff00c84ce000 50572
procfs                         ffffff00c865c000 4383

    :
    :

::modctl
指定された modctl、またはカーネルのアクティブな modctl 構造体のテーブルを表示します。
> ::modctl
          MODCTL           MODULE   BITS FLAGS REF FILE
         183a578          1861960    pli 0x01   0 /platform/sun4u/kernel/sparcv9/unix
         18660e8          1866190    pli 0x01   0 genunix
         18bb9b8          18bba68    pli 0x01   0 misc/platmod
         18bc0d8          18bc190    pli 0x01   0 cpu/SUNW,UltraSPARC-IIe
     300000afea8                0        0x00   0 misc/cl_bootstrap
     300000afe08      300000b7e40     li 0x00   3 fs/specfs
     300000afcc8      300000b7cc0     li 0x00   2 fs/fifofs
     300000afc28      30002e24dc0     li 0x00   1 drv/dtrace
     300000afd68      300000b7b40     li 0x00   0 fs/devfs
     300000afb88                0        0x00   0 misc/swapgeneric
     300000afae8                0        0x00   0 sys/lbl_edition
     300000afa48      300000b7840     li 0x00   1 sched/TS
     300000af9a8      300000b76c0     li 0x00   0 sched/TS_DPTBL
     300000af908      300000b7540     li 0x00   1 fs/ufs
     300000af868      300000b73c0     li 0x00   1 misc/fssnap_if
     300000af728      300000b7240     li 0x00   0 drv/rootnex
     300000af688      300000b70c0     li 0x00   0 drv/options
     300000af5e8      300000b6f40     li 0x00   0 drv/sad
     300000af548      300000b6dc0     li 0x00   0 drv/pseudo
     300000af4a8      300000b6c40     li 0x00   0 drv/clone
     300000af408      300000b6ac0     li 0x00   0 drv/scsi_vhci
     300000af368      300000b6940     li 0x00   5 misc/scsi
    :
    :
address ::modent
mod_hash_t 構造体の mod_hash_entry についての情報を表示します。
> 3000a056a00::print -a mod_hash_t
3000a056a00 {
    3000a056a00 mh_contents = {
        3000a056a00 _opaque = [ 0 ]
    }
    3000a056a08 mh_name = 0x300143f3378 "dls_link_t_30014455d98_hash"
    3000a056a10 mh_sleep = 0
    3000a056a18 mh_nchains = 0x43
    3000a056a20 mh_kdtor = mod_hash_null_keydtor
    3000a056a28 mh_vdtor = mod_hash_null_valdtor
    3000a056a30 mh_keycmp = mod_hash_idkey_cmp
    3000a056a38 mh_hashalg = mod_hash_byid
    3000a056a40 mh_hashalg_data = 0x47
    3000a056a48 mh_next = 0x3000bd68198
    3000a056a50 mh_stat = {
        3000a056a50 mhs_hit = 0xa89a
        3000a056a58 mhs_miss = 0xc
        3000a056a60 mhs_coll = 0
        3000a056a68 mhs_nelems = 0x4
        3000a056a70 mhs_nomem = 0
    }
    3000a056a78 mh_entries = [ 0x300024e65d8 ]
}
> 0x300024e65d8::modent
            ADDR              VAL              KEY
     300024e65d8      3000c481540          86dd000

[ address ] ::modhash [-ceht] [-k key] [-v val] [-i index]
mod_hash_t データベースの情報を表示します。アドレスが提供されていない場合、システム内のすべての登録されたハッシュの要約が表示されます。アドレスを指定した場合、詳細な情報を表示します。
-t ハッシュタイプを表示します
-e ハッシュのエレメントを表示します
-k key,
-v value,
-i index
指定した条件のエレメントのみを表示します
-h アドレスの代わりにハッシュインデックスを表示します
> ::modhash
            ADDR CHAINS ELEMS MAXLEN MAXIDX NAME
ffffff00e29a3580     1f     0      0      0 bpf_dev_tab
ffffff00d12fd900     43     0      0      0 iptun_hash
ffffff00dc93dc00     40     0      0      0 aggr_grp_hash
ffffff00dc93f640     40     0      0      0 vnic_hash
ffffff00cc3f44c0     43     3      1      0 dls_link_t_ffffff00ce079e68_hash
ffffff00cf2806c0     40     1      1      a softmac_hash
ffffff00cecbc580    137     2      1     b0 sticlts_sockaddr_hash
ffffff00cecba580    136     2      1     42 sticlts_ai_hash
ffffff00cecb8580    137     8      2     e8 sticots_sockaddr_hash
ffffff00cecb6580    136    14      1      6 sticots_ai_hash
ffffff00cecb4580    137     3      1     53 ticlts_addr_hash
ffffff00cecb2580    136     4      1     2c ticlts_ai_hash
ffffff00cecb0580    137     5      1     30 ticotsord_addr_hash
ffffff00cecae580    136     6      1     34 ticotsord_ai_hash
ffffff00cecac580    137     2      1     53 ticots_addr_hash
ffffff00cecaa580    136     3      1     3a ticots_ai_hash
ffffff00c77f6d00     65     0      0      0 gcgrp6_hash
ffffff00c77f7680     65     0      0      0 gcgrp4_hash
ffffff00c77fe040     65     0      0      0 gcdb_hash
ffffff00ca53d440     40     0      0      0 ipmp_grp_hash
ffffff00cafb6740     20     0      0      0 dld_autopush_hash
    :
    :
> ffffff00dc93f640::modhash
mod_hash_t ffffff00dc93f640 vnic_hash:
        Key comparator: fffffffffbb83e2c mod_hash_idkey_cmp
        Type: id
        Sleep flag = false, alloc failed = 0
        Number of chains = 0x40, elements = 0
        Hits = 0, misses = 0, dups = 0
        Maximum chain length = 0 (at index 0, first entry 0)
> 3000a056a00::modhash -e
            ADDR              VAL              KEY
     300024e65d8      3000c481540          86dd000
     30014445f38      3000c480708           806000
     300024e6d10      3000ae5b630           800000
     30014445800      30016a075e0          8035000

address ::modhdrs
指定された modctl 構造体のアドレスを使用して、モジュールの ELF 実行可能ヘッダーとセクションヘッダーを出力します。
> fffffffffbc43c30::modhdrs

ELF Header
  ei_magic:  { 0x7f, E, L, F }
  ei_class:  2                       ei_data: 1
  e_machine: 62                    e_version: 1
  e_type:    2
  e_flags:   0
  e_entry:   0x          c00000  e_ehsize:          64  e_shstrndx: 19
  e_shoff:   0x          201c78  e_shentsize:       64  e_shnum:    2
  e_phoff:   0x              40  e_phentsize:       56  e_phnum:    7

Section Header[0]:
    sh_addr:      0xffffff00c5afb080  sh_flags:   [ 0 ]
    sh_size:      0x2e3b0             sh_type:    [ SHT_SYMTAB ]
    sh_offset:    0x0                 sh_entsize: 0x18
    sh_link:      0x1                 sh_info:    0xc5a
    sh_addralign: 0x8

Section Header[1]:
    sh_addr:      0xffffff00c5b2e13e  sh_flags:   [ 0 ]
    sh_size:      0x1dbc0             sh_type:    [ SHT_STRTAB ]
    sh_offset:    0x0                 sh_entsize: 0x0
    sh_link:      0x0                 sh_info:    0x0
    sh_addralign: 0x1

::modinfo
アクティブカーネルモジュールに関する情報を出力します。/usr/sbin/modinfo コマンドの出力に似ています。
> ::modinfo
ID         LOADADDR     SIZE REV MODULE NAME
  0 fffffffffb800000   1ff8ae   0 unix (?)
  1 fffffffffb95d068   2df7e0   0 genunix (?)
  2                0        0   0 cl_bootstrap (?)
  3 fffffffffbbe4000     6008   1 specfs (filesystem for specfs)
  4 fffffffffbbe9f68     44a0   1 fifofs (filesystem for fifo)
  5 fffffffff7fc3000    1afa8   1 dtrace (Dynamic Tracing)
  6 fffffffffbbee350     5ae8   1 devfs (devices filesystem)
  7 fffffffff77fb000    133b8   1 dev (/dev filesystem)
  8 fffffffffbbf3bf0     6a18   1 dls (Data-Link Services)
  9 fffffffff780e000    30680   1 mac (MAC Services)
 10 fffffffff783e000    206e8   1 procfs (filesystem for proc)
    :
    :


walker

modctl
カーネルのアクティブな modctl 構造体のリストを調べます。
> ::walk modctl |::print modctl_t mod_modname
mod_modname = 0x1931df7 "unix"
mod_modname = 0x1936e68 "genunix"
mod_modname = 0x198d2cd "platmod"
mod_modname = 0x198d87c "SUNW,UltraSPARC-T1"
mod_modname = 0x300024f3380 "cl_bootstrap"
mod_modname = 0x30002504340 "specfs"
mod_modname = 0x300025042c8 "fifofs"
mod_modname = 0x300025042c0 "dtrace"
mod_modname = 0x300025042d0 "devfs"
mod_modname = 0x300025042a8 "procfs"
    :
    :
modent
mod_hash 構造体のエントリーのリストを調べます。
> 3000a056a00::print mod_hash_t mh_entries
mh_entries = [ 0x300024e65d8 ]
> 3000a056a00::walk modent |::print struct mod_hash_entry
{
    mhe_key = 0x86dd000
    mhe_val = 0x3000c481540
    mhe_next = 0
}
{
    mhe_key = 0x806000
    mhe_val = 0x3000c480708
    mhe_next = 0
}
{
    mhe_key = 0x800000
    mhe_val = 0x3000ae5b630
    mhe_next = 0
}
{
    mhe_key = 0x8035000
    mhe_val = 0x30016a075e0
    mhe_next = 0
}

modhash
mod_hash 構造体のリストを調べます。
> ::walk modhash |::print mod_hash_t mh_name
mh_name = 0x300036ec738 "vmusage anon hash"
mh_name = 0x300042707f8 "vmusage amp hash"
mh_name = 0x30004312e10 "vmusage vnode hash"
mh_name = 0x300035e5ec0 "vmusage anon hash"
mh_name = 0x30004312e28 "vmusage amp hash"
mh_name = 0x3000432aab0 "vmusage vnode hash"
mh_name = 0x300037f6228 "vmusage anon hash"
mh_name = 0x30002e3a198 "vmusage amp hash"
mh_name = 0x30002e3a168 "vmusage vnode hash"
mh_name = 0x30002e3a3a8 "vmusage project hash"
mh_name = 0x30002061b18 "sticlts_sockaddr_hash"
mh_name = 0x30001a6b3f0 "sticlts_ai_hash"
mh_name = 0x30002061b30 "sticots_sockaddr_hash"
mh_name = 0x30001a6b400 "sticots_ai_hash"
    :
    :

mod_hash_entries
mod_hash_entries キャッシュの mod_hash_entry 構造体を調べます。
> ::walk mod_hash_entries |::print struct mod_hash_entry
{
    mhe_key = 0x4a
    mhe_val = 0x300062b7688
    mhe_next = 0
}
{
    mhe_key = 0x42
    mhe_val = 0x300062b6c88
    mhe_next = 0
}
{
    mhe_key = 0x3d
    mhe_val = 0x300062b6788
    mhe_next = 0
}
    :
    :

0 件のコメント:

コメントを投稿