たかがビルドでハマりにハマる

何台かでソースからビルドした NetBSD の /usr/bin/ld のうち一台だけ動かない。

$ ld
ld:built in linker script:1: ignoring invalid character `20' in expression
ld:built in linker script:1: ignoring invalid character `37777777646' in expression
ld:built in linker script:1: parse error

それぞれバージョン違いで,動かないのは netbsd-4 のツリーをビルドしたもの。netbsd-4 のバグかと思い,別のマシンにもたまたま netbsd-4 のソースが展開してあったのでビルドするとうまく動く。
あれこれやって,生成された eelf_x86_64.c がおかしいところまでは突き止めたが,何故おかしくなるかわからないので,ビルドログを比較してみると,エラーが出ているのを発見。

 #    create  ld/eelf_x86_64.c
unset MACHINE || true;  LIB_PATH=/usr/lib
/bin/sh /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld/genscripts.sh /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld /usr/lib "/usr"  x86_64--netbsd x86_64--netbsd x86_64--netbsd  elf_x86_64 /usr/lib no elf_x86_64 "x86_64--netbsd"
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory

その手前で stringify.sed が作られていない模様。

-#    create  ld/stringify.sed
-rm -f stringify.sed
-ln -s /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld/emultempl/astring.sed stringify.sed

で,結局あれこれいじっていると,/usr/src/gnu/usr.bin/binutils/ld/stringify.sed (シンボリックリンク)があるのを発見。既に存在するので作られないが,実行時に使われる /usr/obj/gnu/usr.bin/binutils/ld/stringify.sed がないというオチ。
結論としてはこんなかんじ。

  1. 何かの拍子に(過去に)ソースツリー内にシンボリックリンクを作ってしまった。(多分自分のミス)
  2. オブジェクトのディレクトリがソースのディレクトリとは別(NetBSD本体のビルドでは常にそうなる)であってもソース側にターゲットが存在してしまっているとオブジェクト側に作られない。(makeの仕様)
  3. ビルド中に使っている binutils/ld/genscripts.sh の中でエラーを起こしてもビルドが止まらない。(?)
  4. 結果として出来上がった eelf_x86_64.c が壊れているにも関わらず,コンパイルが通ってしまう。具体的には char * で内蔵 ldscript を返す関数が,stringify.sed がないせいで何も作られず,return; となってしまっているのにエラーにならない。(?)
  5. 存在しない戻り値(メモリのどこか)を ldscript だと思って読み込むが,当然ぐちゃぐちゃなのでエラー。

まあ発端は自分が悪いんだけど,バグで同じようなことが起きる可能性も考えると,ツール類も -Wall … -Werror つきでコンパイルできると本当はいいんだろうねえ。

おしえてMSのえらいひと

Office2003と2007の共存がしたい。
どっちかがあれば,もう一方のファイルも互換モードで開くのだが,2003と2007で交互に編集したりすると,いろいろおかしくなるのはお約束。PowerPointが特に顕著。
そこで,Office2007のインストール時に2003は消すのがデフォルトになっているのだが,残すようにしてみた。それで,例えば *.doc は Word2003 で,*.docx は Word2007 で開くのかと思ったらそうでもなくて,常に 2007 が動く。関連付けを変えようとしてもうまくいかない。
とか書くと,親切な人が「『ツール』→『フォルダオプション』で『ファイルの種類』を…」云々と教えてくれるのだが,それ自体がうまくいかないという話。2003 の方の WINWORD.EXE を明示して関連付けても Microsoft Office Word というアプリケーションとの関連付けと勝手に解釈して(?)新しい方が起動してしまうらしい。
しょうがないんで,

START "" "C:Program FilesMicrosoft OfficeOFFICE11WINWORD.EXE" %*

みたいなバッチファイルを作って,そのバッチに *.doc 等を関連付けすることでなんとか一応目的の共存はできるようになった。
ただ,これでわかったことは,2003使った後に2007使ったり,その逆をやると毎回インストーラが起動して「構成しています」とか何やら設定をはじめる。2007使った後の2003のインストーラはそれほど時間がかからずに終了するが,2003使った後の2007のインストーラは結構待たされる(1分以上?)。
なんとかなりませんかね,これ。

IBM System x3105 で NetBSD 4.0 が起動しない件

NetBSD 3.1 は動いてた。
4.0 にしようとしたら,

viaide2: couldn't map sata regs

といわれてwd0, wd1 が見つからずに死亡。
PR #38011 がそれっぽい。
http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=38011
手で viaide.c にパッチ当ててみると wd0, wd1 は見つかったものの,正しく動いてないのか起動時の init が呼ばれるあたりで固まる。
ちなみにチップセットは NVIDIA nForce Professional 2000 MCP らしいんだが,nForce4 でいいんだよねこれ?(少なくともSATA周りは)
とりあえず 3.1 に戻す。
続く (?)

放置してたら

コメントスパム&トラックバックスパムの嵐に。
承認しないと表示しない設定にしていたのだが,ブログ単位の設定かと思っていたらどうやら「記事単位」のデフォルトの設定だったらしい。つまり,過去の記事に関してはそのまま・・・。
どう考えても全部の記事設定しなおすなんて面倒でしょ。でも一括設定が見当たらない。やっぱり,他所に移してここは閉じるか。
とりあえず,http を禁止ワードにしておく。

スーパーロボ子

合作。まあ手伝い程度ですが。
【ニコニコ動画】【公式リミックス祭】Rocks / JAM Project + スーパーロボ子
JAM Project「Rocks」の歌パートだけのmp3配布して,好きなようにリミックスしていいという大胆な企画ですが,歌がパワフル過ぎて苦戦してる人が多い感じ。(伴奏が負けてしまう)
祭なので伴奏下手でも何でも楽しめればいいと思いますが。

VOCALOID2 CV02 鏡音リン

かがみねりん?
かがみん+えーりん みたいな響き(違う)
いや,よくわかってないが。

昨日の買い物

異界繁盛記ひよこや商店(6) 巣田祐里子
ついに完結。木花の出番は1巻より後あんまりなかったなあ・・・。
あと、全プレのために月刊あすか(美形のお兄ちゃんがいっぱいのまんが雑誌)。
読むとこナサス。
おまけ:
中古屋でセガサターン版バトルバ(300円也)。音楽CDとして。

続・チーターマン祭

昨日の夜でっち上げた。
VOCALOIDの調整はアクセントだけ。
伴奏はPad垂れ流しで素人くさいというか素人です。
一番苦労したのは,今回実戦配備した Adobe Premiere Elements 4 の動作がいろいろ変だったこと。コピー・ペーストで狙ってない場所にペーストされるとか,文字編集してると落ちるとか,いろいろ。
【ニコニコ動画】すきよ★チーターマン

商談系

案件1:
仲介業者が商談を成功させるために,最初から双方で条件が合っていないのを伏せて話を進めてた。
すぐにバレて不成立。
案件2:
相手が熱心に売り込みに来てるというので,商談に都合の良い日程を提示したところ返事がなくてタイムアウト。
なんだかなあ。