From: ngotogenome@... Date: 2017-12-18T15:40:36+00:00 Subject: [ruby-dev:50366] [Ruby trunk Bug#14200] addr2line.c compile error with C89 compilers on Solaris 10 Issue #14200 has been reported by ngoto (Naohisa Goto). ---------------------------------------- Bug #14200: addr2line.c compile error with C89 compilers on Solaris 10 https://bugs.ruby-lang.org/issues/14200 * Author: ngoto (Naohisa Goto) * Status: Open * 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/