C++ソースコード上の位置を復元する方法がわからない
llvm-gccに-gオプションをつければ、デバッグ情報としてソースコード上の位置は残るらしい(普通のgccのように)。
sample.cpp
#includevoid foo(); int main() { foo(); return 0; }
command line
llvm-gcc -S -g -emit-llvm sample.cpp -o sample.ll
sample.ll
.... @.str = internal constant [11 x i8] c"sample.cpp\00", section "llvm.metadata" ; <[11 x i8]*> [#uses=1] @.str1 = internal constant [22 x i8] c"/home/hiro/work/link/\00", section "llvm.metadata" ; <[22 x i8]*> [#uses=1] ↑ファイル名やソースコード上の位置らしい .... call void @llvm.dbg.stoppoint(i32 6, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*)) call void @_Z3foov() ↑stoppointのi32 6は、fooをcallしてる行数(6行目)。 ....
上記のような*.llを読んだ上でこのファイル名等の情報を取得する方法がないんだろうか。
あるいは、ソースコード上の位置を得るにはもっと良い方法がある?