1997年6月8日(月)

「gcclibパッチ for gcc-1.39(ftp.wsr.ac.at版)」

x68minix-MLの方で鈴木克宗@電通大さんがprintf(gcc-1.39)で実数表示する 時に不具合が発生する事を報告されてまして、ごにょごにょ調べてみました。

で、どうやらgcc-1.36(ftp.kuis.kyoto-u.ac.jp版)のlibcのprintfはバグっ て無いという情報を得たんですが、このgccは過去に

__iobが未定義である

ダダをこねて動かなかった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.2.2

しかも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の実数表示の不具合はどんな具合だろうかと簡単なサンプル プログラムをコンパイルして見ると、

__ecvt(),__fcvt(),__gcvt()等々が未定義

などと怒られてしまった(T_T)。

結局、

  1. これらの関数のソースが見つからなかった。
  2. これらの未定義関数はprintf系の関数でしか使われて無かった。
  3. どうせ、このprintfは実数表示の不具合を持ったままであろう...。

という点からprintf系関数そのものを(一応)動作確認の取れているgcc-1.36 のソースと入れ換えてしまう事にしました(我ながら強引(^^;)。

gcclib-1.39p.tar.gz(1997年6月29日以降 公開中止)

結局、上記の パッチ を施したソースに、さらにこのパッチを当ててlibcを作り直すとgcc-1.39での printfの不具合は回避出来ます(エンバグしてる可能性も有りますが(^^;)。

「gcc のインクルードファイルに関して」

gcclibのソースをいじってる過程で気付いたのですが、 私のgccインクルードファイルのインストール方法 は、かなり強引すぎるようです。これは以前、bash-1.05をコンパイルした時に、 あまりに

ほげほげ.hが見つからないよん

系のエラーが多発したのに業を煮やしgcc-1.39に無いインクルードファイルを gcc-1.36から補ったという事だったのですが、マクロ定義のコンフリクト等が 有りそうなので(そりゃそうだわな(^^;)、これを機にgcc-1.36から持って来た インクルードファイルは削除しました。

それと、大部分のMinix/X68kユーザの方々が利用されているであろう、松田 @福井大(現シャープ)さんが 公開されているgccパッケージ も同様のインストール方法をとられているのでご注意下さいm(__;m。

「gnu make-3.75」

gcc-1.39のlibcとインクルードファイルのインストール方法を変更した環 境のテストを兼ねてgnu make-3.75を移植して見ました。お試し下さい。

make-3.75.tar.gz + make-3.75p.tar.gz


[前頁] [次頁]
Return
introduction of kyoto internet people
[更新]