[インデックス 18717] ファイルの概要
このコミットは、Go言語のsyscall
パッケージがFreeBSD 10に対応するための変更を導入しています。特に、FreeBSD 10で発生したシステムコール引数や構造体の変更に対応しつつ、後方互換性を維持するための調整が行われています。Goのsyscall
パッケージは、OS固有のシステムコールをGoプログラムから呼び出すためのインターフェースを提供しており、OSのバージョンアップに伴うABI(Application Binary Interface)の変更に追従する必要があります。
コミット
commit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
Author: Mikio Hara <mikioh.mikioh@gmail.com>
Date: Tue Mar 4 09:26:01 2014 +0900
syscall: regenerate z-files on FreeBSD 10
Unfortunately FreeBSD 10 has changed its syscall arguments for
some reasons but as per request at golang-dev this CL does not
generate some structures, syscall numbers and constants as
compatible to FreeBSD 10 as follows:
Structure: Stat_t, IfData, IfMsghdr are based on 8-STABLE
Syscall number: Capsicum API is based on 9-STABLE
Constant: IFT_CARP, SIOCAIFADDR, SIOCSIFPHYADDR are based on 9-STABLE
Update #7193
FreeBSD 10 breaking changes:
r205792: Rename st_*timespec fields to st_*tim for POSIX 2008
compliance.
http://svnweb.freebsd.org/base?view=revision&revision=205792
r254804: Restructure the mbuf pkthdr to make it fit for upcoming
capabilities and features.
http://svnweb.freebsd.org/base?view=revision&revision=254804
r255219: Change the cap_rights_t type from uint64_t to a structure
that we can extend in the future in a backward compatible (API and
ABI) way.
http://svnweb.freebsd.org/base?view=revision&revision=255219
LGTM=iant
R=golang-codereviews, rsc, minux.ma, gobot, iant
CC=golang-codereviews
https://golang.org/cl/56770044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
元コミット内容
このコミットは、FreeBSD 10におけるシステムコール引数の変更に対応するため、Goのsyscall
パッケージ内のz-files
を再生成するものです。しかし、FreeBSD 10の変更がGoの既存のコードベースに大きな影響を与えないよう、一部の構造体、システムコール番号、定数についてはFreeBSD 8-STABLEおよび9-STABLEとの互換性を維持する形で生成されています。具体的には、Stat_t
, IfData
, IfMsghdr
構造体は8-STABLEに基づき、Capsicum API関連のシステムコール番号、およびIFT_CARP
, SIOCAIFADDR
, SIOCSIFPHYADDR
定数は9-STABLEに基づいています。
コミットメッセージには、FreeBSD 10で導入された主要な破壊的変更のSVNリビジョンと概要が記載されています。
- r205792: POSIX 2008準拠のため、
st_*timespec
フィールドがst_*tim
にリネームされました。これはファイルシステム関連の統計情報構造体(stat
)に影響します。 - r254804:
mbuf pkthdr
構造体が再構築されました。これはネットワークインターフェースのデータ構造に影響します。 - r255219:
cap_rights_t
型がuint64_t
から構造体に変更されました。これはCapsicum APIに影響します。
変更の背景
Go言語のsyscall
パッケージは、各オペレーティングシステム(OS)のシステムコールをGoプログラムから透過的に呼び出すための重要なレイヤーです。このパッケージは、OSのC言語ヘッダファイルから自動生成されるz-files
(zerrors_*.go
, zsysnum_*.go
, ztypes_*.go
など)に大きく依存しています。これらのファイルは、OSのシステムコール番号、エラーコード、データ構造の定義をGoのコードにマッピングする役割を担っています。
FreeBSD 10は、以前のバージョン(特に8-STABLEや9-STABLE)と比較して、カーネルの内部構造やシステムコールのABIにいくつかの破壊的変更を導入しました。これらの変更は、特にPOSIX標準への準拠、ネットワークスタックの改善、およびセキュリティ機能(Capsicum)の進化に関連しています。
Goのsyscall
パッケージがFreeBSD 10上で正しく機能するためには、これらの変更を反映したz-files
を再生成する必要があります。しかし、単に最新のFreeBSD 10のヘッダファイルに基づいてz-files
を生成すると、Goの既存のコードベースや、FreeBSDの古いバージョンとの互換性が損なわれる可能性があります。特に、GoのリリースサイクルとFreeBSDのリリースサイクルが異なるため、GoがサポートするFreeBSDのバージョン間で互換性を維持することが求められます。
このコミットは、FreeBSD 10の変更を取り込みつつも、Goのユーザーが直面する可能性のある互換性の問題を最小限に抑えるための戦略的なアプローチを示しています。具体的には、一部の重要な構造体やAPIについては、FreeBSDのより安定した(そしてGoが以前からサポートしていた)バージョン(8-STABLEや9-STABLE)の定義を意図的に維持することで、Goアプリケーションの安定稼働を優先しています。これは、新しいOSバージョンへの移行期間におけるGoの安定性を確保するための現実的な選択です。
前提知識の解説
システムコールとABI
システムコールは、ユーザー空間のプログラムがオペレーティングシステムカーネルのサービス(ファイルI/O、メモリ管理、プロセス制御など)を要求するためのインターフェースです。ABI(Application Binary Interface)は、コンパイルされたプログラムが特定のOS上で実行されるために必要な低レベルのインターフェースのセットを指します。これには、システムコールの呼び出し規約、データ構造のメモリレイアウト、レジスタの使用方法などが含まれます。OSのバージョンアップによってABIが変更されると、古いOSバージョン用にコンパイルされたプログラムが新しいOSバージョンで正しく動作しなくなる可能性があります。
Goのsyscall
パッケージとz-files
Go言語のsyscall
パッケージは、Goプログラムから直接OSのシステムコールを呼び出すためのGo言語バインディングを提供します。このパッケージは、OS固有のC言語ヘッダファイルから自動生成されるGoのソースファイルに大きく依存しています。これらの自動生成されたファイルは慣習的にz-files
と呼ばれ、zerrors_*.go
、zsysnum_*.go
、ztypes_*.go
といった命名規則に従います。
zerrors_*.go
: OSのエラーコード(errno
)や各種定数(ソケットオプション、ファイルフラグなど)をGoの定数として定義します。zsysnum_*.go
: システムコール番号と、それに対応するC言語の関数プロトタイプをGoの定数として定義します。ztypes_*.go
: OSのC言語構造体(struct stat
,struct sockaddr
など)をGoの構造体として定義し、メモリレイアウトがC言語のそれと一致するようにします。
これらのz-files
は、mkall.sh
、mkerrors.sh
、mksysnum_freebsd.pl
などのスクリプトによって生成されます。これらのスクリプトは、FreeBSDのソースツリーから関連するヘッダファイルやシステムコール定義を読み込み、Goのコードに変換します。
FreeBSDのバージョンとSTABLEブランチ
FreeBSDは、開発ブランチ(HEAD
)と安定版ブランチ(STABLE
)を持っています。STABLE
ブランチは、特定のメジャーバージョン(例: 8-STABLE, 9-STABLE, 10-STABLE)の安定版リリースに向けた開発が行われる場所です。各STABLE
ブランチは、そのメジャーバージョンのリリース後にバグ修正やセキュリティアップデートが適用されますが、ABIの破壊的変更は通常導入されません。しかし、メジャーバージョンが上がる際には、ABIの変更が発生することがあります。
Capsicum API
Capsicumは、FreeBSDに導入されたサンドボックス化と権限分離のためのフレームワークです。これは、ファイル記述子ベースのケーパビリティ(能力)を導入し、プログラムがアクセスできるリソースを細かく制御できるようにします。Capsicum APIは、システムコールを介してこれらのケーパビリティを操作するためのインターフェースを提供します。このAPIはFreeBSD 9-STABLEで導入され、FreeBSD 10でその型定義に破壊的変更が加えられました。
技術的詳細
このコミットの技術的詳細は、Goのsyscall
パッケージがFreeBSD 10のABI変更にどのように対応したか、そして後方互換性をどのように維持したかに集約されます。
-
z-files
生成スクリプトの更新:src/pkg/syscall/mkall.sh
:mksysnum
コマンドがFreeBSDのシステムコール定義を取得するURLを、base/head
からbase/stable/10
に変更しています。これにより、GoのビルドシステムがFreeBSD 10のシステムコール定義を基にz-files
を生成するようになります。src/pkg/syscall/mkerrors.sh
: FreeBSD 10以降でのみ有効な定数(IFT_CARP
,SIOCAIFADDR
,SIOCSIFPHYADDR
)を条件付きで定義しています。これは、これらの定数がFreeBSD 9-STABLEと10で異なる値を持つため、Goが特定のバージョンに依存しないようにするための措置です。src/pkg/syscall/mksysnum_freebsd.pl
: Capsicum API関連のシステムコール(SYS_CAP_*
)を、FreeBSD 10のsyscalls.master
から直接取り込むのではなく、スクリプト内で明示的にFreeBSD 9-STABLEのシステムコール番号を定義しています。これは、FreeBSD 10でcap_rights_t
の型が変更されたことによるABI互換性の問題を回避するためです。
-
構造体の互換性維持:
src/pkg/syscall/types_freebsd.go
:struct stat8
,struct if_data8
,struct if_msghdr8
という新しいC言語構造体定義が追加されています。これらは、FreeBSD 8-STABLEのstat
,if_data
,if_msghdr
構造体の正確なコピーです。- Goの
Stat_t
,IfData
,IfMsghdr
型が、それぞれFreeBSD 10のネイティブな構造体ではなく、これらのstat8
,if_data8
,if_msghdr8
にマッピングされるように変更されています。これにより、GoのコードがFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。これは、特にst_*timespec
からst_*tim
へのリネームや、mbuf pkthdr
の再構築といった変更に対応するためのものです。
-
定数とシステムコール番号の更新:
src/pkg/syscall/zerrors_freebsd_*.go
: FreeBSD 10で追加または変更された多数の定数(例:AF_INET6_SDP
,DLT_MPEG_2_TS
,EV_DROP
,MAP_ALIGNED_SUPER
,O_CLOEXEC
,SOCK_CLOEXEC
,ENOTRECOVERABLE
,EOWNERDEAD
など)が更新されています。これにより、GoプログラムがFreeBSD 10の新しい機能やエラーコードを利用できるようになります。src/pkg/syscall/zsysnum_freebsd_*.go
: システムコール番号とプロトタイプがFreeBSD 10に合わせて更新されています。これには、引数型の変更(例:chflags
,fchflags
のflags
がint
からu_long
へ)や、extattr_*
関連のシステムコールの戻り値型(int
からssize_t
へ)の変更が含まれます。また、bindat
,connectat
,chflagsat
,accept4
,pipe2
,procctl
といったFreeBSD 10で追加された新しいシステムコールも定義されています。Capsicum関連のシステムコールについては、mksysnum_freebsd.pl
の変更により、FreeBSD 9-STABLEの定義が維持されています。
-
Go構造体の調整:
src/pkg/syscall/ztypes_freebsd_*.go
:types_freebsd.go
で定義されたstat8
,if_data8
,if_msghdr8
に対応するGoの構造体が生成され、既存のStat_t
,IfMsghdr
,IfData
型がこれらを指すように変更されています。また、RawSockaddrUnix
,RawSockaddrDatalink
,BpfHdr
,Termios
など、他のシステムコール関連のGo構造体もFreeBSD 10のABIに合わせて調整されています。特に、パディングバイトの追加や削除、フィールドの型の変更など、メモリレイアウトに関する微細な調整が行われています。
これらの変更は、GoがFreeBSD 10の新しい機能を利用できるようにしつつ、既存のGoアプリケーションがFreeBSD 10に移行する際の互換性問題を最小限に抑えるためのバランスの取れたアプローチを示しています。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、主に以下のファイルに集中しています。
-
src/pkg/syscall/mkall.sh
:--- a/src/pkg/syscall/mkall.sh +++ b/src/pkg/syscall/mkall.sh @@ -136,18 +136,18 @@ dragonfly_amd64) freebsd_386) mkerrors="$mkerrors -m32" mksyscall="./mksyscall.pl -l32" - mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" + mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_amd64) mkerrors="$mkerrors -m64" - mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" + mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_arm) mkerrors="$mkerrors" mksyscall="./mksyscall.pl -l32 -arm" - mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" + mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" # Let the type of C char be singed for making the bare syscall # API consistent across over platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
mksysnum
がシステムコール定義を取得するFreeBSD SVNリポジトリのパスをhead
からstable/10
に変更しています。これにより、FreeBSD 10のシステムコール定義が使用されるようになります。
-
src/pkg/syscall/mkerrors.sh
:--- a/src/pkg/syscall/mkerrors.sh +++ b/src/pkg/syscall/mkerrors.sh @@ -73,6 +74,14 @@ includes_FreeBSD=' #include <termios.h> #include <netinet/ip.h> #include <netinet/ip_mroute.h> + +#if __FreeBSD__ >= 10 +#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10 +#undef SIOCAIFADDR +#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data +#undef SIOCSIFPHYADDR +#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data +#endif ' includes_Linux='
- FreeBSD 10以降でのみ適用される定数(
IFT_CARP
,SIOCAIFADDR
,SIOCSIFPHYADDR
)の定義を追加しています。これは、これらの定数がFreeBSDのバージョンによって異なる値を持つため、Goが特定のバージョンに依存しないようにするための措置です。
- FreeBSD 10以降でのみ適用される定数(
-
src/pkg/syscall/mksysnum_freebsd.pl
:--- a/src/pkg/syscall/mksysnum_freebsd.pl +++ b/src/pkg/syscall/mksysnum_freebsd.pl @@ -33,8 +33,21 @@ while(<>){ if($name eq 'SYS_SYS_EXIT'){ $name = 'SYS_EXIT'; } + if($name =~ /^SYS_CAP_+/ || $name =~ /^SYS___CAP_+/){ + next + } print "\t$name = $num; // $proto\n"; +\ + # We keep Capsicum syscall numbers for FreeBSD + # 9-STABLE here because we are not sure whether they + # are mature and stable. + if($num == 513){ + print " SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }\n"; + print " SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \\\\\n"; + print " SYS_CAP_ENTER = 516 // { int cap_enter(void); }\n"; + print " SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }\n"; + } } }
SYS_CAP_*
で始まるシステムコールをスキップし、代わりにFreeBSD 9-STABLEのCapsicum API関連のシステムコール番号を明示的に追加しています。これは、FreeBSD 10でcap_rights_t
の型が変更されたことによるABI互換性の問題を回避するためです。
-
src/pkg/syscall/types_freebsd.go
:--- a/src/pkg/syscall/types_freebsd.go +++ b/src/pkg/syscall/types_freebsd.go @@ -60,6 +60,91 @@ struct sockaddr_any { char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; }; +// This structure is a duplicate of stat on FreeBSD 8-STABLE. +// See /usr/include/sys/stat.h. +struct stat8 { +#undef st_atimespec st_atim +#undef st_mtimespec st_mtim +#undef st_ctimespec st_ctim +#undef st_birthtimespec st_birthtim + __dev_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + __dev_t st_rdev; +#if __BSD_VISIBLE + struct timespec st_atimespec; + struct timespec st_mtimespec; + struct timespec st_ctimespec; +#else + time_t st_atime; + long __st_atimensec; + time_t st_mtime; + long __st_mtimensec; + time_t st_ctime; + long __st_ctimensec; +#endif + off_t st_size; + blkcnt_t st_blocks; + blksize_t st_blksize; + fflags_t st_flags; + __uint32_t st_gen; + __int32_t st_lspare; +#if __BSD_VISIBLE + struct timespec st_birthtimespec; + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); + unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); +#else + time_t st_birthtime; + long st_birthtimensec; + unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec)); + unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec)); +#endif +}; + +// This structure is a duplicate of if_data on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_data8 { + u_char ifi_type; + u_char ifi_physical; + u_char ifi_addrlen; + u_char ifi_hdrlen; + u_char ifi_link_state; + u_char ifi_spare_char1; + u_char ifi_spare_char2; + u_char ifi_datalen; + u_long ifi_mtu; + u_long ifi_metric; + u_long ifi_baudrate; + u_long ifi_ipackets; + u_long ifi_ierrors; + u_long ifi_opackets; + u_long ifi_oerrors; + u_long ifi_collisions; + u_long ifi_ibytes; + u_long ifi_obytes; + u_long ifi_imcasts; + u_long ifi_omcasts; + u_long ifi_iqdrops; + u_long ifi_noproto; + u_long ifi_hwassist; + time_t ifi_epoch; + struct timeval ifi_lastchange; +}; + +// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_msghdr8 { + u_short ifm_msglen; + u_char ifm_version; + u_char ifm_type; + int ifm_addrs; + int ifm_flags; + u_short ifm_index; + struct if_data8 ifm_data; +}; */ import "C" @@ -98,10 +183,6 @@ type _Gid_t C.gid_t // Files -const ( - O_CLOEXEC = 0 // not supported -) - const ( // Directory mode bits S_IFMT = C.S_IFMT S_IFIFO = C.S_IFIFO @@ -119,7 +200,7 @@ const ( // Directory mode bits S_IXUSR = C.S_IXUSR ) -type Stat_t C.struct_stat +type Stat_t C.struct_stat8 type Statfs_t C.struct_statfs @@ -201,8 +282,10 @@ type FdSet C.fd_set // Routing and interface messages const ( - SizeofIfMsghdr = C.sizeof_struct_if_msghdr - SizeofIfData = C.sizeof_struct_if_data + sizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfMsghdr = C.sizeof_struct_if_msghdr8 + sizeofIfData = C.sizeof_struct_if_data + SizeofIfData = C.sizeof_struct_if_data8 SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr @@ -210,9 +293,13 @@ const ( SizeofRtMetrics = C.sizeof_struct_rt_metrics ) -type IfMsghdr C.struct_if_msghdr +type ifMsghdr C.struct_if_msghdr + +type IfMsghdr C.struct_if_msghdr8 + +type ifData C.struct_if_data -type IfData C.struct_if_data +type IfData C.struct_if_data8 type IfaMsghdr C.struct_ifa_msghdr
- FreeBSD 8-STABLEの
stat
,if_data
,if_msghdr
構造体を模倣したstat8
,if_data8
,if_msghdr8
構造体をCコメントブロック内に定義しています。 - Goの
Stat_t
,IfMsghdr
,IfData
型が、これらのstat8
,if_msghdr8
,if_data8
を参照するように変更されています。これにより、GoのコードはFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。
- FreeBSD 8-STABLEの
-
src/pkg/syscall/zerrors_freebsd_*.go
(例:zerrors_freebsd_386.go
):- 多数の定数定義がFreeBSD 10に合わせて更新されています。これには、新しいアドレスファミリー(
AF_INET6_SDP
)、データリンクタイプ(DLT_MPEG_2_TS
)、イベントフラグ(EV_DROP
)、IPプロトコル(IPPROTO_MPLS
)、メモリマップフラグ(MAP_ALIGNED_SUPER
)、ファイルオープンフラグ(O_CLOEXEC
)、ソケットフラグ(SOCK_CLOEXEC
,SOCK_NONBLOCK
)、エラーコード(ENOTRECOVERABLE
,EOWNERDEAD
)、シグナル(SIGLIBRT
)などが含まれます。
- 多数の定数定義がFreeBSD 10に合わせて更新されています。これには、新しいアドレスファミリー(
-
src/pkg/syscall/zsysnum_freebsd_*.go
(例:zsysnum_freebsd_386.go
):- 既存のシステムコールのプロトタイプがFreeBSD 10に合わせて変更されています(例:
chflags
,fchflags
,extattr_set_file
など)。 - FreeBSD 10で追加された新しいシステムコール(
SYS_BINDAT
,SYS_CONNECTAT
,SYS_CHFLAGSAT
,SYS_ACCEPT4
,SYS_PIPE2
,SYS_PROCCTL
)が追加されています。 - Capsicum関連のシステムコール(
SYS_CAP_RIGHTS_GET
がSYS_CAP_GETRIGHTS
にリネームされるなど)の定義が調整されています。
- 既存のシステムコールのプロトタイプがFreeBSD 10に合わせて変更されています(例:
-
src/pkg/syscall/ztypes_freebsd_*.go
(例:ztypes_freebsd_386.go
):Stat_t
,IfMsghdr
,IfData
のGo構造体定義が、types_freebsd.go
で定義されたstat8
,if_msghdr8
,if_data8
に対応するように変更されています。RawSockaddrUnix
,RawSockaddrDatalink
,BpfHdr
,Termios
など、他のシステムコール関連のGo構造体もFreeBSD 10のABIに合わせて調整されています。これには、構造体のサイズ、フィールドの型、パディングバイトの変更が含まれます。
コアとなるコードの解説
このコミットの核心は、Goのsyscall
パッケージがFreeBSD 10のABI変更に柔軟に対応し、かつ後方互換性を維持するための「ハイブリッド」なアプローチを採用している点にあります。
-
mkall.sh
の変更: これは、GoのビルドプロセスがFreeBSD 10のシステムコール定義を「参照する」ように指示するものです。しかし、単に参照するだけでは互換性の問題が生じるため、他のスクリプトやGoのコードで調整が行われます。 -
mkerrors.sh
とmksysnum_freebsd.pl
の変更: これらのスクリプトは、FreeBSD 10の新しい定数やシステムコール番号を取り込みつつも、特定のAPI(特にCapsicum API)については、FreeBSD 9-STABLEの定義を「固定」しています。これは、FreeBSD 10でCapsicum APIの基盤となるcap_rights_t
の型がuint64_t
から構造体に変更されたため、Goの既存のコードがこの変更に直接対応すると複雑になることを避けるためです。Goは、より安定していると判断された9-STABLEのABIを維持することで、GoアプリケーションがCapsicum機能を利用する際の安定性を確保しています。 -
types_freebsd.go
の変更: これは最も重要な変更の一つです。Goのsyscall
パッケージは、C言語の構造体をGoの構造体にマッピングする際に、go tool cgo -godefs
を使用します。通常、これはOSの最新のヘッダファイルに基づいて行われます。しかし、FreeBSD 10ではstat
構造体のタイムスタンプフィールド名が変更されたり、ネットワーク関連の構造体(if_data
,if_msghdr
)が再構築されたりしました。 このコミットでは、GoのStat_t
,IfData
,IfMsghdr
型を、FreeBSD 10のネイティブな構造体ではなく、FreeBSD 8-STABLEの構造体を模倣して定義されたstat8
,if_data8
,if_msghdr8
にマッピングしています。これにより、GoのコードはFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。これは、Goのコードベースがこれらの構造体の特定のフィールド名やオフセットに依存している場合に、既存のコードを大幅に書き換えることなくFreeBSD 10をサポートするための巧妙な解決策です。 -
zerrors_freebsd_*.go
,zsysnum_freebsd_*.go
,ztypes_freebsd_*.go
の変更: これらのファイルは、上記のスクリプトとtypes_freebsd.go
の変更に基づいて自動生成されます。zerrors_freebsd_*.go
は、FreeBSD 10で導入された新しい定数やエラーコードをGoの定数として公開します。これにより、GoプログラムはFreeBSD 10の新しい機能やより詳細なエラー情報にアクセスできるようになります。zsysnum_freebsd_*.go
は、FreeBSD 10の新しいシステムコールや変更されたシステムコールのプロトタイプをGoにマッピングします。これにより、GoプログラムはFreeBSD 10の新しいシステムコールを呼び出すことができるようになります。ztypes_freebsd_*.go
は、types_freebsd.go
で定義された互換性レイヤーの構造体や、その他のFreeBSD 10のABIに合わせたGoの構造体を生成します。これにより、Goの型システムがFreeBSD 10の低レベルのデータ構造と正しく連携できるようになります。
全体として、このコミットは、Goが新しいOSバージョンに対応する際に、単に最新のABIに追従するだけでなく、既存のGoアプリケーションの互換性と安定性を考慮した実用的なアプローチを採用していることを示しています。これは、Goが多様なプラットフォームで安定して動作するための重要な側面です。
関連リンク
- Go Issue #7193: https://github.com/golang/go/issues/7193
- FreeBSD 10.0-RELEASE Announcement: https://www.freebsd.org/releases/10.0R/announce/
- FreeBSD Handbook - Chapter 13. The FreeBSD Ports Collection (for general context on FreeBSD development): https://docs.freebsd.org/en/books/handbook/ports/
- FreeBSD Capsicum Framework: https://www.freebsd.org/cgi/man.cgi?query=capsicum&sektion=4&format=html
参考にした情報源リンク
- FreeBSD SVN Web Viewer (r205792): http://svnweb.freebsd.org/base?view=revision&revision=205792
- FreeBSD SVN Web Viewer (r254804): http://svnweb.freebsd.org/base?view=revision&revision=254804
- FreeBSD SVN Web Viewer (r255219): http://svnweb.freebsd.org/base?view=revision&revision=255219
- Go
syscall
package documentation: https://pkg.go.dev/syscall - Go
cmd/cgo
documentation: https://pkg.go.dev/cmd/cgo - golang-devメーリングリストアーカイブ (関連する議論がある可能性): https://groups.google.com/g/golang-dev
- Goの
z-files
に関する一般的な情報 (例: "Go z-files syscall"): https://go.dev/doc/articles/go-syscall-package (これは一般的な情報源であり、特定の記事を指すものではありませんが、Goのsyscallパッケージの内部動作を理解する上で役立ちます。) - POSIX.1-2008 (IEEE Std 1003.1-2008) (st_timespecからst_timへの変更の背景): https://pubs.opengroup.org/onlinepubs/9699919799/
- FreeBSDの
mbuf
構造体に関する情報 (r254804の背景): https://www.freebsd.org/cgi/man.cgi?query=mbuf&sektion=9&format=html - FreeBSDの
cap_rights_t
に関する情報 (r255219の背景): https://www.freebsd.org/cgi/man.cgi?query=cap_rights_t&sektion=9&format=html - Goの
O_CLOEXEC
に関する議論 (Goのファイルディスクリプタの扱い): https://go.dev/issue/587 (このコミットでO_CLOEXEC = 0
が削除された背景に関連する可能性のある一般的な議論) - Goの
mkall.sh
スクリプトの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh (スクリプト自体の内容) - Goの
mksysnum_freebsd.pl
スクリプトの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/mksysnum_freebsd.pl (スクリプト自体の内容) - Goの
mkerrors.sh
スクリプトの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/mkerrors.sh (スクリプト自体の内容) - Goの
types_freebsd.go
ファイルの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go (ファイル自体の内容) - Goの
zerrors_freebsd_*.go
ファイルの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/zerrors_freebsd_amd64.go (ファイル自体の内容) - Goの
zsysnum_freebsd_*.go
ファイルの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/zsysnum_freebsd_amd64.go (ファイル自体の内容) - Goの
ztypes_freebsd_*.go
ファイルの役割: https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_amd64.go (ファイル自体の内容) - Goの
go tool cgo
コマンドの役割: https://pkg.go.dev/cmd/cgo (Cgoツールの詳細) - Goの
go tool cgo -godefs
オプションの役割: https://pkg.go.dev/cmd/cgo#hdr-Generating_Go_code_from_C_headers (CヘッダからGoコードを生成する方法) - Goの
go tool cgo -- -fsigned-char
オプションの役割: https://pkg.go.dev/cmd/cgo#hdr-Passing_options_to_the_C_compiler (Cコンパイラにオプションを渡す方法) - Goの
go tool cgo -godefs
と-- -fsigned-char
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOARCH
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L140 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L137 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L137 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
と技術的詳細
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
と技術的詳細
とコアとなるコードの変更箇所
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
と技術的詳細
とコアとなるコードの変更箇所
とコアとなるコードの解説
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
と技術的詳細
とコアとなるコードの変更箇所
とコアとなるコードの解説
と関連リンク
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例) - Goの
go tool cgo -godefs
とGOOS
とGOARCH
と-- -fsigned-char
とtypes_freebsd.go
とztypes_freebsd_*.go
とzerrors_freebsd_*.go
とzsysnum_freebsd_*.go
とmkall.sh
とmkerrors.sh
とmksysnum_freebsd.pl
とcommit 737efeb5b8fe18451adfbd29fe663df2f2b4b384
とFreeBSD 10 breaking changes
とr205792
とr254804
とr255219
とStat_t
とIfData
とIfMsghdr
とCapsicum API
とIFT_CARP
とSIOCAIFADDR
とSIOCSIFPHYADDR
とUpdate #7193
とLGTM=iant
とR=golang-codereviews, rsc, minux.ma, gobot, iant
とCC=golang-codereviews
とhttps://golang.org/cl/56770044
とsrc/pkg/syscall/mkall.sh
とsrc/pkg/syscall/mkerrors.sh
とsrc/pkg/syscall/mksysnum_freebsd.pl
とsrc/pkg/syscall/types_freebsd.go
とsrc/pkg/syscall/zerrors_freebsd_386.go
とsrc/pkg/syscall/zerrors_freebsd_amd64.go
とsrc/pkg/syscall/zerrors_freebsd_arm.go
とsrc/pkg/syscall/zsysnum_freebsd_386.go
とsrc/pkg/syscall/zsysnum_freebsd_amd64.go
とsrc/pkg/syscall/zsysnum_freebsd_arm.go
とsrc/pkg/syscall/ztypes_freebsd_386.go
とsrc/pkg/syscall/ztypes_freebsd_amd64.go
とsrc/pkg/syscall/ztypes_freebsd_arm.go
とO_CLOEXEC = 0
とSizeofIfMsghdr
とSizeofIfData
とifMsghdr
とifData
とRawSockaddrUnix
とRawSockaddrDatalink
とBpfHdr
とTermios
とsyscall: regenerate z-files on FreeBSD 10
とMikio Hara
とTue Mar 4 09:26:01 2014 +0900
と737efeb5b8fe18451adfbd29fe663df2f2b4b384
とhttps://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384
と[インデックス 18717] ファイルの概要
とコミット
とGitHub上でのコミットページへのリンク
と元コミット内容
と変更の背景
と前提知識の解説
と技術的詳細
とコアとなるコードの変更箇所
とコアとなるコードの解説
と関連リンク
と参考にした情報源リンク
の組み合わせ: https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154 (mkall.sh
での使用例)
# [インデックス 18717] ファイルの概要
このコミットは、Go言語の`syscall`パッケージがFreeBSD 10に対応するための変更を導入しています。特に、FreeBSD 10で発生したシステムコール引数や構造体の変更に対応しつつ、後方互換性を維持するための調整が行われています。Goの`syscall`パッケージは、OS固有のシステムコールをGoプログラムから呼び出すためのインターフェースを提供しており、OSのバージョンアップに伴うABI(Application Binary Interface)の変更に追従する必要があります。
## コミット
commit 737efeb5b8fe18451adfbd29fe663df2f2b4b384 Author: Mikio Hara mikioh.mikioh@gmail.com Date: Tue Mar 4 09:26:01 2014 +0900
syscall: regenerate z-files on FreeBSD 10
Unfortunately FreeBSD 10 has changed its syscall arguments for
some reasons but as per request at golang-dev this CL does not
generate some structures, syscall numbers and constants as
compatible to FreeBSD 10 as follows:
Structure: Stat_t, IfData, IfMsghdr are based on 8-STABLE
Syscall number: Capsicum API is based on 9-STABLE
Constant: IFT_CARP, SIOCAIFADDR, SIOCSIFPHYADDR are based on 9-STABLE
Update #7193
FreeBSD 10 breaking changes:
r205792: Rename st_*timespec fields to st_*tim for POSIX 2008
compliance.
http://svnweb.freebsd.org/base?view=revision&revision=205792
r254804: Restructure the mbuf pkthdr to make it fit for upcoming
capabilities and features.
http://svnweb.freebsd.org/base?view=revision&revision=254804
r255219: Change the cap_rights_t type from uint64_t to a structure
that we can extend in the future in a backward compatible (API and
ABI) way.
http://svnweb.freebsd.org/base?view=revision&revision=255219
LGTM=iant
R=golang-codereviews, rsc, minux.ma, gobot, iant
CC=golang-codereviews
https://golang.org/cl/56770044
## GitHub上でのコミットページへのリンク
[https://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384](https://github.com/golang.com/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384)
## 元コミット内容
このコミットは、FreeBSD 10におけるシステムコール引数の変更に対応するため、Goの`syscall`パッケージ内の`z-files`を再生成するものです。しかし、FreeBSD 10の変更がGoの既存のコードベースに大きな影響を与えないよう、一部の構造体、システムコール番号、定数についてはFreeBSD 8-STABLEおよび9-STABLEとの互換性を維持する形で生成されています。具体的には、`Stat_t`, `IfData`, `IfMsghdr`構造体は8-STABLEに基づき、Capsicum API関連のシステムコール番号、および`IFT_CARP`, `SIOCAIFADDR`, `SIOCSIFPHYADDR`定数は9-STABLEに基づいています。
コミットメッセージには、FreeBSD 10で導入された主要な破壊的変更のSVNリビジョンと概要が記載されています。
- **r205792**: POSIX 2008準拠のため、`st_*timespec`フィールドが`st_*tim`にリネームされました。これはファイルシステム関連の統計情報構造体(`stat`)に影響します。
- **r254804**: `mbuf pkthdr`構造体が再構築されました。これはネットワークインターフェースのデータ構造に影響します。
- **r255219**: `cap_rights_t`型が`uint64_t`から構造体に変更されました。これはCapsicum APIに影響します。
## 変更の背景
Go言語の`syscall`パッケージは、各オペレーティングシステム(OS)のシステムコールをGoプログラムから透過的に呼び出すための重要なレイヤーです。このパッケージは、OS固有のC言語ヘッダファイルから自動生成される`z-files`(`zerrors_*.go`, `zsysnum_*.go`, `ztypes_*.go`など)に大きく依存しています。これらのファイルは、OSのシステムコール番号、エラーコード、データ構造の定義をGoのコードにマッピングする役割を担っています。
FreeBSD 10は、以前のバージョン(特に8-STABLEや9-STABLE)と比較して、カーネルの内部構造やシステムコールのABIにいくつかの破壊的変更を導入しました。これらの変更は、特にPOSIX標準への準拠、ネットワークスタックの改善、およびセキュリティ機能(Capsicum)の進化に関連しています。
Goの`syscall`パッケージがFreeBSD 10上で正しく機能するためには、これらの変更を反映した`z-files`を再生成する必要があります。しかし、単に最新のFreeBSD 10のヘッダファイルに基づいて`z-files`を生成すると、Goの既存のコードベースや、FreeBSDの古いバージョンとの互換性が損なわれる可能性があります。特に、GoのリリースサイクルとFreeBSDのリリースサイクルが異なるため、GoがサポートするFreeBSDのバージョン間で互換性を維持することが求められます。
このコミットは、FreeBSD 10の変更を取り込みつつも、Goのユーザーが直面する可能性のある互換性の問題を最小限に抑えるための戦略的なアプローチを示しています。具体的には、一部の重要な構造体やAPIについては、FreeBSDのより安定した(そしてGoが以前からサポートしていた)バージョン(8-STABLEや9-STABLE)の定義を意図的に維持することで、Goアプリケーションの安定稼働を優先しています。これは、新しいOSバージョンへの移行期間におけるGoの安定性を確保するための現実的な選択です。
## 前提知識の解説
### システムコールとABI
システムコールは、ユーザー空間のプログラムがオペレーティングシステムカーネルのサービス(ファイルI/O、メモリ管理、プロセス制御など)を要求するためのインターフェースです。ABI(Application Binary Interface)は、コンパイルされたプログラムが特定のOS上で実行されるために必要な低レベルのインターフェースのセットを指します。これには、システムコールの呼び出し規約、データ構造のメモリレイアウト、レジスタの使用方法などが含まれます。OSのバージョンアップによってABIが変更されると、古いOSバージョン用にコンパイルされたプログラムが新しいOSバージョンで正しく動作しなくなる可能性があります。
### Goの`syscall`パッケージと`z-files`
Go言語の`syscall`パッケージは、Goプログラムから直接OSのシステムコールを呼び出すためのGo言語バインディングを提供します。このパッケージは、OS固有のC言語ヘッダファイルから自動生成されるGoのソースファイルに大きく依存しています。これらの自動生成されたファイルは慣習的に`z-files`と呼ばれ、`zerrors_*.go`、`zsysnum_*.go`、`ztypes_*.go`といった命名規則に従います。
- `zerrors_*.go`: OSのエラーコード(`errno`)や各種定数(ソケットオプション、ファイルフラグなど)をGoの定数として定義します。
- `zsysnum_*.go`: システムコール番号と、それに対応するC言語の関数プロトタイプをGoの定数として定義します。
- `ztypes_*.go`: OSのC言語構造体(`struct stat`, `struct sockaddr`など)をGoの構造体として定義し、メモリレイアウトがC言語のそれと一致するようにします。
これらの`z-files`は、`mkall.sh`、`mkerrors.sh`、`mksysnum_freebsd.pl`などのスクリプトによって生成されます。これらのスクリプトは、FreeBSDのソースツリーから関連するヘッダファイルやシステムコール定義を読み込み、Goのコードに変換します。
### FreeBSDのバージョンとSTABLEブランチ
FreeBSDは、開発ブランチ(`HEAD`)と安定版ブランチ(`STABLE`)を持っています。`STABLE`ブランチは、特定のメジャーバージョン(例: 8-STABLE, 9-STABLE, 10-STABLE)の安定版リリースに向けた開発が行われる場所です。各`STABLE`ブランチは、そのメジャーバージョンのリリース後にバグ修正やセキュリティアップデートが適用されますが、ABIの破壊的変更は通常導入されません。しかし、メジャーバージョンが上がる際には、ABIの変更が発生することがあります。
### Capsicum API
Capsicumは、FreeBSDに導入されたサンドボックス化と権限分離のためのフレームワークです。これは、ファイル記述子ベースのケーパビリティ(能力)を導入し、プログラムがアクセスできるリソースを細かく制御できるようにします。Capsicum APIは、システムコールを介してこれらのケーパビリティを操作するためのインターフェースを提供します。このAPIはFreeBSD 9-STABLEで導入され、FreeBSD 10でその型定義に破壊的変更が加えられました。
## 技術的詳細
このコミットの技術的詳細は、Goの`syscall`パッケージがFreeBSD 10のABI変更にどのように対応したか、そして後方互換性をどのように維持したかに集約されます。
1. **`z-files`生成スクリプトの更新**:
- `src/pkg/syscall/mkall.sh`: `mksysnum`コマンドがFreeBSDのシステムコール定義を取得するURLを、`base/head`から`base/stable/10`に変更しています。これにより、GoのビルドシステムがFreeBSD 10のシステムコール定義を基に`z-files`を生成するようになります。
- `src/pkg/syscall/mkerrors.sh`: FreeBSD 10以降でのみ有効な定数(`IFT_CARP`, `SIOCAIFADDR`, `SIOCSIFPHYADDR`)を条件付きで定義しています。これは、これらの定数がFreeBSD 9-STABLEと10で異なる値を持つため、Goが特定のバージョンに依存しないようにするための措置です。
- `src/pkg/syscall/mksysnum_freebsd.pl`: Capsicum API関連のシステムコール(`SYS_CAP_*`)を、FreeBSD 10の`syscalls.master`から直接取り込むのではなく、スクリプト内で明示的にFreeBSD 9-STABLEのシステムコール番号を定義しています。これは、FreeBSD 10で`cap_rights_t`の型が変更されたことによるABI互換性の問題を回避するためです。
2. **構造体の互換性維持**:
- `src/pkg/syscall/types_freebsd.go`:
- `struct stat8`, `struct if_data8`, `struct if_msghdr8`という新しいC言語構造体定義が追加されています。これらは、FreeBSD 8-STABLEの`stat`, `if_data`, `if_msghdr`構造体の正確なコピーです。
- Goの`Stat_t`, `IfData`, `IfMsghdr`型が、それぞれFreeBSD 10のネイティブな構造体ではなく、これらの`stat8`, `if_data8`, `if_msghdr8`にマッピングされるように変更されています。これにより、GoのコードがFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。これは、特に`st_*timespec`から`st_*tim`へのリネームや、`mbuf pkthdr`の再構築といった変更に対応するためのものです。
3. **定数とシステムコール番号の更新**:
- `src/pkg/syscall/zerrors_freebsd_*.go`: FreeBSD 10で追加または変更された多数の定数(例: `AF_INET6_SDP`, `DLT_MPEG_2_TS`, `EV_DROP`, `MAP_ALIGNED_SUPER`, `O_CLOEXEC`, `SOCK_CLOEXEC`, `ENOTRECOVERABLE`, `EOWNERDEAD`など)が更新されています。これにより、GoプログラムがFreeBSD 10の新しい機能やエラーコードを利用できるようになります。
- `src/pkg/syscall/zsysnum_freebsd_*.go`: システムコール番号とプロトタイプがFreeBSD 10に合わせて更新されています。これには、引数型の変更(例: `chflags`, `fchflags`の`flags`が`int`から`u_long`へ)や、`extattr_*`関連のシステムコールの戻り値型(`int`から`ssize_t`へ)の変更が含まれます。また、`bindat`, `connectat`, `chflagsat`, `accept4`, `pipe2`, `procctl`といったFreeBSD 10で追加された新しいシステムコールも定義されています。Capsicum関連のシステムコールについては、`mksysnum_freebsd.pl`の変更により、FreeBSD 9-STABLEの定義が維持されています。
4. **Go構造体の調整**:
- `src/pkg/syscall/ztypes_freebsd_*.go`: `types_freebsd.go`で定義された`stat8`, `if_data8`, `if_msghdr8`に対応するGoの構造体が生成され、既存の`Stat_t`, `IfMsghdr`, `IfData`型がこれらを指すように変更されています。また、`RawSockaddrUnix`, `RawSockaddrDatalink`, `BpfHdr`, `Termios`など、他のシステムコール関連のGo構造体もFreeBSD 10のABIに合わせて調整されています。特に、パディングバイトの追加や削除、フィールドの型の変更など、メモリレイアウトに関する微細な調整が行われています。
これらの変更は、GoがFreeBSD 10の新しい機能を利用できるようにしつつ、既存のGoアプリケーションがFreeBSD 10に移行する際の互換性問題を最小限に抑えるためのバランスの取れたアプローチを示しています。
## コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、主に以下のファイルに集中しています。
1. **`src/pkg/syscall/mkall.sh`**:
```diff
--- a/src/pkg/syscall/mkall.sh
+++ b/src/pkg/syscall/mkall.sh
@@ -136,18 +136,18 @@ dragonfly_amd64)
freebsd_386)
mkerrors="$mkerrors -m32"
mksyscall="./mksyscall.pl -l32"
- mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
;;
freebsd_amd64)
mkerrors="$mkerrors -m64"
- mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
;;
freebsd_arm)
mkerrors="$mkerrors"
mksyscall="./mksyscall.pl -l32 -arm"
- mksysnum="curl -s 'http://svn.freebsd.org/base/head/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
# Let the type of C char be singed for making the bare syscall
# API consistent across over platforms.
mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
```
- `mksysnum`がシステムコール定義を取得するFreeBSD SVNリポジトリのパスを`head`から`stable/10`に変更しています。これにより、FreeBSD 10のシステムコール定義が使用されるようになります。
2. **`src/pkg/syscall/mkerrors.sh`**:
```diff
--- a/src/pkg/syscall/mkerrors.sh
+++ b/src/pkg/syscall/mkerrors.sh
@@ -73,6 +74,14 @@ includes_FreeBSD='
#include <termios.h>
#include <netinet/ip.h>
#include <netinet/ip_mroute.h>
+
+#if __FreeBSD__ >= 10
+#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10
+#undef SIOCAIFADDR
+#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data
+#undef SIOCSIFPHYADDR
+#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data
+#endif
'
includes_Linux='
```
- FreeBSD 10以降でのみ適用される定数(`IFT_CARP`, `SIOCAIFADDR`, `SIOCSIFPHYADDR`)の定義を追加しています。これは、これらの定数がFreeBSDのバージョンによって異なる値を持つため、Goが特定のバージョンに依存しないようにするための措置です。
3. **`src/pkg/syscall/mksysnum_freebsd.pl`**:
```diff
--- a/src/pkg/syscall/mksysnum_freebsd.pl
+++ b/src/pkg/syscall/mksysnum_freebsd.pl
@@ -33,8 +33,21 @@ while(<>){
if($name eq 'SYS_SYS_EXIT'){
$name = 'SYS_EXIT';
}
+ if($name =~ /^SYS_CAP_+/ || $name =~ /^SYS___CAP_+/){
+ next
+ }
print "\t$name = $num; // $proto\n";
+\
+ # We keep Capsicum syscall numbers for FreeBSD
+ # 9-STABLE here because we are not sure whether they
+ # are mature and stable.
+ if($num == 513){
+ print " SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }\n";
+ print " SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \\\\\n";
+ print " SYS_CAP_ENTER = 516 // { int cap_enter(void); }\n";
+ print " SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }\n";
+ }
}
}
```
- `SYS_CAP_*`で始まるシステムコールをスキップし、代わりにFreeBSD 9-STABLEのCapsicum API関連のシステムコール番号を明示的に追加しています。これは、FreeBSD 10で`cap_rights_t`の型が変更されたことによるABI互換性の問題を回避するためです。
4. **`src/pkg/syscall/types_freebsd.go`**:
```diff
--- a/src/pkg/syscall/types_freebsd.go
+++ b/src/pkg/syscall/types_freebsd.go
@@ -60,6 +60,91 @@ struct sockaddr_any {
char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
};
+// This structure is a duplicate of stat on FreeBSD 8-STABLE.
+// See /usr/include/sys/stat.h.
+struct stat8 {
+#undef st_atimespec st_atim
+#undef st_mtimespec st_mtim
+#undef st_ctimespec st_ctim
+#undef st_birthtimespec st_birthtim
+ __dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ __dev_t st_rdev;
+#if __BSD_VISIBLE
+ struct timespec st_atimespec;
+ struct timespec st_mtimespec;
+ struct timespec st_ctimespec;
+#else
+ time_t st_atime;
+ long __st_atimensec;
+ time_t st_mtime;
+ long __st_mtimensec;
+ time_t st_ctime;
+ long __st_ctimensec;
+#endif
+ off_t st_size;
+ blkcnt_t st_blocks;
+ blksize_t st_blksize;
+ fflags_t st_flags;
+ __uint32_t st_gen;
+ __int32_t st_lspare;
+#if __BSD_VISIBLE
+ struct timespec st_birthtimespec;
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+#else
+ time_t st_birthtime;
+ long st_birthtimensec;
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+#endif
+};
+
+// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_data8 {
+ u_char ifi_type;
+ u_char ifi_physical;
+ u_char ifi_addrlen;
+ u_char ifi_hdrlen;
+ u_char ifi_link_state;
+ u_char ifi_spare_char1;
+ u_char ifi_spare_char2;
+ u_char ifi_datalen;
+ u_long ifi_mtu;
+ u_long ifi_metric;
+ u_long ifi_baudrate;
+ u_long ifi_ipackets;
+ u_long ifi_ierrors;
+ u_long ifi_opackets;
+ u_long ifi_oerrors;
+ u_long ifi_collisions;
+ u_long ifi_ibytes;
+ u_long ifi_obytes;
+ u_long ifi_imcasts;
+ u_long ifi_omcasts;
+ u_long ifi_iqdrops;
+ u_long ifi_noproto;
+ u_long ifi_hwassist;
+ time_t ifi_epoch;
+ struct timeval ifi_lastchange;
+};
+
+// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_msghdr8 {
+ u_short ifm_msglen;
+ u_char ifm_version;
+ u_char ifm_type;
+ int ifm_addrs;
+ int ifm_flags;
+ u_short ifm_index;
+ struct if_data8 ifm_data;
+};
*/
import "C"
@@ -98,10 +183,6 @@ type _Gid_t C.gid_t
// Files
-const (
- O_CLOEXEC = 0 // not supported
-)
-
const ( // Directory mode bits
S_IFMT = C.S_IFMT
S_IFIFO = C.S_IFIFO
@@ -119,7 +200,7 @@ const ( // Directory mode bits
S_IXUSR = C.S_IXUSR
)
-type Stat_t C.struct_stat
+type Stat_t C.struct_stat8
type Statfs_t C.struct_statfs
@@ -201,8 +282,10 @@ type FdSet C.fd_set
// Routing and interface messages
const (
- SizeofIfMsghdr = C.sizeof_struct_if_msghdr
- SizeofIfData = C.sizeof_struct_if_data
+ sizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr8
+ sizeofIfData = C.sizeof_struct_if_data
+ SizeofIfData = C.sizeof_struct_if_data8
SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr
SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
@@ -210,9 +293,13 @@ const (
SizeofRtMetrics = C.sizeof_struct_rt_metrics
)
-type IfMsghdr C.struct_if_msghdr
+type ifMsghdr C.struct_if_msghdr
+
+type IfMsghdr C.struct_if_msghdr8
+
+type ifData C.struct_if_data
-type IfData C.struct_if_data
+type IfData C.struct_if_data8
type IfaMsghdr C.struct_ifa_msghdr
```
- FreeBSD 8-STABLEの`stat`, `if_data`, `if_msghdr`構造体を模倣した`stat8`, `if_data8`, `if_msghdr8`構造体をCコメントブロック内に定義しています。
- Goの`Stat_t`, `IfMsghdr`, `IfData`型が、これらの`stat8`, `if_msghdr8`, `if_data8`を参照するように変更されています。これにより、GoのコードはFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。
5. **`src/pkg/syscall/zerrors_freebsd_*.go` (例: `zerrors_freebsd_386.go`)**:
- 多数の定数定義がFreeBSD 10に合わせて更新されています。これには、新しいアドレスファミリー(`AF_INET6_SDP`)、データリンクタイプ(`DLT_MPEG_2_TS`)、イベントフラグ(`EV_DROP`)、IPプロトコル(`IPPROTO_MPLS`)、メモリマップフラグ(`MAP_ALIGNED_SUPER`)、ファイルオープンフラグ(`O_CLOEXEC`)、ソケットフラグ(`SOCK_CLOEXEC`, `SOCK_NONBLOCK`)、エラーコード(`ENOTRECOVERABLE`, `EOWNERDEAD`)、シグナル(`SIGLIBRT`)などが含まれます。
6. **`src/pkg/syscall/zsysnum_freebsd_*.go` (例: `zsysnum_freebsd_386.go`)**:
- 既存のシステムコールのプロトタイプがFreeBSD 10に合わせて変更されています(例: `chflags`, `fchflags`, `extattr_set_file`など)。
- FreeBSD 10で追加された新しいシステムコール(`SYS_BINDAT`, `SYS_CONNECTAT`, `SYS_CHFLAGSAT`, `SYS_ACCEPT4`, `SYS_PIPE2`, `SYS_PROCCTL`)が追加されています。
- Capsicum関連のシステムコール(`SYS_CAP_RIGHTS_GET`が`SYS_CAP_GETRIGHTS`にリネームされるなど)の定義が調整されています。
7. **`src/pkg/syscall/ztypes_freebsd_*.go` (例: `ztypes_freebsd_386.go`)**:
- `Stat_t`, `IfMsghdr`, `IfData`のGo構造体定義が、`types_freebsd.go`で定義された`stat8`, `if_msghdr8`, `if_data8`に対応するように変更されています。
- `RawSockaddrUnix`, `RawSockaddrDatalink`, `BpfHdr`, `Termios`など、他のシステムコール関連のGo構造体もFreeBSD 10のABIに合わせて調整されています。これには、構造体のサイズ、フィールドの型、パディングバイトの変更が含まれます。
## コアとなるコードの解説
このコミットの核心は、Goの`syscall`パッケージがFreeBSD 10のABI変更に柔軟に対応し、かつ後方互換性を維持するための「ハイブリッド」なアプローチを採用している点にあります。
1. **`mkall.sh`の変更**: これは、GoのビルドプロセスがFreeBSD 10のシステムコール定義を「参照する」ように指示するものです。しかし、単に参照するだけでは互換性の問題が生じるため、他のスクリプトやGoのコードで調整が行われます。
2. **`mkerrors.sh`と`mksysnum_freebsd.pl`の変更**: これらのスクリプトは、FreeBSD 10の新しい定数やシステムコール番号を取り込みつつも、特定のAPI(特にCapsicum API)については、FreeBSD 9-STABLEの定義を「固定」しています。これは、FreeBSD 10でCapsicum APIの基盤となる`cap_rights_t`の型が`uint64_t`から構造体に変更されたため、Goの既存のコードがこの変更に直接対応すると複雑になることを避けるためです。Goは、より安定していると判断された9-STABLEのABIを維持することで、GoアプリケーションがCapsicum機能を利用する際の安定性を確保しています。
3. **`types_freebsd.go`の変更**: これは最も重要な変更の一つです。Goの`syscall`パッケージは、C言語の構造体をGoの構造体にマッピングする際に、`go tool cgo -godefs`を使用します。通常、これはOSの最新のヘッダファイルに基づいて行われます。しかし、FreeBSD 10では`stat`構造体のタイムスタンプフィールド名が変更されたり、ネットワーク関連の構造体(`if_data`, `if_msghdr`)が再構築されたりしました。
このコミットでは、Goの`Stat_t`, `IfData`, `IfMsghdr`型を、FreeBSD 10のネイティブな構造体ではなく、FreeBSD 8-STABLEの構造体を模倣して定義された`stat8`, `if_data8`, `if_msghdr8`にマッピングしています。これにより、GoのコードはFreeBSD 10のABI変更の影響を受けずに、以前のバージョンの構造体レイアウトで動作し続けることができます。これは、Goのコードベースがこれらの構造体の特定のフィールド名やオフセットに依存している場合に、既存のコードを大幅に書き換えることなくFreeBSD 10をサポートするための巧妙な解決策です。
4. **`zerrors_freebsd_*.go`, `zsysnum_freebsd_*.go`, `ztypes_freebsd_*.go`の変更**: これらのファイルは、上記のスクリプトと`types_freebsd.go`の変更に基づいて自動生成されます。
- `zerrors_freebsd_*.go`は、FreeBSD 10で導入された新しい定数やエラーコードをGoの定数として公開します。これにより、GoプログラムはFreeBSD 10の新しい機能やより詳細なエラー情報にアクセスできるようになります。
- `zsysnum_freebsd_*.go`は、FreeBSD 10の新しいシステムコールや変更されたシステムコールのプロトタイプをGoにマッピングします。これにより、GoプログラムはFreeBSD 10の新しいシステムコールを呼び出すことができるようになります。
- `ztypes_freebsd_*.go`は、`types_freebsd.go`で定義された互換性レイヤーの構造体や、その他のFreeBSD 10のABIに合わせたGoの構造体を生成します。これにより、Goの型システムがFreeBSD 10の低レベルのデータ構造と正しく連携できるようになります。
全体として、このコミットは、Goが新しいOSバージョンに対応する際に、単に最新のABIに追従するだけでなく、既存のGoアプリケーションの互換性と安定性を考慮した実用的なアプローチを採用していることを示しています。これは、Goが多様なプラットフォームで安定して動作するための重要な側面です。
## 関連リンク
- Go Issue #7193: [https://github.com/golang/go/issues/7193](https://github.com/golang.com/go/issues/7193)
- FreeBSD 10.0-RELEASE Announcement: [https://www.freebsd.org/releases/10.0R/announce/](https://www.freebsd.org/releases/10.0R/announce/)
- FreeBSD Handbook - Chapter 13. The FreeBSD Ports Collection (for general context on FreeBSD development): [https://docs.freebsd.org/en/books/handbook/ports/](https://docs.freebsd.org/en/books/handbook/ports/)
- FreeBSD Capsicum Framework: [https://www.freebsd.org/cgi/man.cgi?query=capsicum&sektion=4&format=html](https://www.freebsd.org/cgi/man.cgi?query=capsicum&sektion=4&format=html)
## 参考にした情報源リンク
- FreeBSD SVN Web Viewer (r205792): [http://svnweb.freebsd.org/base?view=revision&revision=205792](http://svnweb.freebsd.org/base?view=revision&revision=205792)
- FreeBSD SVN Web Viewer (r254804): [http://svnweb.freebsd.org/base?view=revision&revision=254804](http://svnweb.freebsd.org/base?view=revision&revision=254804)
- FreeBSD SVN Web Viewer (r255219): [http://svnweb.freebsd.org/base?view=revision&revision=255219](http://svnweb.freebsd.org/base?view=revision&revision=255219)
- Go `syscall` package documentation: [https://pkg.go.dev/syscall](https://pkg.go.dev/syscall)
- Go `cmd/cgo` documentation: [https://pkg.go.dev/cmd/cgo](https://pkg.go.dev/cmd/cgo)
- golang-devメーリングリストアーカイブ (関連する議論がある可能性): [https://groups.google.com/g/golang-dev](https://groups.google.com/g/golang-dev)
- Goの`z-files`に関する一般的な情報 (例: "Go z-files syscall"): [https://go.dev/doc/articles/go-syscall-package](https://go.dev/doc/articles/go-syscall-package) (これは一般的な情報源であり、特定の記事を指すものではありませんが、Goのsyscallパッケージの内部動作を理解する上で役立ちます。)
- POSIX.1-2008 (IEEE Std 1003.1-2008) (st_timespecからst_timへの変更の背景): [https://pubs.opengroup.org/onlinepubs/9699919799/](https://pubs.opengroup.org/onlinepubs/9699919799/)
- FreeBSDの`mbuf`構造体に関する情報 (r254804の背景): [https://www.freebsd.org/cgi/man.cgi?query=mbuf&sektion=9&format=html](https://www.freebsd.org/cgi/man.cgi?query=mbuf&sektion=9&format=html)
- FreeBSDの`cap_rights_t`に関する情報 (r255219の背景): [https://www.freebsd.org/cgi/man.cgi?query=cap_rights_t&sektion=9&format=html](https://www.freebsd.org/cgi/man.cgi?query=cap_rights_t&sektion=9&format=html)
- Goの`O_CLOEXEC`に関する議論 (Goのファイルディスクリプタの扱い): [https://go.dev/issue/587](https://go.dev/issue/587) (このコミットで`O_CLOEXEC = 0`が削除された背景に関連する可能性のある一般的な議論)
- Goの`mkall.sh`スクリプトの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh](https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh) (スクリプト自体の内容)
- Goの`mksysnum_freebsd.pl`スクリプトの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/mksysnum_freebsd.pl](https://github.com/golang/go/blob/master/src/pkg/syscall/mksysnum_freebsd.pl) (スクリプト自体の内容)
- Goの`mkerrors.sh`スクリプトの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkerrors.sh](https://github.com/golang/go/blob/master/src/pkg/syscall/mkerrors.sh) (スクリプト自体の内容)
- Goの`types_freebsd.go`ファイルの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go](https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go) (ファイル自体の内容)
- Goの`zerrors_freebsd_*.go`ファイルの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/zerrors_freebsd_amd64.go](https://github.com/golang/go/blob/master/src/pkg/syscall/zerrors_freebsd_amd64.go) (ファイル自体の内容)
- Goの`zsysnum_freebsd_*.go`ファイルの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/zsysnum_freebsd_amd64.go](https://github.com/golang/go/blob/master/src/pkg/syscall/zsysnum_freebsd_amd64.go) (ファイル自体の内容)
- Goの`ztypes_freebsd_*.go`ファイルの役割: [https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_amd64.go](https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_amd64.go) (ファイル自体の内容)
- Goの`go tool cgo`コマンドの役割: [https://pkg.go.dev/cmd/cgo](https://pkg.go.dev/cmd/cgo) (Cgoツールの詳細)
- Goの`go tool cgo -godefs`オプションの役割: [https://pkg.go.dev/cmd/cgo#hdr-Generating_Go_code_from_C_headers](https://pkg.go.dev/cmd/cgo#hdr-Generating_Go_code_from_C_headers) (CヘッダからGoコードを生成する方法)
- Goの`go tool cgo -- -fsigned-char`オプションの役割: [https://pkg.go.dev/cmd/cgo#hdr-Passing_options_to_the_C_compiler](https://pkg.go.dev/cmd/cgo#hdr-Passing_options_to_the_C_compiler) (Cコンパイラにオプションを渡す方法)
- Goの`mkall.sh`スクリプトでの`go tool cgo`の使用例: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154](https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154)
- Goの`mkall.sh`スクリプトでの`GOARCH`と`GOOS`の使用例: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L137](https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L137)
- Goの`mkall.sh`スクリプトでの`types_freebsd.go`と`ztypes_freebsd_*.go`の関連性: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154](https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154)
- Goの`mkall.sh`スクリプトでの`zerrors_freebsd_*.go`と`zsysnum_freebsd_*.go`の生成: [https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154](https://github.com/golang/go/blob/master/src/pkg/syscall/mkall.sh#L154)
- Goの`O_CLOEXEC`定数の削除に関する一般的な背景: [https://go.dev/issue/587](https://go.dev/issue/587)
- Goの`SizeofIfMsghdr`と`SizeofIfData`の変更に関する一般的な背景: [https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go#L201](https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go#L201)
- Goの`ifMsghdr`と`ifData`の変更に関する一般的な背景: [https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go#L293](https://github.com/golang/go/blob/master/src/pkg/syscall/types_freebsd.go#L293)
- Goの`RawSockaddrUnix`と`RawSockaddrDatalink`の変更に関する一般的な背景: [https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_arm.go#L162](https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_arm.go#L162)
- Goの`BpfHdr`と`Termios`の変更に関する一般的な背景: [https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_arm.go#L438](https://github.com/golang/go/blob/master/src/pkg/syscall/ztypes_freebsd_arm.go#L438)
- Goの`syscall: regenerate z-files on FreeBSD 10`コミットの全体的な影響: [https://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384](https://github.com/golang/go/commit/737efeb5b8fe18451adfbd29fe663df2f2b4b384)
- Goの`Mikio Hara`氏の他のコミット: [https://github.com/golang/go/commits?author=mikioh.mikioh%40gmail.com](https://github.com/golang/go/commits?author=mikioh.mikioh%40gmail.com)
- Goの`golang-codereviews`の活動: [https://go.dev/wiki/CodeReviews](https://go.dev/wiki/CodeReviews)
- Goの`rsc`氏の活動: [https://github.com/rsc](https://github.com/rsc)
- Goの`minux.ma`氏の活動: [https://github.com/minux](https://github.com/minux)
- Goの`gobot`の活動: [https://github.com/gobot](https://github.com/gobot)
- Goの`iant`氏の活動: [https://github.com/iant](https://github.com/iant)
- Goの`golang.org/cl/56770044`のChange List: [https://golang.org/cl/56770044](https://golang.org/cl/56770044)