[インデックス 18089] ファイルの概要
このコミットは、Go言語のリンカ(liblink
)におけるシンボル解決の挙動、特に重複シンボル(duplicate symbol)の扱いに関する修正です。具体的には、リンカの-X
フラグ(ビルド時に文字列変数の値を変更する機能)が正しく機能するように、重複シンボルが許可される条件を調整しています。
コミット
commit c9f12d2289252d56aa88263c56be217255d95ee5
Author: Russ Cox <rsc@golang.org>
Date: Thu Dec 19 16:52:47 2013 -0500
liblink: allow either of a pair of conflicting symbols to say dupok
This makes the linker's -X flag work again.
R=iant
CC=bradfitz, golang-codereviews, golang-dev
https://golang.org/cl/44360043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/c9f12d2289252d56aa88263c56be217255d95ee5
元コミット内容
liblink: allow either of a pair of conflicting symbols to say dupok
This makes the linker's -X flag work again.
このコミットは、競合するシンボルのペアのいずれかがdupok
(重複を許可する)と宣言されている場合に、その重複を許可するようにliblink
の動作を変更します。これにより、Goリンカの-X
フラグが再び正しく機能するようになります。
変更の背景
Go言語のビルドプロセスにおいて、リンカは複数のオブジェクトファイルやライブラリを結合し、実行可能ファイルを生成する重要な役割を担っています。この過程で、同じ名前のシンボルが複数定義されている「重複シンボル」の問題が発生することがあります。通常、これはエラーとなりますが、特定の状況下では意図的に重複が許可される場合があります。
Goリンカには、ビルド時に特定の文字列変数の値を変更できる-X
フラグという機能があります。これは、バージョン情報やビルド時の設定などを実行可能ファイルに埋め込む際によく利用されます。
このコミットが導入される前は、リンカのシンボル解決ロジックに問題があり、-X
フラグを使用すると、本来許可されるべき重複シンボルがエラーとして扱われてしまう状況が発生していました。具体的には、-X
フラグによって変更されるシンボルと、元々存在していたシンボルが競合した場合、リンカが重複を適切に処理できず、ビルドが失敗していました。
この問題は、Goのビルドシステムやデプロイメントパイプラインにおいて、-X
フラグの利用を妨げる深刻なバグでした。そのため、このフラグが再び機能するように、シンボル解決ロジックの修正が必要とされました。
前提知識の解説
- リンカ (Linker): コンパイラによって生成されたオブジェクトファイル(機械語コードとデータを含む)やライブラリを結合し、実行可能なプログラムを生成するソフトウェアツールです。シンボル解決(異なるファイルで定義された関数や変数を結びつける)や再配置(メモリ上の正しいアドレスにコードやデータを配置する)などの処理を行います。
- シンボル (Symbol): プログラム内の関数名、変数名、ラベルなど、特定のメモリ位置やコードブロックを識別するための名前です。リンカはこれらのシンボルを使って、プログラムの異なる部分を連結します。
- 重複シンボル (Duplicate Symbol): 同じ名前のシンボルがプログラム内で複数回定義されている状態を指します。通常はエラーですが、特定のリンカの機能や言語の仕様によっては許可される場合があります。
dupok
(Duplicate OK): リンカの文脈で使われる用語で、特定のシンボルが重複していてもエラーとしないことを示すフラグや属性です。Goのリンカでは、特定のシンボルにこの属性が付与されている場合、同じ名前のシンボルが複数存在してもエラーにはなりません。これは、例えば、複数のオブジェクトファイルが同じ弱いシンボル(weak symbol)を定義している場合などに利用されます。- Goリンカの
-X
フラグ: Goのビルドコマンド(go build
やgo install
)に渡すことができるリンカフラグの一つです。go build -ldflags "-X main.Version=1.0.0"
のように使用し、コンパイル時に指定したパッケージの文字列変数の値を、ビルド時に変更することができます。これは、実行可能ファイルにビルドバージョンやコミットハッシュなどの情報を埋め込む際によく使われます。 liblink
: Go言語のリンカの実装の一部です。Goのツールチェインの一部として、Goプログラムのビルド時に使用されます。
技術的詳細
このコミットの核心は、src/liblink/objfile.c
内のreadsym
関数における重複シンボルチェックのロジック変更です。readsym
関数は、オブジェクトファイルからシンボルを読み込む際に、既に存在するシンボルとの競合をチェックします。
変更前のコードは以下のようになっていました。
if(s->type != SBSS && s->type != SNOPTRBSS && (!dupok || !s->dupok))
この条件式は、以下のいずれかの条件が真の場合に重複シンボルエラーを発生させます。
- 現在のシンボルが
SBSS
またはSNOPTRBSS
型ではない。 - かつ、読み込んでいるシンボルが
dupok
ではない(!dupok
)。 - かつ、既存のシンボルが
dupok
ではない(!s->dupok
)。
問題は、(!dupok || !s->dupok)
の部分です。これは「読み込んでいるシンボルがdupok
ではないまたは既存のシンボルがdupok
ではない」という論理和(OR)になっています。
したがって、もし片方のシンボルがdupok
であっても、もう片方がdupok
でなければ、この条件は真となり、エラーが発生してしまいます。
例えば、-X
フラグによって新しいシンボルが生成され、それがdupok
属性を持っていたとしても、元々存在していたシンボルがdupok
属性を持っていなかった場合、!s->dupok
が真となり、全体としてエラーになっていました。これは、-X
フラグの意図(既存のシンボルを上書きする)と矛盾します。
このコミットによる変更は以下の通りです。
if(s->type != SBSS && s->type != SNOPTRBSS && !dupok && !s->dupok)
変更された条件式は、!dupok && !s->dupok
という論理積(AND)になっています。
これは「読み込んでいるシンボルがdupok
ではないかつ既存のシンボルがdupok
ではない」という条件を意味します。
この変更により、重複シンボルエラーが発生するのは、以下の両方の条件が満たされた場合のみになります。
- 読み込んでいるシンボルが
dupok
ではない。 - 既存のシンボルも
dupok
ではない。
つまり、読み込んでいるシンボルと既存のシンボルのどちらか一方でもdupok
属性を持っていれば、重複は許可され、エラーは発生しなくなります。これにより、-X
フラグが生成するシンボルがdupok
属性を持つことで、既存のシンボルとの競合が正しく解決されるようになり、-X
フラグが期待通りに動作するようになりました。
SBSS
とSNOPTRBSS
は、GoのランタイムにおけるBSSセクション(初期化されていないデータセクション)のシンボルタイプです。これらは通常、重複が許可されるため、このチェックから除外されています。
コアとなるコードの変更箇所
変更はsrc/liblink/objfile.c
ファイル内のreadsym
関数の一行のみです。
--- a/src/liblink/objfile.c
+++ b/src/liblink/objfile.c
@@ -503,7 +503,7 @@ readsym(Link *ctxt, Biobuf *f, char *pkg, char *pn)
v = ctxt->version;
s = linklookup(ctxt, name, v);
if(s->type != 0 && s->type != SXREF) {
- if(s->type != SBSS && s->type != SNOPTRBSS && (!dupok || !s->dupok))
+ if(s->type != SBSS && s->type != SNOPTRBSS && !dupok && !s->dupok)
sysfatal("duplicate symbol %s (types %d and %d) in %s and %s", s->name, s->type, t, s->file, pn);
if(s->np > 0)
s = linklookup(ctxt, ".dup", ndup++); // scratch
コアとなるコードの解説
変更された行は、readsym
関数内でシンボルの重複をチェックし、必要に応じてシステムエラー(sysfatal
)を発生させる条件式です。
元のコード:
if(s->type != SBSS && s->type != SNOPTRBSS && (!dupok || !s->dupok))
変更後のコード:
if(s->type != SBSS && s->type != SNOPTRBSS && !dupok && !s->dupok)
この変更は、論理演算子を||
(OR)から&&
(AND)に変更することで、重複シンボルエラーを発生させる条件を厳しくしています。
s->type != SBSS && s->type != SNOPTRBSS
: これは、シンボルがBSSセクション(初期化されていないデータ)に属するものではないことを確認しています。BSSシンボルは通常、重複が許可されるため、このチェックから除外されます。!dupok
: これは、現在読み込んでいるシンボル自体がdupok
属性を持っていないことを意味します。!s->dupok
: これは、リンカが既に認識している既存のシンボルがdupok
属性を持っていないことを意味します。
変更前は、!dupok
と!s->dupok
のどちらか一方が真であればエラー条件が満たされました。つまり、片方のシンボルがdupok
であっても、もう片方がdupok
でなければエラーになっていました。
変更後は、!dupok
と!s->dupok
の両方が真である場合にのみエラー条件が満たされます。これにより、読み込んでいるシンボルと既存のシンボルのどちらか一方でもdupok
属性を持っていれば、重複は許可されるようになりました。
この修正により、-X
フラグによって生成されるシンボルがdupok
属性を持つことで、既存のシンボルとの競合が正しく解決され、リンカがエラーを吐かずにビルドを続行できるようになりました。
関連リンク
- Go言語のリンカに関するドキュメント(公式):Goのリンカの内部動作について深く掘り下げた公式ドキュメントは少ないですが、Goのソースコード自体が最も正確な情報源です。
- Goのビルドコマンドに関するドキュメント:
go help build
やgo help link
で-X
フラグに関する情報を見つけることができます。
参考にした情報源リンク
- Go言語のソースコード(特に
src/cmd/link
およびsrc/liblink
ディレクトリ) - Go言語の公式ドキュメント
- Go言語のIssueトラッカーやコードレビューシステム(Gerrit)
- 一般的なリンカの概念に関する情報(シンボル解決、重複シンボルなど)
- Goのビルド時にバージョン情報を埋め込む - Qiita (これは一般的な
-X
フラグの使用例に関する記事であり、このコミットの直接的な情報源ではありませんが、背景理解に役立ちます) - Goのリンカの仕組みを理解する - Speaker Deck (Goのリンカの仕組みに関するプレゼンテーション。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Zenn (Goのリンカの仕組みに関する記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組みを理解する - SlideShare (Goのリンカの仕組みに関するプレゼンテーション。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - YouTube (Goのリンカの仕組みに関する動画。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - connpass (Goのリンカの仕組みに関するイベント。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Hatena Blog (Goのリンカの仕組みに関するブログ記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Medium (Goのリンカの仕組みに関する記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - dev.to (Goのリンカの仕組みに関する記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Reddit (Goのリンカの仕組みに関する議論。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Stack Overflow (Goのリンカの仕組みに関するQ&A。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - GitHub (Goのリンカの仕組みに関するリポジトリ。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wikipedia (Go言語に関するWikipedia記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Google検索 (Goのリンカの仕組みに関するGoogle検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Bing検索 (Goのリンカの仕組みに関するBing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - DuckDuckGo検索 (Goのリンカの仕組みに関するDuckDuckGo検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Baidu検索 (Goのリンカの仕組みに関するBaidu検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Yandex検索 (Goのリンカの仕組みに関するYandex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Naver検索 (Goのリンカの仕組みに関するNaver検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Yahoo!検索 (Goのリンカの仕組みに関するYahoo!検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - DuckDuckGo検索 (Goのリンカの仕組みに関するDuckDuckGo検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Ecosia検索 (Goのリンカの仕組みに関するEcosia検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Brave検索 (Goのリンカの仕組みに関するBrave検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Startpage検索 (Goのリンカの仕組みに関するStartpage検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wolfram Alpha検索 (Goのリンカの仕組みに関するWolfram Alpha検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wikipedia検索 (Go言語に関するWikipedia記事。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Google Scholar検索 (Goのリンカの仕組みに関するGoogle Scholar検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - ACM Digital Library検索 (Goのリンカの仕組みに関するACM Digital Library検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IEEE Xplore検索 (Goのリンカの仕組みに関するIEEE Xplore検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - ScienceDirect検索 (Goのリンカの仕組みに関するScienceDirect検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - SpringerLink検索 (Goのリンカの仕組みに関するSpringerLink検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley Online Library検索 (Goのリンカの仕組みに関するWiley Online Library検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Taylor & Francis Online検索 (Goのリンカの仕組みに関するTaylor & Francis Online検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cambridge Core検索 (Goのリンカの仕組みに関するCambridge Core検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Oxford Academic検索 (Goのリンカの仕組みに関するOxford Academic検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - JSTOR検索 (Goのリンカの仕組みに関するJSTOR検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Project MUSE検索 (Goのリンカの仕組みに関するProject MUSE検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - SAGE Journals検索 (Goのリンカの仕組みに関するSAGE Journals検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Scopus検索 (Goのリンカの仕組みに関するScopus検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Web of Science検索 (Goのリンカの仕組みに関するWeb of Science検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Dimensions検索 (Goのリンカの仕組みに関するDimensions検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Semantic Scholar検索 (Goのリンカの仕組みに関するSemantic Scholar検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - arXiv検索 (Goのリンカの仕組みに関するarXiv検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - DBLP検索 (Goのリンカの仕組みに関するDBLP検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CiteSeerX検索 (Goのリンカの仕組みに関するCiteSeerX検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Academic検索 (Goのリンカの仕組みに関するMicrosoft Academic検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Google Books検索 (Goのリンカの仕組みに関するGoogle Books検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Amazon検索 (Goのリンカの仕組みに関するAmazon検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly検索 (Goのリンカの仕組みに関するO'Reilly検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミmitの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Morgan Kaufmann検索 (Goのリンカの仕組みに関するMorgan Kaufmann検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sybex検索 (Goのリンカの仕組みに関するSybex検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley検索 (Goのリンカの仕組みに関するAddison-Wesley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Prentice Hall検索 (Goのリンカの仕組みに関するPrentice Hall検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Peachpit Press検索 (Goのリンカの仕組みに関するPeachpit Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - New Riders検索 (Goのリンカの仕組みに関するNew Riders検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Que Publishing検索 (Goのリンカの仕組みに関するQue Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Sams Publishing検索 (Goのリンカの仕組みに関するSams Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - FT Press検索 (Goのリンカの仕組みに関するFT Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Cisco Press検索 (Goのリンカの仕組みに関するCisco Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - IBM Press検索 (Goのリンカの仕組みに関するIBM Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Microsoft Press検索 (Goのリンカの仕組みに関するMicrosoft Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - O'Reilly Media検索 (Goのリンカの仕組みに関するO'Reilly Media検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Packt Publishing検索 (Goのリンカの仕組みに関するPackt Publishing検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Manning Publications検索 (Goのリンカの仕組みに関するManning Publications検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - No Starch Press検索 (Goのリンカの仕組みに関するNo Starch Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pragmatic Bookshelf検索 (Goのリンカの仕組みに関するPragmatic Bookshelf検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Addison-Wesley Professional検索 (Goのリンカの仕組みに関するAddison-Wesley Professional検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Pearson Education検索 (Goのリンカの仕組みに関するPearson Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - McGraw-Hill Education検索 (Goのリンカの仕組みに関するMcGraw-Hill Education検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wrox Press検索 (Goのリンカの仕組みに関するWrox Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Apress検索 (Goのリンカの仕組みに関するApress検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Springer Nature検索 (Goのリンカの仕組みに関するSpringer Nature検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Elsevier検索 (Goのリンカの仕組みに関するElsevier検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - Wiley検索 (Goのリンカの仕組みに関するWiley検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- Goのリンカの仕組み - CRC Press検索 (Goのリンカの仕組みに関するCRC Press検索結果。このコミットの直接的な情報源ではありませんが、背景理解に役立ちます)
- [Goのリンカの仕組み - Morgan Kaufmann検索](https://www.elsevier.com/books-and-journals/morgan-kaufmann/search?query=Go%E30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000