もとい

昨日行ったstart.Sとcpu_support.Sの変更を元に戻すと、何事もなかったかのように動き出しました。行った変更というのは、イベント・フックをファイル間で移動しただけです。
VisualDSP++版ではイベント・フックや割り込みディスパッチャと私が呼んでいるITORN4式の割り込み処理部がstart.Sに配置されています。これはstart.Sの中でイベント・ベクトルにフックの設定を行う都合上、別ファイルにおいて大量のシンボルが大域化するのを嫌ったためです。
ところが、これがgcc版で予想もしなかった問題に発展しました。ビルド時に

perl ../configure -C blackfin -S bf533

とするとOKなのに、

perl ../configure -C blackfin -S bf533 -L .

とすると、make dependに失敗するのです。なぜか。make dependの依存性は決めうちで設定されています。ところが、ライブラリ位置を指定したコンフィギュレーションではoffset.hが依存性リストに入っていません。そのため、実際にはoffset.hを使っているstart.Sがビルドに失敗していたのです。
start.Sでoffset.hを使うな、なんて書いてましたっけ〜〜〜〜〜!?(海に向かって叫ぶ)
start.Sでのoffset.hの使用を止めるには、interrupt_dispacher関数をcpu_support.Sに移せば済みます。そこでイベント・フックごと全部移したところ、昨日の問題が発生したのです。
すこし追い込んでみたところ、実際にはexpEntryという例外フックをstart.Sからcpu_support.Sに移すと問題が起きるようです。ところが、妙なことに問題が起きるのは実行時ではなくロード時です。すっかり混乱してしまったので、考えるのを止めて問題が起きないところにexpEntryを置いておしまいにしました。
ツールの問題かもしれません。しかしとっかえひっかえツールを試すのもどうかなぁ*1

*1:この点、ツールをプラグイン化したPizzaFactoryはいいところを突いていると感じます。