Sunday 27 November 2016

LLVM/golang 読み会

金曜日からやってるんですが、あんまり、進まず。

LLVM 4.0が出てる

なるほど。こっちは、cmake になった。なんだけど、

cmake ってparallel make どうやるの?

と思ったら、

makeではなくて、ninja を使え
http://jpospisil.com/2014/03/16/replacing-make-with-ninja.html

本気ですか。でも、cmake が ninja 用の設定をはいてくれるので実は簡単。

cmake -G Ninja -D CMAKE_BUILD_TYPE:STRING=Debug CMAKE_INSTALL_PREFIX:PATH=`pwd` ~/hg/CbC/LLVM_original
cmake --build .

ぐらいで良いらしい。

lldb -- bin/clang-4.0 -cc1 -triple x86_64-apple-macosx10.10.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -main-file-name hoge-if.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 253.9 -v -dwarf-column-info -debugger-tuning=lldb -resource-dir /Users/one/src/llvm/bin/../lib/clang/4.0.0 -fdebug-compilation-dir /Users/one/src/llvm -ferror-limit 19 -fmessage-length 138 -stack-protector 1 -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -x c hoge-if.c

とかやって追っていきます。

golang 側は、

go1.4 をまずコンパイル
それを使ってgo1.7を作る

けど、gdb でしかソースコードデバッグできない。なんだけど、 gdbを動かすには、

sudo で動かすか
certificateをKeyChainで作って、それを使って、gdbに code sign してやる

https://gcc.gnu.org/onlinedocs/gnat_ugn/Codesigning-the-Debugger.html

というのが必要らしい。これが結構煩雑で間違いやすい... でも、これで動くみたいです。

で、土曜日は

golang入門
https://tour.golang.org/

して、日曜日の午前中は、

golangのrun time

を読んでました。

go routineの作成
channel のsend/recv

辺りは golang で書かれていて、

systemstack というスタック切替ルーチン

がアセンブラで書かれているってのがわかりました。Thread local 使いまくりですか、そうですか。


あと、午後を乗り切れば...

No comments: