[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

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

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

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

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21157] Re: with-static-linked-ext

From: nobu.nakada@...
Date: 2003-08-06 05:27:51 UTC
List: ruby-dev #21157
なかだです。

At Wed, 6 Aug 2003 12:31:47 +0900,
Yukihiro Matsumoto wrote:
> 残りの修正と想定される影響はどのようなものがありますでしょう。
> ビルドに関してはもうよく分からなくなっているので(※)。

残りの修正点。

(1) --enable-sharedのときの、拡張ライブラリのリンク先
    今は、(mswin/bccwin以外は)実行ファイルであるrubyにリンクさ
    れてますが、これがLIBRUBY_SOになります。(--disable-sharedで
    はLIBRUBY_SOがないので変化なし)

    これは、ruby単独では影響はないと思います。影響があるのは、
    erubyやmod_rubyのようなruby embeddedなプログラムが
    LIBRUBY_SOを使う場合でしょう。それと、Windows(cygwinとmingw
    だけ?)では今まで--with-static-linked-extだとちゃんと動いて
    なかったと思われます。

(2) --disable-sharedのときの、拡張ライブラリの初期化順序
    今のところ影響はありませんが、nkfより先にunkfが初期化されて
    いると警告が出ます。先に触れたdigestについても、ディレクト
    リ構造(とglobの順序)に依存するよりも、明示したほうがいいか
    も。

> ※ 今週の標語: 分からないことは分からないと言おう。

分かりません(何が)。



Index: Makefile.in
===================================================================
RCS file: /cvs/ruby/src/ruby/Makefile.in,v
retrieving revision 1.44
diff -u -2 -p -r1.44 Makefile.in
--- Makefile.in	21 May 2003 11:51:55 -0000	1.44
+++ Makefile.in	6 Aug 2003 04:49:53 -0000
@@ -31,5 +31,5 @@ LIBS = @LIBS@ $(EXTLIBS)
 MISSING = @LIBOBJS@ @ALLOCA@
 LDSHARED = @LIBRUBY_LDSHARED@
-DLDFLAGS = @LIBRUBY_DLDFLAGS@
+DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS)
 SOLIBS = @SOLIBS@
 MAINLIBS = @MAINLIBS@
@@ -58,6 +58,9 @@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
 PREP          = @PREP@ @ARCHFILE@
 SETUP         =
+EXTSTATIC     = @EXTSTATIC@
 
-EXTOBJS	      = 
+EXTOBJS	      = $(DMYEXT)
+DLDOBJS	      = $(DMYEXT)
+DMYEXT	      = dmyext.@OBJEXT@
 
 MAINOBJ	      = main.@OBJEXT@
@@ -109,9 +112,9 @@ SCRIPT_ARGS   =	--dest-dir="$(DESTDIR)" 
 
 all:		@MAKEFILES@ miniruby$(EXEEXT) rbconfig.rb $(LIBRUBY)
-		@$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic="@EXTSTATIC@" $(SCRIPT_ARGS)
+		@$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic="$(EXTSTATIC)" $(SCRIPT_ARGS)
 
-miniruby$(EXEEXT):	config.status $(LIBRUBY_A) $(MAINOBJ) dmyext.@OBJEXT@
+miniruby$(EXEEXT):	config.status $(LIBRUBY_A) $(MAINOBJ) $(DMYEXT)
 		@rm -f $@
-		$(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) dmyext.@OBJEXT@ $(LIBRUBY_A) $(LIBS) -o $@
+		$(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(DMYEXT) $(LIBRUBY_A) $(LIBS) -o $@
 
 $(PROGRAM):     $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) miniruby$(EXEEXT)
@@ -119,10 +122,10 @@ $(PROGRAM):     $(LIBRUBY) $(MAINOBJ) $(
 		$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
 
-$(LIBRUBY_A):	$(OBJS) dmyext.@OBJEXT@
-		@AR@ rcu $@ $(OBJS) dmyext.@OBJEXT@
+$(LIBRUBY_A):	$(OBJS) $(DMYEXT)
+		@AR@ rcu $@ $(OBJS) $(DMYEXT)
 		@-@RANLIB@ $@ 2> /dev/null || true
 
-$(LIBRUBY_SO):	$(OBJS) dmyext.@OBJEXT@ miniruby$(EXEEXT) $(PREP)
-		$(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.@OBJEXT@ $(SOLIBS) -o $@
+$(LIBRUBY_SO):	$(OBJS) $(DLDOBJS) miniruby$(EXEEXT) $(PREP)
+		$(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) -o $@
 		@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
 						  File.symlink "$(LIBRUBY_SO)", link}' \
Index: ext/extmk.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/extmk.rb,v
retrieving revision 1.37
diff -u -2 -p -r1.37 extmk.rb
--- ext/extmk.rb	2 Aug 2003 06:14:53 -0000	1.37
+++ ext/extmk.rb	5 Aug 2003 07:58:59 -0000
@@ -61,4 +61,5 @@ def extmake(target)
     $mdir = target
     $srcdir = File.join($top_srcdir, "ext", $mdir)
+    $preload = nil
     unless $ignore
       if $static ||
@@ -89,5 +90,5 @@ def extmake(target)
     if File.exist?("./Makefile")
       if $static
-	$extlist.push [$static, $target, File.basename($target)]
+	$extlist.push [$static, $target, File.basename($target), $preload]
       end
       unless system($make, *sysquote($mflags))
@@ -227,5 +228,11 @@ if $extlist.size > 0
   $extinit ||= ""
   $extobjs ||= ""
-  for s,t,i in $extlist
+  list = $extlist.dup
+  until list.empty?
+    s,t,i,r = list.shift
+    if r and list.any? {|l| r.include?(l[1])}
+      list << [s,t,i]
+      next
+    end
     f = format("%s/%s.%s", s, i, $LIBEXT)
     if File.exist?(f)


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread