Saturday 5 December 2015

LLVM読み会

昨日は準備の日だったのですが、さぼったので、あまり進まず... いや、だから、

* packageを落とすと、LLVM compilerのlldbによるtraceができる

というようにして欲しいんですが。で、今日の10時から、

* LLVM/clang compileして、そこからバイナリとソースを抜き出して、tgzに固める

ってのを学生の前で。

find ../../CbC/ -name '*.cpp' -o -name '*.h' | grep -v '/test' | grep -v 'unittest'| sed -e 's-../../CbC//--' | sed -e 's-.*-ln ../../CbC/& &-'

とかしながら。でも、

* lldb でソースコードを表示できない

なんでだ。package前ではできるのに! 仕方がないので、

* 全部コピーして、徐々に消してく

という方法で。で、わかったのですが、

* binary ではなく、.oと.aにdebug情報があるので、それがないとだめ

らしい。おいおい。それ入れるとかなりでかいんですが。というわけで、めでたく package は完成。

それを使って、午後は Tokenizer, Parser と無事に読み進む...

のだが、C++ だからな〜 それでも、

* Token は、ちゃんと enum になってるので変換の必要はない
* Parse Tree はPointer tagではなく smart pointerになっているらしい。

らしく、少しは読みやすかったかも。一応、触っている学生がいるので、スムースには進むのですが、

* 自分的には、その場で探していくようなのが面白い

いや、今日の午前中は、lldbのsource codeを見る場所を探して行き詰まって面白かったんですけどね。

結局、lldb の
settings set target.source-map source dst
が動かず、

元の soruce code directoryに無理やり symbolic link


すると動くみたいです。

http://www.cr.ie.u-ryukyu.ac.jp/~game/pukiwiki/index.php?LLVM

No comments: