[#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:24152] Re: ruby/tk crashes on bcc32

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2004-08-21 09:12:29 UTC
List: ruby-dev #24152
山本です。

>もしかしたら不可能なのかもしれませんが、とりあえずbcc32のRTLダイナミックリンク化に
>取り組んでみます。

うまくいった気がします。make test, testrb e:/ruby-cvs/ruby_1_8/test
ともに動きました。(-tWC はコンソールアプリ作成指令なのですが、これがないと SEGV します。
その代わり rubyw は動かないんじゃないかと思ったのですが、動いているようです)

Index: bcc32/Makefile.sub
===================================================================
RCS file: /var/cvs/src/ruby/bcc32/Makefile.sub,v
retrieving revision 1.42.2.9
diff -u -w -b -p -r1.42.2.9 Makefile.sub
--- bcc32/Makefile.sub	7 Jul 2004 06:54:39 -0000	1.42.2.9
+++ bcc32/Makefile.sub	21 Aug 2004 06:44:09 -0000
@@ -95,7 +95,7 @@ libdir = $(exec_prefix)/lib
 DESTDIR = $(prefix)
 !endif
 !ifndef CFLAGS
-CFLAGS = -q $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
+CFLAGS = -q -tWR -tWC $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
 !endif
 !ifndef CPPFLAGS
 CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)missing
@@ -109,7 +109,7 @@ RFLAGS = $(iconinc)
 !ifndef EXTLIBS
 EXTLIBS =
 !endif
-LIBS = cw32.lib import32.lib ws2_32.lib $(EXTLIBS)
+LIBS = cw32i.lib import32.lib ws2_32.lib $(EXTLIBS)
 MISSING = acosh.obj crypt.obj erf.obj win32.obj
 
 !ifndef STACK


ただ、これだけだとなぜか

.\dmyext.c:
        tlib /a "bccwin32-ruby18-static.lib" array.obj   bignum.obj   class.obj
  compar.obj   dir.obj   dln.obj   enum.obj   error.obj   eval.obj   file.obj
gc.obj   hash.obj   inits.obj   io.obj   marshal.obj   math.obj   numeric.obj
object.obj   pack.obj   parse.obj   prec.obj   process.obj   random.obj   range.
obj   re.obj   regex.obj   ruby.obj   signal.obj   sprintf.obj   st.obj   string
.obj   struct.obj   time.obj   util.obj   variable.obj   version.obj   acosh.obj
 crypt.obj erf.obj win32.obj dmyext.obj
TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation
        bcc32 -q -tWR -tWC  -O -6 -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
-DRUBY_EXPORT -I. -I. -I./ -I./missing -c .\main.c
.\main.c:
cw32i.lib import32.lib ws2_32.lib
        ilink32 -q -Gn -S:0x2000000 -Tpe c0x32.obj main.obj dmyext.obj,miniruby.
exe,nul,bccwin32-ruby18-static.lib cw32i.lib import32.lib ws2_32.lib
Error: 外部シンボル '__umask' が未解決(E:\RUBY-CVS\RUBY_1_8\BCCWIN32-RUBY18-STA
TIC.LIB|file が参照)
Error: 外部シンボル '__getpid' が未解決(E:\RUBY-CVS\RUBY_1_8\BCCWIN32-RUBY18-ST
ATIC.LIB|win32 が参照)

** error 2 ** deleting miniruby.exe

というエラーが出たので、少し手直しが必要でした。何故スタティックリンク
のとき出なかったエラーが出たのかよくわかりません。(関数の先頭に付いてた
ハイフンがなくなった?確かめてません)しばらくこれで使ってみようと思います。

Index: win32/win32.c
===================================================================
RCS file: /var/cvs/src/ruby/win32/win32.c,v
retrieving revision 1.103.2.2
diff -u -w -b -p -r1.103.2.2 win32.c
--- win32/win32.c	25 Jul 2004 02:08:12 -0000	1.103.2.2
+++ win32/win32.c	21 Aug 2004 06:47:02 -0000
@@ -3150,7 +3150,13 @@ pid_t rb_w32_getpid(void)
 {
     pid_t pid;
 
+#ifndef __BORLANDC__
     pid = _getpid();
+#else
+#undef getpid
+    pid = getpid();
+#endif
+
     if (IsWin95()) pid = -pid;
 
     return pid;

Index: win32/win32.h
===================================================================
RCS file: /var/cvs/src/ruby/win32/win32.h,v
retrieving revision 1.46.2.1
diff -u -w -b -p -r1.46.2.1 win32.h
--- win32/win32.h	25 Jul 2004 02:08:12 -0000	1.46.2.1
+++ win32/win32.h	21 Aug 2004 06:44:19 -0000
@@ -108,7 +108,6 @@ extern "C++" {
 #define perror(s)		_perror(s)
 #define read(h, b, l)		_read(h, b, l)
 #define tell(h)			_tell(h)
-#define umask(m)		_umask(m)
 #define unlink(p)		_unlink(p)
 #define write(h, b, l)		_write(h, b, l)
 #define _open			_sopen

***** CVS exited normally with code 1 *****



In This Thread