From: ngotogenome@... Date: 2016-06-28T10:54:47+00:00 Subject: [ruby-dev:49693] [Ruby trunk Bug#12527] warning: macro redefined: REG_PC and REG_SP on Solaris 10 Issue #12527 has been reported by Naohisa Goto. ---------------------------------------- Bug #12527: warning: macro redefined: REG_PC and REG_SP on Solaris 10 https://bugs.ruby-lang.org/issues/12527 * Author: Naohisa Goto * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Solaris 10 上にて、vm.c のコンパイル中に、以下のマクロ再定義のwarningが出ます。 ``` cc -errtags=yes -xO4 -xtarget=sparc64viiplus -m64 -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. -o vm.o -c vm.c "vm_insnhelper.h", line 45: warning: macro redefined: REG_PC (E_MACRO_REDEFINED) "vm_insnhelper.h", line 46: warning: macro redefined: REG_SP (E_MACRO_REDEFINED) ``` 具体的には、/usr/include/sys/regset.h の以下の定義と衝突しています。 ``` #define REG_PC (1) ``` ``` #define REG_SP REG_O6 ``` (厳密に確認はしていませんがおそらく) _XOPEN_SOURCE=500 以上を定義した場合に、これらのマクロが有効となるようです。 値は異なるようですが、 x86 (amd64) でも定義されているようです。 http://dtrace.org/blogs/rm/2011/03/14/a-trip-down-into-sysregset-h/ 幸い、今のところは、vm.c や vm.c がincludeしているファイル内では、システム側のマクロは直接・間接関わらず使用されていないように見えます。 -- https://bugs.ruby-lang.org/