From: "桑村慎哉" Date: 2003-09-26T15:41:16+09:00 Subject: [ruby-dev:21413] Re: Building 1.8.0 on Solaris with Sun CC 桑村です。 <200309260421.h8Q4LKGx003789@sharui.nakada.kanuma.tochigi.jp>で、 nobu.nakada@nifty.ne.jpさんは書きました: > > At Fri, 26 Sep 2003 11:59:27 +0900, > 桑村慎哉 wrote: > > > > 32ビットはこれでいいのですが、64ビットは > > > > asm volatile ("flushw" : :); > > > > のコンパイルがエラーになり、よく分からなかったので手付かずです。 > > > > パッチのままだと32ビットのときと同じ命令になります。 > > > > > > どんなエラーでしょうか。 > > > > > > > syntax errorです。 > > いただいたパッチを1.8.0に当ててコンパイルすると、次のようになります。 > > > > cc -xO4 -xarch=v9 -KPIC -I. -I. -c array.c > > "./defines.h", line 147: syntax error before or at: : > > > > これもgcc拡張機能のような気がします。 > > どうせレジスタは指定してないし、: :ごと取ってしまいますか。 : :を取ったらコンパイルでき、make testも通りました。 これで64ビットでも動きますね。 どうもありがとうございました。 一応パッチをつけておきます。 Index: defines.h =================================================================== RCS file: /src/ruby/defines.h,v retrieving revision 1.32 diff -u -r1.32 defines.h --- defines.h 26 Sep 2003 00:52:48 -0000 1.32 +++ defines.h 26 Sep 2003 06:38:01 -0000 @@ -144,7 +144,7 @@ volatile #endif # if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) - ("flushw" : :) + ("flushw") # elif defined(linux) || defined(__linux__) ("ta 0x83") # else /* Solaris, OpenBSD, NetBSD, etc. */ -- 桑村 慎哉 (株) 富士通研究所 ITメディア研究所 CAD研究部