Project

General

Profile

Actions

Bug #14200

closed

addr2line.c compile error with C89 compilers on Solaris 10

Added by ngoto (Naohisa Goto) almost 7 years ago. Updated almost 6 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-dev:50366]

Description

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 を定義すると、
コンパイルは通るはずではありますが、それに伴う副作用もあるので、
現時点では、容易に可能なら、それを指定しなくても通るようにしたいと思っています。


Related issues 1 (0 open1 closed)

Related to Ruby master - Misc #15347: Require C99ClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0