2000/09/07    CERNLIB 2000 Rebuilt with Binutils-2.10.0.9-0a

昨日の CERNLIB の中の mclibs/cojets と mclibs/isajet が binutils-2.9.5.0.14-0a より新しい "ld" でリンクするとできた実行可能バイナリーが segmentation fault する問題は、CERNLIB の方の問題であることが判明。cojets の場合、mclibs/cojets/cojets/fint.inc で定義されている COMMON /FINT/... と libpacklib.a の中の関数 fint.o の名前が衝突していた。同様に、isajet の場合は、mclibs/isajet/isajet/frame.inc で定義されている COMMON /FRAME/... と libmathlib.a の中の関数 frame.o の名前の衝突。関数とコモンブロックが同じ名前空間にあるのも問題のような気がするが、FORTRAN の規約上は同じ名前を使ってはいけないことになっているようである(少なくともあるベンダーの商用 FORTRAN のマニュアルにはそう書いてあった)。

というわけで、

COMMON /FINT/ ...  ---> COMMON /CJFINT/ ....
COMMON /FRAME/ ... ---> COMMON /IJFRAME/ ...
として mclibs をコンパイルし直し。パッチは
mclibs_cojets.patch
mclibs_isajet.patch
の二つ。

昨日のパッケージとの差分は

cernlib2000-omotif-mod.tar.gz
古い binutils を使っている場合は置き換えの必要なし。
 

使った開発環境は

make-3.78.1-1a
gcc*-2.95.3-2cm
glibc-2.1.3-15e
binutils-2.10.0.9-0a
XFree86-3.3.3.1-49a
openmotif-2.1.30-3_MLI_jdk

CERNLIB は GPL 準拠のライセンスに変わりましたので、cernlib のディレクトリーのパスワード保護は外しました。必要な方は御自由にお持ちください)


Back to Keisuke Fujii's MkLinux/LinuxPPC Life