x68minix-MLの方で鈴木克宗@電通大さんがprintf(gcc-1.39)で実数表示する 時に不具合が発生する事を報告されてまして、ごにょごにょ調べてみました。
で、どうやらgcc-1.36(ftp.kuis.kyoto-u.ac.jp版)のlibcのprintfはバグっ て無いという情報を得たんですが、このgccは過去に
と ダダをこねて動かなかったgcc なんですね(^^;。その時は、ソースからlibcを作り直せば何とかなりそうだと 思いながら、SCSIのファイルシステムが不安定だった為にコンパイルを断念し た 悲しい思い出 が有るのですが、現在はシステムも安定してるので再度挑戦してみたところ、 あっさりコンパイル出来てしまいました(^^)/。
しかも、報告されていたprintfの不具合も無いようですし、それでは bash-1.14.6でもmakeしてみるか...と思ってやってみたところ、うまくいかな い(;_;)。
気を取り直して調査を開始。で、判ったのがversion.hを作るフェーズで newversion.auxコマンドのfopenがこけてる様子。んで、libcにprintfをぶちこ んで観察したところopenシステムコールで-1が返されている事を発見した。 うーむ(-_-;。
その後、x68minix-MLで質問したりして、調査を進めたところfcntl.h内の 「O_ほにゃらら」系のマクロ定義がackのそれと異なってる事に気付いて、と りあえずそれらをackの定義に合わせたところ、openが失敗する件は解決した のですが...。
新たな疑問が湧いて来ました(-_-;。なんでこんなに基本的なマクロ定義が 食い違ってるんだろう?。で、思い付いたのが(想像の域を出ませんが)この gcc-1.36はこれでカーネルを含んだシステム全体をコンパイルし直した環境で ないと使ってはいけないのでは...という事なんですが、どうでしょうか?。
この時点でgcc-1.36を使用する事を断念し、別のgccは無いかと調べてたと ころ、有りました!。
しかもgcc-2.*.*系(^^)/。喜び勇んでゲットしインストールしてしまいま した...が、
ふーう(-_-;。メインメモリ4MではGNU物のコンパイルはきつい様です。残念で すが、現時点では私の環境では使えそうに有りません。こちらの方は注文中の Neptune-Evolution(Ethernet LAN board for X68k) が届いてメモリー増設が完了する時までのお預けとなりそうです(^^;。
結局残された道はgcc-1.39のlibcをコンパイルし直して見るぐらいしかなさ そうです。
gcc-1.39のlibcのソースはackのlibcに対してパッチを当てる事で生成され るので、
atari版Minix Operating System Sources と libc patch for gcc-1.39
を入手し、あれこれMakefile,ソースをいじりながら、どうにかコンパイル完了する (^^;。
とりあえずprintfの実数表示の不具合はどんな具合だろうかと簡単なサンプル プログラムをコンパイルして見ると、
などと怒られてしまった(T_T)。
結局、
という点からprintf系関数そのものを(一応)動作確認の取れているgcc-1.36 のソースと入れ換えてしまう事にしました(我ながら強引(^^;)。
gcclib-1.39p.tar.gz(1997年6月29日以降 公開中止)
結局、上記の パッチ を施したソースに、さらにこのパッチを当ててlibcを作り直すとgcc-1.39での printfの不具合は回避出来ます(エンバグしてる可能性も有りますが(^^;)。
gcclibのソースをいじってる過程で気付いたのですが、 私のgccインクルードファイルのインストール方法 は、かなり強引すぎるようです。これは以前、bash-1.05をコンパイルした時に、 あまりに
系のエラーが多発したのに業を煮やしgcc-1.39に無いインクルードファイルを gcc-1.36から補ったという事だったのですが、マクロ定義のコンフリクト等が 有りそうなので(そりゃそうだわな(^^;)、これを機にgcc-1.36から持って来た インクルードファイルは削除しました。
それと、大部分のMinix/X68kユーザの方々が利用されているであろう、松田 @福井大(現シャープ)さんが 公開されているgccパッケージ も同様のインストール方法をとられているのでご注意下さいm(__;m。
gcc-1.39のlibcとインクルードファイルのインストール方法を変更した環 境のテストを兼ねてgnu make-3.75を移植して見ました。お試し下さい。
make-3.75.tar.gz + make-3.75p.tar.gz