From: nobu.nakada@... Date: 2002-06-13T03:46:24+09:00 Subject: [ruby-dev:17418] Re: [mswin32] exporting needless string literal なかだです。 At Thu, 13 Jun 2002 02:31:58 +0900, arton wrote: > > 12.00.8804では出ないみたいですが、SPの違い? > CFLAGSに/Ziを付けてるのが原因みたい。(もし、なかださんが付けてなければ > 当たりだと思います)で、直定数が外部シンボルとして出力されているようです。 かと思ったんですが、どうやらdumpbinの出力が違うみたいです。 > 明確な例) > > ??_C@_02BOCF@?$CK?$CK?$AA@ がexportされている。 > > dumpbin -symbols *.obj からの抜粋 > > Dump of file dir.obj > ---snip--- > 026 00000000 SECTA notype External | ??_C@_02BOCF@?$CK?$CK?$AA@ (`string') 私がコンパイルしたものではこうなってました。 Microsoft (R) COFF Binary File Dumper Version 6.00.8447 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. 030 00000000 SECTD notype External | ??_C@_02BOCF@?$CK?$CK?$AA@ (??_C@_02BOCF@?$CK?$CK?$AA@) > すぐソースレベルデバッグできるから/Ziを外す気はないですが(シンボルその > ものはpdbに分離されているし)、確かにdefファイルでエクスポートする意味は > ない(と思うけど自信なし)ので、Tietewさんの[ruby-dev:17392]のパッチが良 > いのではないですか? いいんじゃないでしょうか。あるいは、もしシンボルのタイプ(という のか何なのか`string'というの)が付いてるものばかりなら、このほう が若干速いかも。 # `'をエスケープしてるのは、font-lockが誤認するのを避けるだけな # ので、本来は不要ですが。 Index: mkexports.rb =================================================================== RCS file: /cvs/ruby/src/ruby/win32/mkexports.rb,v retrieving revision 1.3 diff -u -2 -p -r1.3 mkexports.rb --- mkexports.rb 2002/03/26 05:06:45 1.3 +++ mkexports.rb 2002/06/12 18:41:12 @@ -9,5 +9,5 @@ IO.foreach("|dumpbin -symbols " + objs.j if l.sub!(/^_/, '') next if /@.*@/ =~ l || /@[0-9a-f]{16}$/ =~ l - elsif !l.sub!(/^(\S+) \([^@?]*\)$/, '\1') + elsif !l.sub!(/^(\S+) \([^@?\`\']*\)$/, '\1') next end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦