Project

General

Profile

Actions

Bug #14439

closed

build failed on NetBSD 7.1 with MJIT

Added by usa (Usaku NAKAMURA) about 6 years ago. Updated about 6 years ago.

Status:
Closed
Target version:
[ruby-dev:50464]

Description

MJITマージおめでとうございます。
というわけで手元のNetBSD/i386 7.1で試そうとしたら、残念ながらビルドエラーになりました。

error in final header file:
/tmp/20180204-20715-187ick.c:4961:1: error: static declaration of ‘sigaddset’ follows non-static declaration
 sigaddset(sigset_t *set, int signo)
 ^
compilation terminated due to -Wfatal-errors.
*** Error code 1

Stop.

よくわかりませんが、そのちょっと上で

transform_mjit_header: making external definition of 'sigfillset' static inline
transform_mjit_header: making external definition of 'sigemptyset' static inline
transform_mjit_header: making external definition of 'sigismember' static inline
transform_mjit_header: making external definition of 'sigdelset' static inline
transform_mjit_header: making external definition of 'sigaddset' static inline

とか言ってるのですが、libc提供関数をどうにかしようとしてるのはまずそうな雰囲気を感じます。
ちなみに、こいつらは /usr/include/signal.h の中でinline関数として定義されているっぽいです。

取り急ぎ報告まで。

Updated by taca (Takahiro Kambe) about 6 years ago

In message
on Sun, 04 Feb 2018 12:28:54 +0000 (UTC),
wrote:

というわけで手元のNetBSD/i386 7.1で試そうとしたら、残念ながらビルドエラーになりました。
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/lang/ruby25-base/patches/patch-configure?rev=1.4

の、

@@ -20224,6 +20229,8 @@ else

ifdef _MSC_VER

include <malloc.h>

define alloca _alloca

+# elif defined(NetBSD) || defined(FreeBSD) || defined(DragonFly) || defined(OpenBSD)
+# include <stdlib.h>

else

ifdef HAVE_ALLOCA_H

include <alloca.h>

辺りでしょうか?

--
神戸 隆博 / Takahiro Kambe

Updated by usa (Usaku NAKAMURA) about 6 years ago

手元のconfigureには該当行は存在するので、たぶん関係ないかと。

Actions #3

Updated by k0kubun (Takashi Kokubun) about 6 years ago

  • Status changed from Assigned to Closed

Applied in changeset trunk|r62235.


transform_mjit_header.rb: restrict transformation

to whitelisted patterns. This fix is for NetBSD.

[Bug #14439]

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0