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.pdfhttps://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 <stdbool.h> 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/