2.0.0-1.7 (2021年9月9日)

スタンドアロンのユーザー・スペース実装の7番目のエラータ。

これは、機能が制限されたプレリリースです。

新機能:

  • SDTプローブに渡された引数を、arg0からarg9の組込み変数を使用して取得できるようになりました。

  • BPF検証機能ログの生成を要求する-xbpflogオプションが追加され、BPFプログラムのロードを試みた結果のsfにかかわらず表示されます。このオプションは、Dオプション・プラグマを使用して設定することもできます。

  • strjoin()サブルーチンが実装されました。

  • substr()サブルーチンが実装されました。

バグ修正:

  • トランポリン生成が修正され、コードの生成中に正しいプローブ・コンテキストが設定されるようになりました。

  • 特定のデータ型のアライメント・サイズを決定するために使用される型のアライメント処理コードは、列挙を整数として処理しており、これは正しくありませんでした。適切にアラインメントを決定し、libctfに関連する障害を回避できるようになりました。

  • BEGINプローブ実行内でのERRORプローブ呼出しの処理が修正されました。

  • トレース出力バッファ内の文字列データのサイズが、2バイトの長さの接頭辞と終了NULバイトに対応するように修正されました。

  • 値コピー操作のデータ・サイズが修正されました。このサイズは、宛先がより小さい場合でもソース・データのデータ・サイズでのみ決定されていました。2つのサイズの小さい方が使用されるようになりました。

内部変更:

  • プロバイダ実装で標準の関数を使用して、プローブ起動時のCPUレジスタの状態をクリアまたはコピーするようになりました。

  • 新しいマクロset_upper_bound()およびset_lower_bound()は、C-to-BPFソース・コードで使用できます。これらのマクロを使用して、BPF検証機能の値および範囲境界に関するヒントを提供します。

  • 事前コピーされたBPFコードでSTRSZ BPFシンボルを使用して、最大文字列サイズを表すことができるようになりました。

  • プリコンパイルされたdt_memcpy()関数は、bpf_probe_read() BPFヘルパー関数の呼出しに置き換えられました。

  • BPFアセンブラ・ソース・ファイル(.S)のオブジェクト・ファイル(.o)へのコンパイルのサポートが追加されました。この機能では、GCC BPFクロス・コンパイラが使用されます。

  • 汎用スクラッチ・メモリー領域に、そのベース・アドレスへのポインタからアクセスできるようになりました。このポインタはdctx->memにあります。この領域を使用するようにスタック・トレース実装が更新されました。このスクラッチ・メモリー領域は、文字列操作関数で使用される一時文字列領域を提供する場合にも使用されます。

  • 文字列長の接頭辞が、可変長の整数から2バイトの固定幅の整数に変更されました。これは、BPF検証機能の制限により必要になりました。これは、文字列処理コードのより永続的な修正が行われる間の暫定的な解決策です。