Ruby 3.1 on NetBSD 8

(コメント: 0)

Ruby 3.0 and 3.1 on NetBSD 8の続きです。

Ruby 3.1でDTraceを有効にしていると、dtrace(1)を使用してコンパイル後のオブジェクトファイルを書き換えています。その結果がNetBSD 8では未定義のシンボルでリンクに失敗していました。

linking miniruby
yjit.o: In function `full_cfunc_return':
yjit.c:(.text+0xae6): undefined reference to `__dtraceenabled_ruby___cmethod__return'
yjit.c:(.text+0xbb4): undefined reference to `__dtrace_ruby___cmethod__return'
*** Error code 1

参照されるべきシンボルが別の名前で生成されていると考えていたのですが、実際は参照する側が使ってる名前が正しくないのではないかと、一通りの対応を終えた後で思いつきました。

参照する側のオブジェクトファイルyjit.oを、DTraceサポートが有効な場合に処理するオブジェクトファイルに加えると何事もなかったかのようにきちんとリンクに成功しました。

と、いうわけで最終的に(書き忘れたけど)OSのバージョンの判断方法の改善も含めた修正としてコミットしました。

戻る

コメントを追加