在EuroLLVM 2014 Kostya Serebryany presented上进行矢量溢出检测。在幻灯片12中,他提供了GCC revision 207517的链接,其中可以看到branches/google/gcc-4_8/libstdc++-v3/
我想知道哪个GCC版本可以使用容器溢出错误检测?
如果它仅在行李箱中是否可以在Clang 3.9版本中使用,或者它也在行李箱中?
答案 0 :(得分:1)
Sanitizer矢量注释在原始gcc中不可用,这些更改只是谷歌gcc分支的一部分(在gcc.gnu.org上发布)。分支描述:https://www.gnu.org/software/gcc/svn.html
google/main
此分支包含Google本地修补程序,这些修补程序将分阶段提供给主干。其中一些补丁要么正在审核中,要么尚未提出。该分支的目的是作为一个临时平台,允许与外部开发人员协作。这个分支中的补丁只能在这里保留,直到它们被检查并在主干中接受。该分支由Diego Novillo维护
向Vector:
添加AddressSanitizer注释的提交https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=207517“对于Google b / 8513090,将AddressSanitizer注释添加到std :: vector”:
我们可以从提交中获取注释的名称:
// When sanitizer annotataions are off, avoid bazillion of no-op
// functions that blow up debug binary size.
#define __sanitizer_vector_annotate_new()
#define __sanitizer_vector_annotate_delete()
#define __sanitizer_vector_annotate_increase(a)
#define __sanitizer_vector_annotate_shrink(a)
现在,GNU的trunk.tcc或stl_vector.h的trunk版本中没有清洁剂注释(搜索“sanitizer”):
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/vector.tcc https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_vector.h
邮件列表中的线程gcc-patches:https://gcc.gnu.org/ml/gcc-patches/2014-05/msg02180.html“检测”容器溢出“std :: vector中的错误”,来自:Konstantin Serebryany,2014年5月26日。