objdump で一部逆アセンブルできていない命令がある理由が判明。CPU アーキテクチャが判別できずに、SH1 として逆アセンブルされていたようだ。-m オプションを使ってアーキテクチャを正しく指定(例: -m sh4a)したところ、逆アセンブルできるようになった。
以前、SH 用の objdump をコンパイルしたことがあったが、どうもバグっているところがあるようなので、新しいバージョンをコンパイルしてみることにした。前回は Cygwin 1.5 上で binutils 2.17 をコンパイルしたが、今回は Cygwin 1.7 上で binutils 2.21 をコンパイルしてみた。
Cygwin 1.7 では gcc 4.x がデフォルトのコンパイラになっているようだが、4.x では --mno-cygwin オプションが廃止されてしまったようだ。代わりに gcc-3 を使うことにする。また、以前は ./configure のオプションで --host を指定していたが、--build を使うべきらしい。64bit 整数型も正しく認識できたようなので、指定は不要になった。Cygwin には、flex, bison 辺りをインストールしておく必要があるようだ。
$ CC='gcc-3 -mno-cygwin' ./configure --target=sh-hitachi-elf --build=i686-pc-mingw32 --disable-nls $ make $ strip binutils/.libs/objcopy.exe
なお、mingw-zlib-devel がインストールしてあると、mgwz.dll が必要な実行ファイルができてしまう。圧縮されたバイナリを扱うのでなければ、mingw-zlib-devel をインストールしない方が依存 DLL が少なくなって良さそうだ。
objdump を使って .obj を逆アセンブルしてみたが、よく見ると一部逆アセンブルできていない命令がある。
Ubuntu に複数のバージョンの Java をインストールした場合に、バージョンを切り替える方法を調べた。以下のようにすることで切り替えられる。
JDK 1.6 に切り替える場合: $ sudo update-java-alternatives -s java-6-sun JDK 1.5.0 に切り替える場合: $ sudo update-java-alternatives -s java-1.5.0-sun java と javac を個別に切り替える場合: $ sudo update-alternatives --config java $ sudo update-alternatives --config javac
Qt でファイラーを作ってみたいとか思い始めた。とりあえず、使いそうなクラスや関連ページを列挙。
ARIB 外字に対応したフリーのフォントがないかと探してみたところ、和田研細丸ゴシックというものが見つかった。
この前買った PT2 の動作確認。始めにアースソフトの公式ドライバをインストールしたが、なぜかデバイスが正しく認識されない。ドライバの署名が無くても認識する状態のはずだが……。署名問題対策ドライバというものが見つかったので、それを入れたところ、ようやく認識された。(参考:64bit版 windows 7でのPT2導入 [テストモード回避]) PT2 用の BonDriver はいくつかあるようだが、BonDriver_PT-ST-shm とかいうのを使った。地デジ、BS デジタル共に無事動作するのを確認できたが、分波器がないので調達してこよう。
ということで、ダブル分波器 DSP-77FW-P というものを買ってきた。ネットだと安いところでは \3.28k ぐらいで手に入るようだが、\4.28k だった。
寒いためか、MonsterTV HDUS が最近ますます認識されにくくなっている。2台のうち1台は特にひどい。不安定な状態で2台を同じ USB ハブにつなぐと、特に不安定な方がもう1台を道連れにして両方とも認識しなくなってしまう。
VMware Player 上の Ubuntu のディスクの空きが足りなくなってきたため、ディスクを拡大することにした。
まずは、仮想マシンの設定画面でハードディスクを選択し、ユーティリティで拡張を実行した。かなり時間が掛かった。
次に、Ubuntu 側でパーティションサイズを変更するため、GParted Live CD を使った。仮想マシンを再起動し、起動画面で F2 を押して BIOS 画面を出して、起動順序を変更してから Live CD から起動した。第1パーティション (/dev/sda1) のサイズを拡大したかったのだが、第2パーティションがスワップ領域となっており、そのままでは拡大できなかった。そこで、スワップ領域を一度削除し、第1パーティションを拡大してから、スワップ領域を切り直した。
仮想マシンを再起動したところ、無事に Ubuntu が起動したので、問題ないかと思っていたのだが、Ubuntu 上で Android をビルドしたところ、ビルド中にエラーになってしまった。どうもメモリが足りないらしい。
swapon -s でスワップの状態を確認したところ、スワップ領域が有効になっていなかった。/etc/fstab を確認したところ、スワップ領域が /dev/sda5 などの名前ではなく、UUID で指定されていた。mkswap /dev/sda5 でスワップ領域を作成し直し、そのときに表示された UUID を /etc/fstab に設定し直してから swapon -a を実行したところ、ようやくスワップが有効化され、Android のビルドも問題なく通るようになった。
最近、再生産が始まって話題の PT2 を買ってきた。幸いほとんど並ばずに買えた。動作確認は次の休みにする予定。
「鬼車の5.9.2で未修正のバグについて」の内容を確認中。3つの修正のうち、r26796 は Ruby 1.9 - Feature #2759: Regexp /g and /G options を見たところ、bregonig.dllには関係なさそう。残りの 2つは、bregonig.dll に反映させる予定。