Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 18221] ファイルの概要

このコミットは、Go言語のsyscallパッケージがOpenBSDシステムにおけるABI(Application Binary Interface)の変更に対応するために行われたものです。具体的には、OpenBSDのシステムコール番号、定数、およびデータ構造の定義が変更されたことに伴い、GoのAPI互換性チェックファイルであるapi/except.txtapi/next.txtが更新されています。

コミット

commit 8aaca37383e4cf4157b999e117216006841978aa
Author: Joel Sing <jsing@google.com>
Date:   Sat Jan 11 20:16:39 2014 +1100

    api: update except.txt and next.txt to reflect openbsd system ABI break
    
    Update #7049
    
    R=golang-codereviews, minux.ma, mikioh.mikioh
    CC=golang-codereviews
    https://golang.org/cl/49470052

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/8aaca37383e4cf4157b999e117216006841978aa

元コミット内容

このコミットは、OpenBSDのシステムABIの変更を反映するために、api/except.txtapi/next.txtを更新するものです。これは、GoのsyscallパッケージがOpenBSD上で正しく機能し続けるために必要な変更です。

変更の背景

Go言語の標準ライブラリ、特にsyscallパッケージは、各オペレーティングシステム(OS)のシステムコールや低レベルのAPIと直接連携します。OSのバージョンアップやパッチ適用によって、これらのシステムコールやデータ構造の定義(ABI)が変更されることがあります。OpenBSDでは、特定のバージョンアップにおいてシステムABIに破壊的な変更(ABI break)が発生しました。

このようなABIの変更が発生すると、Goのコンパイラやランタイムが期待するシステムコール番号、構造体のサイズ、フィールドのオフセットなどが実際のOSと食い違い、プログラムがクラッシュしたり、予期せぬ動作をしたりする原因となります。Goプロジェクトでは、このようなOS固有のABI変更に追従し、Goプログラムが異なるOSバージョンでも安定して動作するように、api/except.txtapi/next.txtというファイルを管理しています。

このコミットは、OpenBSDのABI変更に対応し、GoのsyscallパッケージがOpenBSDの新しいABIに適合するように、これらの互換性チェックファイルを更新することを目的としています。これにより、GoプログラムがOpenBSDの最新環境でも問題なく動作することが保証されます。

前提知識の解説

ABI (Application Binary Interface)

ABIは、オペレーティングシステムとアプリケーション、またはアプリケーションの異なるモジュール間でのバイナリレベルのインターフェースを定義するものです。具体的には、関数呼び出しの規約(引数の渡し方、戻り値の受け取り方)、データ構造のメモリレイアウト(構造体のサイズ、フィールドのオフセット、アライメント)、システムコール番号、レジスタの使用方法などが含まれます。

ABIが変更されると、古いABIでコンパイルされたバイナリは新しいABIのOS上で正しく動作しない可能性があります。これは、OSが期待するシステムコール番号やデータ構造のレイアウトが、バイナリが期待するものと異なるためです。

Go言語のsyscallパッケージ

Go言語のsyscallパッケージは、OSの低レベルな機能(システムコール)に直接アクセスするためのインターフェースを提供します。ファイル操作、ネットワーク通信、プロセス管理など、OSが提供する多くの機能はシステムコールを通じて行われます。syscallパッケージは、GoプログラムがこれらのOS固有の機能を利用できるように、C言語の標準ライブラリ(libc)を介さずに直接システムコールを呼び出すためのラッパーを提供します。

api/except.txtapi/next.txt

Goプロジェクトでは、GoのAPI互換性を維持するために、api/except.txtapi/next.txtという特殊なファイルを管理しています。

  • api/except.txt: このファイルには、Goのリリース間でAPIの互換性が意図的に破壊された変更(breaking changes)が記録されます。通常、Goの新しいメジャーリリース(例: Go 1.x から Go 1.y)ではAPIの互換性が維持されますが、特定の理由(セキュリティ修正、バグ修正、パフォーマンス改善など)で互換性を破る必要がある場合に、その変更がこのファイルに記載されます。このファイルに記載された変更は、GoのAPI互換性チェックツールによって許容されます。
  • api/next.txt: このファイルには、次のGoのメジャーリリースで導入される予定のAPI変更が記録されます。これは、開発中のGoバージョン(masterブランチなど)でAPIが変更された際に、その変更が将来のリリースで正式に導入されることを示すものです。このファイルもAPI互換性チェックツールによって参照され、開発中のAPI変更が意図されたものであることを確認します。

これらのファイルは、GoのAPI互換性チェックツール(go tool apiなど)によって使用され、GoのAPIが意図せず変更されたり、互換性が損なわれたりすることを防ぎます。OSのABI変更に対応するためにsyscallパッケージの定義を更新する場合、それはGoのAPIから見ると変更とみなされるため、これらのファイルにその変更を記録する必要があります。

技術的詳細

このコミットは、OpenBSDのシステムABI変更に対応するため、GoのsyscallパッケージがOpenBSDの386アーキテクチャ(32ビット)およびamd64アーキテクチャ(64ビット)の両方において、CGO(C言語との連携)の有無にかかわらず、多数の定数と構造体定義を更新しています。

具体的には、以下の種類の変更が含まれています。

  1. システムコール番号の変更:

    • SYS_CLOCK_GETRES, SYS_CLOCK_GETTIME, SYS_CLOCK_SETTIMEなどの時間関連のシステムコール番号。
    • SYS_FSTAT, SYS_FSTATAT, SYS_FSTATFS, SYS_FHSTATFSなどのファイルシステム関連のシステムコール番号。
    • SYS_GETDIRENTRIES, SYS_GETFSSTATなどのディレクトリおよびファイルシステム統計関連のシステムコール番号。
    • SYS_GETITIMER, SYS_SETITIMER, SYS_GETRUSAGE, SYS_GETTIMEOFDAY, SYS_SETTIMEOFDAYなどの時間およびリソース使用量関連のシステムコール番号。
    • SYS_KEVENT (kqueueイベント通知システム)、SYS_NANOSLEEP (高精度スリープ)、SYS_SELECT (I/O多重化) などのシステムコール番号。
    • SYS_UTIMENSAT, SYS_UTIMES (タイムスタンプ更新)、SYS_WAIT4 (プロセス待機)、SYS___THRSLEEP (スレッドスリープ) などのシステムコール番号。
    • api/next.txtでは、SYS_GETDENTS (ディレクトリエントリー取得)、SYS_PPOLL, SYS_PSELECT (I/O多重化の拡張)、SYS_UTRACE (トレース機能) など、より新しいシステムコール番号が追加されています。
  2. ネットワーク関連の定数変更:

    • BIOCGRTIMEOUT, BIOCSRTIMEOUT (BPFタイムアウト関連)。
    • IPV6_FAITH, IPV6_OPTIONS, IPV6_RTHDR_STRICT, IPV6_SOCKOPT_RESERVED1 (IPv6ソケットオプション関連)。
    • RTF_FMASK, RTM_VERSION (ルーティングテーブルメッセージ関連)。
    • SIOCBRDGDADDR, SIOCBRDGGPARAM, SIOCBRDGSADDR (ブリッジデバイス関連)。
    • SIOCGIFGENERIC, SIOCSIFGENERIC (汎用インターフェース情報関連)。
    • api/next.txtでは、IPPROTO_DIVERT_INIT, IPPROTO_DIVERT_RESP, IPV6_RECVDSTPORT, IP_DIVERTFL, TCP_NOPUSHなどの新しいネットワークプロトコルやソケットオプション関連の定数、SIOCGETVLAN, SIOCSETVLAN, SIOCGIFHARDMTU, SIOCGLIFPHYTTL, SIOCSLIFPHYTTL, SIOCGSPPPPARAMS, SIOCSSPPPPARAMS, SIOCGVNETID, SIOCSVNETIDなどのインターフェース設定関連の定数が追加されています。
  3. 構造体定義の変更:

    • SizeofIfData, SizeofIfMsghdr, SizeofRtMetrics, SizeofRtMsghdrといった構造体のサイズ変更。
    • Dirent構造体のFilenoフィールドがuint32からuint64に変更され、OffフィールドやパディングフィールドX__d_paddingが追加。
    • FdSet構造体のBitsフィールドが[32]int32から[32]uint32に変更。
    • Kevent_t構造体のDataフィールドがint32からint64に変更され、Identフィールドがuint32からuint64に変更(amd64の場合)。
    • Mclpool構造体のGrownフィールドがuint32からint32に変更。
    • RtMetrics構造体のExpireフィールドがuint32からint64に変更され、Padフィールドが追加。
    • Stat_t構造体のInoフィールドがuint32からuint64に変更され、Lspare0, Lspare1, Qspareなどのパディングフィールドが変更または追加。
    • Statfs_t構造体のF_ctimeフィールドがuint32からuint64に変更され、F_mntfromspecやパディングフィールドPad_cgo_0, Pad_cgo_1が追加。
    • Timespec構造体のSecフィールドがint32からint64に変更され、パディングフィールドPad_cgo_0が追加。
    • Timeval構造体のSecフィールドがint32からint64に変更。

これらの変更は、OpenBSDのカーネルAPIが進化し、特に64ビットシステムでのデータ型の拡張(例: uint32からuint64への変更)や、新しいシステムコール、ネットワーク機能の追加が行われたことを示しています。Goのsyscallパッケージは、これらの変更に追従することで、OpenBSD上でのGoプログラムの安定性と互換性を確保しています。

コアとなるコードの変更箇所

このコミットで直接変更されているのは、Goのソースコードリポジトリ内の以下の2つのファイルです。

  • api/except.txt
  • api/next.txt

これらのファイルは、GoのAPI互換性チェックのためのメタデータファイルであり、Go言語の実際のGoコード(.goファイル)ではありません。しかし、これらのファイルに記載された内容は、GoのsyscallパッケージがOpenBSDのABI変更にどのように対応しているかを示す重要な情報を含んでいます。

コアとなるコードの解説

api/except.txtapi/next.txtの変更は、GoのsyscallパッケージがOpenBSDの特定のバージョン(このコミットの時点での最新版、または将来のバージョン)のABIに適合するように、Goのビルドシステムに指示を与えるものです。

これらのファイルのエントリは、以下の形式で記述されています。

pkg <パッケージ名> (<OS>-<アーキテクチャ>), <要素の種類> <要素名> = <値>
pkg <パッケージ名> (<OS>-<アーキテクチャ>), <要素の種類> <要素名> <追加情報>
pkg <パッケージ名> (<OS>-<アーキテクチャ>), type <型名> struct, <フィールド名> <型>

例:

  • pkg syscall (openbsd-386), const BIOCGRTIMEOUT = 1074283118
    • これは、syscallパッケージのopenbsd-386環境において、定数BIOCGRTIMEOUTの値が1074283118であることを示しています。
  • pkg syscall (openbsd-amd64), type Stat_t struct, Ino uint32
    • これは、syscallパッケージのopenbsd-amd64環境において、Stat_t構造体のInoフィールドがuint32型であることを示しています。

このコミットでは、api/except.txtapi/next.txtの両方に、OpenBSDの386およびamd64アーキテクチャ(CGOの有無を含む)向けのsyscallパッケージに関する多数のエントリが追加されています。

except.txtに追加されたエントリは、OpenBSDのABI変更によってGoのsyscallパッケージの既存の定義が変更されたことを示しています。これは、GoのAPI互換性チェックにおいて、これらの変更が意図されたものであるため、エラーとして扱わないようにするためのものです。

next.txtに追加されたエントリは、OpenBSDのABI変更によってGoのsyscallパッケージに新しい定数や構造体フィールドが追加されたことを示しています。これは、GoのAPI互換性チェックにおいて、これらの新しい要素が将来のGoリリースで導入される予定であることを示すものです。

これらのファイルが更新されることで、GoのビルドシステムはOpenBSDの新しいABIに対応したsyscallパッケージを生成できるようになり、GoプログラムがOpenBSDの最新環境で正しく動作することが保証されます。

関連リンク

  • Go issue #7049: https://github.com/golang/go/issues/7049
    • このコミットが解決するGoのIssueです。OpenBSDのABI変更に関する議論や背景情報が含まれている可能性があります。
  • Go Code Review 49470052: https://golang.org/cl/49470052
    • このコミットに対応するGoのコードレビューページです。詳細な変更内容やレビューコメントが確認できます。

参考にした情報源リンク

  • Go言語のapi/except.txtapi/next.txtに関する公式ドキュメントやGoプロジェクトの慣習に関する情報源(Goの公式ブログ、Goのソースコードリポジトリ内のドキュメントなど)。
  • OpenBSDのABI変更に関する情報源(OpenBSDのリリースノート、開発者メーリングリストのアーカイブなど)。
  • システムコール、ABI、Goのsyscallパッケージに関する一般的な技術解説。
  • go tool apiコマンドに関する情報。
  • BIOCGRTIMEOUT, SYS_CLOCK_GETRES, RTM_VERSIONなどの特定の定数やシステムコールに関するOpenBSDのmanページやドキュメント。

[インデックス 18221] ファイルの概要

このコミットは、Go言語のsyscallパッケージがOpenBSDシステムにおけるABI(Application Binary Interface)の変更に対応するために行われたものです。具体的には、OpenBSDのシステムコール番号、定数、およびデータ構造の定義が変更されたことに伴い、GoのAPI互換性チェックファイルであるapi/except.txtapi/next.txtが更新されています。

コミット

commit 8aaca37383e4cf4157b999e117216006841978aa
Author: Joel Sing <jsing@google.com>
Date:   Sat Jan 11 20:16:39 2014 +1100

    api: update except.txt and next.txt to reflect openbsd system ABI break
    
    Update #7049
    
    R=golang-codereviews, minux.ma, mikioh.mikioh
    CC=golang-codereviews
    https://golang.org/cl/49470052

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/8aaca37383e4cf4157b999e117216006841978aa

元コミット内容

このコミットは、OpenBSDのシステムABIの変更を反映するために、api/except.txtapi/next.txtを更新するものです。これは、GoのsyscallパッケージがOpenBSD上で正しく機能し続けるために必要な変更です。

変更の背景

Go言語の標準ライブラリ、特にsyscallパッケージは、各オペレーティングシステム(OS)のシステムコールや低レベルのAPIと直接連携します。OSのバージョンアップやパッチ適用によって、これらのシステムコールやデータ構造の定義(ABI)が変更されることがあります。

OpenBSDは、その設計思想として、ABI互換性を頻繁に破壊する方針を採用していることで知られています。これは、開発者がオペレーティングシステムを迅速に改善・洗練させることを可能にする意図的な選択です。LinuxやWindowsのようなOSが長期的なバイナリ互換性の維持に努めるのとは異なり、OpenBSDはプラットフォーム開発者の体験を優先します。これにより、API変更の柔軟性が高まり、古く、効率の悪いAPIを維持する負担が軽減されます。この方針の結果として、ABIが変更されるたびに、すべてのサードパーティ製パッケージやアプリケーションは、新しいOpenBSDリリースで正しく機能するためにソースから再コンパイルされる必要があります。

このコミットは、OpenBSDのこのようなABI変更に対応し、GoのsyscallパッケージがOpenBSDの新しいABIに適合するように、これらの互換性チェックファイルを更新することを目的としています。これにより、GoプログラムがOpenBSDの最新環境でも問題なく動作することが保証されます。

前提知識の解説

ABI (Application Binary Interface)

ABIは、オペレーティングシステムとアプリケーション、またはアプリケーションの異なるモジュール間でのバイナリレベルのインターフェースを定義するものです。具体的には、関数呼び出しの規約(引数の渡し方、戻り値の受け取り方)、データ構造のメモリレイアウト(構造体のサイズ、フィールドのオフセット、アライメント)、システムコール番号、レジスタの使用方法などが含まれます。

ABIが変更されると、古いABIでコンパイルされたバイナリは新しいABIのOS上で正しく動作しない可能性があります。これは、OSが期待するシステムコール番号やデータ構造のレイアウトが、バイナリが期待するものと異なるためです。OpenBSDのようにABIを意図的に変更するOSでは、アプリケーション開発者はOSのアップデートに際して、Goのような言語で書かれたプログラムであっても、そのOS固有のシステムコールを扱う部分については再コンパイルやコードの調整が必要になる場合があります。

Go言語のsyscallパッケージ

Go言語のsyscallパッケージは、OSの低レベルな機能(システムコール)に直接アクセスするためのインターフェースを提供します。ファイル操作、ネットワーク通信、プロセス管理など、OSが提供する多くの機能はシステムコールを通じて行われます。syscallパッケージは、GoプログラムがこれらのOS固有の機能を利用できるように、C言語の標準ライブラリ(libc)を介さずに直接システムコールを呼び出すためのラッパーを提供します。

api/except.txtapi/next.txt

Goプロジェクトでは、GoのAPI互換性を維持するために、api/except.txtapi/next.txtという特殊なファイルを管理しています。

  • api/except.txt: このファイルには、Goのリリース間でAPIの互換性が意図的に破壊された変更(breaking changes)が記録されます。通常、Goの新しいメジャーリリース(例: Go 1.x から Go 1.y)ではAPIの互換性が維持されますが、特定の理由(セキュリティ修正、バグ修正、パフォーマンス改善など)で互換性を破る必要がある場合に、その変更がこのファイルに記載されます。このファイルに記載された変更は、GoのAPI互換性チェックツールによって許容されます。
  • api/next.txt: このファイルには、次のGoのメジャーリリースで導入される予定のAPI変更が記録されます。これは、開発中のGoバージョン(masterブランチなど)でAPIが変更された際に、その変更が将来のリリースで正式に導入されることを示すものです。このファイルもAPI互換性チェックツールによって参照され、開発中のAPI変更が意図されたものであることを確認します。

これらのファイルは、GoのAPI互換性チェックツール(go tool apiなど)によって使用され、GoのAPIが意図せず変更されたり、互換性が損なわれたりすることを防ぎます。OSのABI変更に対応するためにsyscallパッケージの定義を更新する場合、それはGoのAPIから見ると変更とみなされるため、これらのファイルにその変更を記録する必要があります。

技術的詳細

このコミットは、OpenBSDのシステムABI変更に対応するため、GoのsyscallパッケージがOpenBSDの386アーキテクチャ(32ビット)およびamd64アーキテクチャ(64ビット)の両方において、CGO(C言語との連携)の有無にかかわらず、多数の定数と構造体定義を更新しています。

具体的には、以下の種類の変更が含まれています。

  1. システムコール番号の変更:

    • SYS_CLOCK_GETRES, SYS_CLOCK_GETTIME, SYS_CLOCK_SETTIMEなどの時間関連のシステムコール番号。
    • SYS_FSTAT, SYS_FSTATAT, SYS_FSTATFS, SYS_FHSTATFSなどのファイルシステム関連のシステムコール番号。
    • SYS_GETDIRENTRIES, SYS_GETFSSTATなどのディレクトリおよびファイルシステム統計関連のシステムコール番号。
    • SYS_GETITIMER, SYS_SETITIMER, SYS_GETRUSAGE, SYS_GETTIMEOFDAY, SYS_SETTIMEOFDAYなどの時間およびリソース使用量関連のシステムコール番号。
    • SYS_KEVENT (kqueueイベント通知システム)、SYS_NANOSLEEP (高精度スリープ)、SYS_SELECT (I/O多重化) などのシステムコール番号。
    • SYS_UTIMENSAT, SYS_UTIMES (タイムスタンプ更新)、SYS_WAIT4 (プロセス待機)、SYS___THRSLEEP (スレッドスリープ) などのシステムコール番号。
    • api/next.txtでは、SYS_GETDENTS (ディレクトリエントリー取得)、SYS_PPOLL, SYS_PSELECT (I/O多重化の拡張)、SYS_UTRACE (トレース機能) など、より新しいシステムコール番号が追加されています。
  2. ネットワーク関連の定数変更:

    • BIOCGRTIMEOUT, BIOCSRTIMEOUT (BPFタイムアウト関連)。
    • IPV6_FAITH, IPV6_OPTIONS, IPV6_RTHDR_STRICT, IPV6_SOCKOPT_RESERVED1 (IPv6ソケットオプション関連)。
    • RTF_FMASK, RTM_VERSION (ルーティングテーブルメッセージ関連)。
    • SIOCBRDGDADDR, SIOCBRDGGPARAM, SIOCBRDGSADDR (ブリッジデバイス関連)。
    • SIOCGIFGENERIC, SIOCSIFGENERIC (汎用インターフェース情報関連)。
    • api/next.txtでは、IPPROTO_DIVERT_INIT, IPPROTO_DIVERT_RESP, IPV6_RECVDSTPORT, IP_DIVERTFL, TCP_NOPUSHなどの新しいネットワークプロトコルやソケットオプション関連の定数、SIOCGETVLAN, SIOCSETVLAN, SIOCGIFHARDMTU, SIOCGLIFPHYTTL, SIOCSLIFPHYTTL, SIOCGSPPPPARAMS, SIOCSSPPPPARAMS, SIOCGVNETID, SIOCSVNETIDなどのインターフェース設定関連の定数が追加されています。
  3. 構造体定義の変更:

    • SizeofIfData, SizeofIfMsghdr, SizeofRtMetrics, SizeofRtMsghdrといった構造体のサイズ変更。
    • Dirent構造体のFilenoフィールドがuint32からuint64に変更され、OffフィールドやパディングフィールドX__d_paddingが追加。
    • FdSet構造体のBitsフィールドが[32]int32から[32]uint32に変更。
    • Kevent_t構造体のDataフィールドがint32からint64に変更され、Identフィールドがuint32からuint64に変更(amd64の場合)。
    • Mclpool構造体のGrownフィールドがuint32からint32に変更。
    • RtMetrics構造体のExpireフィールドがuint32からint64に変更され、Padフィールドが追加。
    • Stat_t構造体のInoフィールドがuint32からuint64に変更され、Lspare0, Lspare1, Qspareなどのパディングフィールドが変更または追加。
    • Statfs_t構造体のF_ctimeフィールドがuint32からuint64に変更され、F_mntfromspecやパディングフィールドPad_cgo_0, Pad_cgo_1が追加。
    • Timespec構造体のSecフィールドがint32からint64に変更され、パディングフィールドPad_cgo_0が追加。
    • Timeval構造体のSecフィールドがint32からint64に変更。

これらの変更は、OpenBSDのカーネルAPIが進化し、特に64ビットシステムでのデータ型の拡張(例: uint32からuint64への変更)や、新しいシステムコール、ネットワーク機能の追加が行われたことを示しています。Goのsyscallパッケージは、これらの変更に追従することで、OpenBSD上でのGoプログラムの安定性と互換性を確保しています。

コアとなるコードの変更箇所

このコミットで直接変更されているのは、Goのソースコードリポジトリ内の以下の2つのファイルです。

  • api/except.txt
  • api/next.txt

これらのファイルは、GoのAPI互換性チェックのためのメタデータファイルであり、Go言語の実際のGoコード(.goファイル)ではありません。しかし、これらのファイルに記載された内容は、GoのsyscallパッケージがOpenBSDのABI変更にどのように対応しているかを示す重要な情報を含んでいます。

コアとなるコードの解説

api/except.txtapi/next.txtの変更は、GoのsyscallパッケージがOpenBSDの特定のバージョン(このコミットの時点での最新版、または将来のバージョン)のABIに適合するように、Goのビルドシステムに指示を与えるものです。

これらのファイルのエントリは、以下の形式で記述されています。

pkg <パッケージ名> (<OS>-<アーキテクチャ>), <要素の種類> <要素名> = <値>
pkg <パッケージ名> (<OS>-<アーキテクチャ>), <要素の種類> <要素名> <追加情報>
pkg <パッケージ名> (<OS>-<アーキテクチャ>), type <型名> struct, <フィールド名> <型>

例:

  • pkg syscall (openbsd-386), const BIOCGRTIMEOUT = 1074283118
    • これは、syscallパッケージのopenbsd-386環境において、定数BIOCGRTIMEOUTの値が1074283118であることを示しています。
  • pkg syscall (openbsd-amd64), type Stat_t struct, Ino uint32
    • これは、syscallパッケージのopenbsd-amd64環境において、Stat_t構造体のInoフィールドがuint32型であることを示しています。

このコミットでは、api/except.txtapi/next.txtの両方に、OpenBSDの386およびamd64アーキテクチャ(CGOの有無を含む)向けのsyscallパッケージに関する多数のエントリが追加されています。

except.txtに追加されたエントリは、OpenBSDのABI変更によってGoのsyscallパッケージの既存の定義が変更されたことを示しています。これは、GoのAPI互換性チェックにおいて、これらの変更が意図されたものであるため、エラーとして扱わないようにするためのものです。

next.txtに追加されたエントリは、OpenBSDのABI変更によってGoのsyscallパッケージに新しい定数や構造体フィールドが追加されたことを示しています。これは、GoのAPI互換性チェックにおいて、これらの新しい要素が将来のGoリリースで導入される予定であることを示すものです。

これらのファイルが更新されることで、GoのビルドシステムはOpenBSDの新しいABIに対応したsyscallパッケージを生成できるようになり、GoプログラムがOpenBSDの最新環境で正しく動作することが保証されます。

関連リンク

  • Go issue #7049: https://github.com/golang/go/issues/7049
    • このコミットが解決するGoのIssueです。OpenBSDのABI変更に関する議論や背景情報が含まれている可能性があります。
  • Go Code Review 49470052: https://golang.org/cl/49470052
    • このコミットに対応するGoのコードレビューページです。詳細な変更内容やレビューコメントが確認できます。

参考にした情報源リンク

  • Go言語のapi/except.txtapi/next.txtに関する公式ドキュメントやGoプロジェクトの慣習に関する情報源(Goの公式ブログ、Goのソースコードリポジトリ内のドキュメントなど)。
  • OpenBSDのABI変更に関する情報源(OpenBSDのリリースノート、開発者メーリングリストのアーカイブなど)。
  • システムコール、ABI、Goのsyscallパッケージに関する一般的な技術解説。
  • go tool apiコマンドに関する情報。
  • BIOCGRTIMEOUT, SYS_CLOCK_GETRES, RTM_VERSIONなどの特定の定数やシステムコールに関するOpenBSDのmanページやドキュメント。
  • OpenBSDのABI互換性に関する情報: