ruby-trunk-changes r64321 - r64336

今日は addr2line.c でデバッグセクションが圧縮されてても対応できるようにする変更や、MJIT で addr2line.c の機能を使って行番号が取得できるように *.so の削除を遅延する変更などがありました。

k0kubun: r64321 2018-08-12 21:59:47 +0900

mark_ec_units() でループ回数を事前に計算してカウンタでループを回していましたが、終了条件で break するようにして不要な変数を削除しています。この break する条件を for 文の条件部(?)に反転して書いてもいいような。

k0kubun: r64322 2018-08-12 23:42:25 +0900

MJIT で実行時にコードをコンパイルする時のコンパイルオプションのデバッグ用オプションに -g1 と、リンク時のオプションに --compress-debug-sections=none を指定してデバッグ情報のセクションの圧縮を無効化するようにしています。addr2line.c の処理で行番号を取得できるようにするためとのこと。

k0kubun: r64323 2018-08-13 00:00:03 +0900

MJIT で動的にコンパイルした .so ファイルをロードしてすぐ消さずに不要になった時に消すように mswin 版と同じように遅延するようにしています。デバッグ情報を取得するためみたいです。ただし実行形式が ELF の時だけなので macOS などでは無効。

svn: r64324 2018-08-13 00:00:05 +0900

version.h の日付更新。

k0kubun: r64325 2018-08-13 00:13:06 +0900

r64322 で MJIT の実行時のコンパイル時に -Wl,--compress-debug-sections=no というオプションを追加するようにしていましたが、ビルドエラーになるのを避けるため configure で使えるかチェックしてから付けるようにしています。

k0kubun: r64326 2018-08-13 00:16:00 +0900

r64325 で追加しようとするコンパイラオプションの値が no になってたので none に修正しています。

akr: r64327 2018-08-13 01:45:02 +0900

time.c の timegm_noleapsecond() という関数でうるう秒チェックのため tm_yday を取得する処理が calc_tm_yday() という関数に定義されていたのでそちらを使うようにリファクタリングしています。

naruse: r64328 2018-08-13 11:56:06 +0900

r64322 で MJIT でコンパイルする時に行番号を取得するためにデバックセクションの圧縮を無効化するオプションをつけるようにしていましたが、addr2line.c の rb_dump_backtrace_with_lines() で圧縮されてても行番号が取得できるように機能拡張しています。

naruse: r64329 2018-08-13 15:05:39 +0900

r64328 の圧縮されたデバッグセクション対応を revert しています。たぶん CI が失敗したのでしょう。

nobu: r64330 2018-08-13 15:09:57 +0900

mingwcygwin 環境で Makefile の LIBRUBY_DLDFLAGS にリンカオプションを追加する時に DLDFLAGS を参照してしまってたので、これより上の LIBRUBY_DLDFLAGS の変更が無視されてたのを修正しています。また solaris の時の処理では GCC かどうかで分岐していたところを $linker_flag という変数を使って分岐なしで書くようにリファクタリングしています。

naruse: r64331 2018-08-13 15:20:12 +0900

r64328 のデバッグセクションの圧縮対応のリトライ。 zlib.h がない環境をサポートするように考慮するようにしているみたいです。なんですがついでに r64330 の configure.ac の変更も revertしてしまっているみたいですね。

naruse: r64332 2018-08-13 15:31:37 +0900

r64331 で libz がない環境では parse_compressed_debug_line() を定義しないようにして警告抑制するようにしています(多分)。

naruse: r64333 2018-08-13 16:55:43 +0900

r64331 でうっかり r64330 を巻き込んで revert してしまっていたので再適用しています。

naruse: r64334 2018-08-13 17:48:30 +0900

r64331 で(再度)追加した parse_compressed_debug_line() で正常終了時に誤って確保したメモリをエラー時の後始末の free() を実行してしまっていたのを修正しています。

k0kubun: r64335 2018-08-13 20:02:37 +0900

r64325 で MJIT の実行時コンパイルのリンカオプションでデバッグセクションの圧縮を無効化するようにしたのは r64331 で addr2line.c が圧縮に対応するようにしたので不要になったため revert しています。

kazu: r64336 2018-08-13 21:22:43 +0900

標準添付ライブラリ rinda のテストで Rinda::TupleSpace の TupleBag を定期的に掃除する keeper という Thread を不要なテストでは止めておくようにしています。