acm*_*acm 5 c++ linker shared-libraries address-sanitizer ubsan
在地址清理程序的文档中(https://releases.llvm.org/7.0.0/tools/clang/docs/AddressSanitizer.html),它指出:
链接共享库时,AddressSanitizer运行时未链接,因此-Wl,-z,defs可能会导致链接错误
不仅 ASAN 如此,UBSAN 也是如此。事实证明,这对于 UBSAN 来说特别不方便,因为清理程序可以在库之间引入新的类型信息依赖关系( https://jira.mongodb.org/browse/SERVER-49798vptr中有很多详细信息)。
我真的更喜欢使用-Wl,-z,defsUBSAN 构建。实际上,我可以通过手动将诸如-lclang_rt.ubsan_standalone-x86_64共享库的链接行之类的内容注入到编译过程中的 ubsan 构建中来实现这一点。
但这给我留下了一个棘手的问题:为什么链接驱动程序在链接共享库时不clang根据显式文档自动执行此操作?它显然可以做到这一点,因为它已经为自动获取运行时的程序做到了这一点。事实上,它明确并没有让我怀疑这样做是否存在某种问题。
ubsan到所有共享库的链接线上是否是一个坏主意?| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |