From: takashikkbn@... Date: 2019-01-06T14:17:11+00:00 Subject: [ruby-dev:50745] [Ruby trunk Bug#14200] addr2line.c compile error with C89 compilers on Solaris 10 Issue #14200 has been updated by k0kubun (Takashi Kokubun). 最初に https://github.com/ruby/ruby/pull/2064 で列挙した機能に関してもう少し調べたところ、stdbool.h 以外はSun Studio 11でもドキュメントに記述が見られますが https://docs.oracle.com/cd/E19422-01/819-4764/819-4764.pdf 、 https://docs.oracle.com/cd/E27069_01/html/E26448/gkeza.html を見るとstdbool.hは12.3で追加されたように見えるので、12.4以下では-xc99=allが渡るように保証しつつも、stdbool.h に関しては 12.2以下のために r61326 と同様 missing/stdbool.h を使っておくのが無難そうですね。 ---------------------------------------- Bug #14200: addr2line.c compile error with C89 compilers on Solaris 10 https://bugs.ruby-lang.org/issues/14200#change-76095 * Author: ngoto (Naohisa Goto) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- r60841 にて、 addr2line.c では stdbool.h を使用するようになりましたが、 stdbool.h は C99 にて追加された仕様のため、 デフォルトが C89 になっている Solaris 10 上の古めのコンパイラの多くでは、 Solarisの標準ヘッダファイルに含まれるC標準バージョンチェックを通過できず、 以下のようなエラーになり、コンパイルに失敗します。 ~~~ cc -errtags=yes -xO4 -xtarget=sparc64xplus -m64 -DRUBY_DEVEL=1 -DRUBY_EXPORT -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -D_XOPEN_SOURCE=500 -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -I./enc/unicode/10.0.0 -o addr2line.o -c addr2line.c "/usr/include/stdbool.h", line 42: #error: "Use of is valid only in a c99 compilation environment." cc: acomp failed for addr2line.c make: *** [addr2line.o] Error 2 ~~~ これは Solaris 10 上の Oracle Solaris Studio 12.4 でのエラーです。 他に、古い gcc や Fujitsu C Compiler などでも同様のエラーとなります。 なお、Solaris10上の多少古めのコンパイラでも、C99は概ねサポートしており、 オプションでC99準拠を指定したり、それ相当の _XOPEN_SOURCE を定義すると、 コンパイルは通るはずではありますが、それに伴う副作用もあるので、 現時点では、容易に可能なら、それを指定しなくても通るようにしたいと思っています。 -- https://bugs.ruby-lang.org/