IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

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 にも対応してるんですね(あたりまえか