[#18440] racc segv revisited — "Akinori MUSHA" <knu@...>

 次のバグの件なんですが、現時点では原因究明を含めて未解決という

24 messages 2002/10/02
[#18617] Re: racc segv revisited — "Akinori MUSHA" <knu@...> 2002/11/02

At Wed, 2 Oct 2002 23:19:59 +0900,

[ruby-dev:18578] Re: avoid substituting $(s) in a templateofLIBPATHFLAG

From: nobu.nakada@...
Date: 2002-10-24 12:27:20 UTC
List: ruby-dev #18578
なかだです。

At Thu, 24 Oct 2002 18:51:43 +0900,
Ryo HAYASAKA wrote:
> > > $&.chop とかしないと, エスケープのままになっちゃいますね.
> > Config::expandのほうで$$を$にしてます。つまり、config.status中
> > の$$はConfig::MAKEFILE_CONFIGでも$$のまま、Config::CONFIGや
> > mkmf.rbで作られたMakefileでの展開結果は$、というつもりです。
> 
> make すると
> 
> ...
> compiling curses
> /home/ryoh/work/ruby/lib/mkmf.rb:223:in `%': malformed format string - %$ (ArgumentError)

うむむむむ。考えが浅かったようです。mkmf.rb内部で使うものと
Makefileに埋め込むものとが混在する状況で、$が衝突することの影響
をちゃんと予想できなかったのが問題でしょう。

> きちんと追っていませんが, 以下のようにするとちゃんと動くみたいです.

Config::CONFIGにしてしまうと、LINK_SOやTRY_LINKなどのマクロもす
べて展開されてしまいます。実行時に与えなければならないものも含
まれてたりするのでちょっとまずいです。

どうも根本的に失敗してるような気もしますが、これでとりあえずの
回避はできないでしょうか。


Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.149
diff -u -2 -p -r1.149 configure.in
--- configure.in	23 Oct 2002 17:40:14 -0000	1.149
+++ configure.in	24 Oct 2002 12:15:35 -0000
@@ -780,5 +780,5 @@ if test "$with_dln_a_out" != yes; then
 			if test "$rb_cv_binary_elf" = yes; then
 			    LDFLAGS="-Wl,-export-dynamic"
-			    LIBPATHFLAG=' -L%1$$s -Wl,-R%1$$s'
+			    LIBPATHFLAG=' -L%1$-s -Wl,-R%1$-s'
 			fi
 			rb_cv_dlopen=yes ;;


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

In This Thread