当我意识到我并没有真正理解他们扮演什么角色时,我正试图建立libcxx
/ libcxxabi
/ libunwind
。
我检查了libcxxabi spci,发现它定义了C ++异常中使用的API。但我无法找到任何关于libunwind
的文档,而谷歌发现的一个博客(New libunwind implementation in libc++abi)表示libunwind
是libcxxabi
的实现。
那么,libunwind
是否真的那样,在libcxxabi
中实现ABI,如果是,为什么我们有libcxxabi
?
答案 0 :(得分:0)
我自己构建了libunwind
并使用libunwind
检查了nm
中的符号并获得了这些符号:
nm: libunwind.cpp.o: File format not recognized
nm: Unwind-EHABI.cpp.o: File format not recognized
nm: UnwindLevel1.c.o: File format not recognized
nm: UnwindLevel1-gcc-ext.c.o: File format not recognized
nm: Unwind-sjlj.c.o: File format not recognized
UnwindRegistersRestore.S.o:
0000000000000000 T _ZN9libunwind16Registers_x86_646jumptoEv
UnwindRegistersSave.S.o:
0000000000000000 T unw_getcontext
这似乎意味着libunwind
只是实现了展开函数,没有别的。