バイナリアンへの道は遠いで悩んでいたら、shinhさんに良い方法を教わりました。http://shinh.skr.jp/m/?date=20080428#p07
ありがとうございます。
./configure --enable-targets=all --program-prefix=all-
で作ると、確かに全部入りができるのですが、アーキテクチャを特定できないので上手く動きません。
YUKI.N>~/study/gcc/binutils-2.18/objdir/binutils/objdump -D sparc_sub.o
cygdrive/d/home/study/gcc/binutils-2.18/objdir/binutils/.libs/objdump: Matching formats: elf32-sparc elf32-sparc-vxworks
と、sparcのオブジェクトファイルを入力すると、elf32-sparc elf32-sparc-vxworksの両方にマッチするので、objdumpしてくれません。今回は、mips、arm、sparc、shのOS無しelfと、cygwinのx86(pe-i386)ができればよいので、configureをこのように実行します。
YUKI.N>../configure --enable-targets=sparc-elf,arm-elf,mips-elf,sh-elf --program-prefix=all-
--enable-targets は、複数のターゲットをサポートさせるときは、カンマで区切ります。デフォルトの状態の追加になるので、hostと同じi386-peは特に追加する必要はありません。
READMEから抜粋
The --enable-targets option adds support for more binary file formats besides the default. List them as the argument to --enable-targets, separated by commas.
objdumpとnmは、ここに置いておきます。パスが通った所にコピーすれば動きます。
http://homepage3.nifty.com/~Natsutan/study/COAD/all-objdump.zip
実験してみました。
YUKI.N>/usr/bin/all-objdump.exe -D arm_imm.o arm_imm.o: file format elf32-littlearm Disassembly of section .text: 00000000 <.text>: 0: e3a0110f mov r1, #-1073741821 ; 0xc0000003 YUKI.N>/usr/bin/all-objdump.exe -D sh_imm.o sh_imm.o: file format elf32-sh Disassembly of section .text: 00000000 <.f>: 0: d1 00 mov.l 4 <.f+0x4>,r1 ! 12345678 2: 00 09 nop 4: 12 34 mov.l r3,@(16,r2) 6: 56 78 mov.l @(32,r7),r6 YUKI.N>/usr/bin/all-objdump.exe -D x86_imm.o x86_imm.o: file format pe-i386 Disassembly of section .text: 0000000000000000 <.text>: 0: a1 78 56 34 12 mov 0x12345678,%eax 5: 90 nop (省略)
これは便利。