[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。原因を追求してたのですが、力尽きました。

19 messages 2004/08/18
[#24127] Re: ruby/tk crashes on bcc32 — Hidetoshi NAGAI <nagai@...> 2004/08/19

永井@知能.九工大です.

[#24131] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。

[#24135] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。試行錯誤の結果、これで落ちなくなりました。

[ruby-dev:24085] Re: to compile tcltklib (bcc32)

From: WATANABE Hirofumi <eban@...>
Date: 2004-08-16 04:12:55 UTC
List: ruby-dev #24085
わたなべです。

"H.Yamamoto" <ocean@m2.ccsnet.ne.jp> writes:

> 変数を参照しないと、最適化で消えてしまうみたいです。下のコードでは
> エラーになりました。(でも tcltklib.c でも参照していないのに???)
> 
> #include <stdio.h>
> #include <math.h>
> 
> extern int matherr();
> int *tclDummyMathPtr = (int *) matherr;
> 
> int main()
> {
>     printf("%d\n", tclDummyMathPtr);
>     return 0;
> }
> 
> R:\>bcc32 f.c
> Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
> f.c:
> Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
> Error: 外部シンボル '_matherr' が未解決(R:\F.OBJ が参照)

_がついてるけど、bcc32ではCのシンボルにはすべて_がprefixされ
ます。実際に未解決なのはmatherrのほうです。

> R:\>bcc32 -Dmatherr=_matherr f.c
> Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
> f.c:
> Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

これだけで最適化で消えたとは言えません。
実際に実行してみるとprintfは消えてませんし。
matherr=_matherrでシンボルの名前が解決しただけです。
bcc32のライブラリにはCの_matherrは存在します。

> >でも #if !defined __MINGW32__ でmingw版で問題があるという話を
> >聞かないということは、あってもなくてもいいってことなんですか
> >ねえ。
> 
> コメントを見る限りでは Sun の問題のようなので、#if defined(sun) でいいのかも
> しれません。

これは強制的にTclのmatherrをリンクさせるためのものです。
http://cvs.sourceforge.net/viewcvs.py/tclx/tclx/Attic/README.SHLIBS?rev=4.2
によれば古いsun(たぶんsun4)で問題があっただけなので、このコー
ド自体もはや意味がないようです。

-- 
わたなべひろふみ

In This Thread