Go でのエンディアン
"encoding/binary" パッケージが用意されている
binary.BigEndian.PutUint64(bytes, v)
binary.LittleEndian.Uint64(bytes)
Go ではエンディアンは露出しない。uint64 のビットの順番は環境に寄らず同じ
Travis CI で自動テスト
Travis CI の CPU アーキテクチャは amd64 (リトルエンディアン)のみ
Travis CI でビッグエンディアンでテストする手法を探す
→ QEMU でビッグエンディアンの CPU をエミュレートする
Slide 17
Slide 17 text
qemu で go test
Linux で Go の実行環境をインストールできるのは以下のCPUアーキテクチャ
amd64, 386, arm, arm64, s390x, ppc64le
この中で、ビッグエンディアンなのは s390x
https://golang.org/doc/install#requirements
※ arm はリトルエンディアン、armbe がビッグエンディアン
Slide 18
Slide 18 text
qemu-ppc64-static で go test
無慈悲なエラー
Slide 19
Slide 19 text
なんでや
Slide 20
Slide 20 text
go test はできない
原因は不明。Go が悪いのか qemu が悪いのか。
qemu が特定の CPU 命令に対応していない?
行き詰まった。