IT戦記 このページをアンテナに追加 RSSフィード Twitter

2008-04-01

objdump, objcopy を Mac に入れる

こっちのエントリはエイプリルフールネタではないよ

インストール

nm とか strings とかとあわせて binutils っていうツールなんですね

$ sudo install binutils

で、インストールできました。

内容

で、どんなものがインストールされたかというと

$ port contents binutils
Port binutils contains:
  /opt/local/bin/gaddr2line
  /opt/local/bin/gar
  /opt/local/bin/gc++filt
  /opt/local/bin/gnm
  /opt/local/bin/gobjcopy
  /opt/local/bin/gobjdump
  /opt/local/bin/granlib
  /opt/local/bin/greadelf
  /opt/local/bin/gsize
  /opt/local/bin/gstrings
  /opt/local/bin/gstrip
:
:

って感じで、 /opt/local/bin の中に g というプリフィックスが付いた状態でインストールされていました。

OS X が元々用意している nm や strings などと区別して使うためなんですかね?

こんな感じ

$ gobjdump -d /bin/ls
??? /bin/ls ??:
unable to read unknown load command 0x1b
unable to read unknown load command 0x1d

/bin/ls:     ?ե???????? mach-o-le

????????? LC_SEGMENT.__TEXT ?εե?????֥?:

00001000 <LC_SEGMENT.__TEXT>:
    1000:	ce                   	into   
    1001:	fa                   	cli    
    1002:	ed                   	in     (%dx),%eax
    1003:	fe 07                	incb   (%edi)
    1005:	00 00                	add    %al,(%eax)
    1007:	00 03                	add    %al,(%ebx)
    1009:	00 00                	add    %al,(%eax)
    100b:	00 02                	add    %al,(%edx)
    100d:	00 00                	add    %al,(%eax)
    100f:	00 0e                	add    %cl,(%esi)
    1011:	00 00                	add    %al,(%eax)
    1013:	00 18                	add    %bl,(%eax)
    1015:	05 00 00 85 00       	add    $0x850000,%eax
    101a:	00 00                	add    %al,(%eax)
    101c:	01 00                	add    %eax,(%eax)

なんかちょっと文字化けしてますが、普通に使えました。

ちゃんと、 mach-o-le にも対応してるんですね(あたりまえか

kzyskzys 2008/06/19 07:45 ちょうど objdump をさがしていたので助かりました。
sudo install は sudo port install だと思います。

文字化けは EUC-JP で出力されているからで、どうも /opt/local/share/locale/ja/LC_MESSAGES/binutils.mo が EUC-JP みたいです。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/amachang/20080401/1207027290