1.0.0 (2018年3月27日)

新しいアーキテクチャ:

  • ARM64のサポート。

新機能:

  • コンパイル時の配列境界のチェック。宣言された境界を越える配列の間接参照が、コンパイル時エラーになりました。配列を間接参照するには、((char *)curlwpsinfo->pr_name)[32]などのキャストを使用します。

  • カーネル4.12から4.14のトランスレータのサポート。

  • ユーザー・スペース・トレースの初期PIDプロバイダのサポートが追加されました。

  • デザイン変更後のビルド・システムでは、4.14.yバージョンのカーネルでトランスレータを変更できるようになりました。新しいカーネルに移植すると、新しいカーネル・バージョンをdefine_for_kernelマクロのリストに追加する必要がなくなります(変更が実際に必要でない場合)。

バグ修正:

  • アドレスはmod()によって正しく正規化されるため、集積でのmod()の使用が改善されました。

  • DTraceは、組込みモジュールまたはコア・カーネル内のシンボルが間違ったモジュールにあることを考慮しなくなります。通常、シンボルのアドレス、サイズおよび名前へのマッピングは、特に重複しているシンボル、名前が重複しているシンボルおよび弱いシンボルに関してより適切です。

  • 対象となるプロセスがustack()、umod()、usym()、dtrace -cまたは-p exec()によって捕捉された場合にDTraceコンシューマが解放されたメモリーを間接参照する可能性のあるインタフェースの問題が修正されました。これには、libdtraceの特定のユーザーを変更し、再リンクする必要があります。次の「ライブラリ・インタフェースの変更」を参照してください。

  • リトル・エンディアン・マシンで、IPプロバイダのipv6_tclassおよびipv6_flowフィールドが間違っていました。

  • 終了時にまれなアサーションの失敗を修正します。

  • dtrace -Sが最初のアクションだけを逆アセンブルするのではなく、2つ以上のアクションを含む文内のすべてのアクションを逆アセンブルするようになりました。

  • KPTIの変更によって導入されたアドレス・ゼロの新しいシンボルは、シンボル解決から除外されます。

  • テストスイートおよびテストスイート・ランナーの改善。

ライブラリ・インタフェースの変更:

  • dtrace_proc_*()関数で、不透明なハンドルの構造体dtrace_procに必要な型が変更されました。この不透明なハンドルからPIDを取得する新しい関数dtrace_proc_getpid()があります。dtrace_proc_grab()の名前がdtrace_proc_grab_pid()に変更されました。「INCOMPATIBILITIES」を参照してください。

    これに対応してライブラリのsonameがlibdtrace.so.1にバンプされました。すべてのコンシューマは再リンクする必要がありますが、dtrace_proc_*() APIを使用していないコンシューマはコードを変更する必要がありません。コードの変更が必要な箇所はすべてコンパイル時エラーになるため、変更が必要な箇所を簡単に確認できます。

テストスイートの変更:

  • テスト・ファイルに新しい@@tagを介して追加されたタグ付け: 特定のタグを使用したテストは、環境のTEST_TAGS='a !b'およびruntest.shへの--tag/--no-tag引数を使用してリクエストできます。すべてのタグの交差が実行されるため、前出の例ではaでタグ付けされ、bでタグ付けされていないテストのみが実行されます。test/tags.defaultファイルでデフォルトで適用されるタグを指定し、test/tags.$arch.defaultで1つのアーキテクチャにのみ適用されるタグを指定できます。