AFL通过插桩获取的代码覆盖率,假如变异的样本触发的新的路径,就会加入到接下来的变异队列中
当我们编写编程语言的时候,不同的语言有不同的异常语法。比如说常见的对于一个块做try,捕获产生的不同Exception。假设这些语言都接入llvm进行代码生成,...
前面libunwind的过程中多次和personality进行交互,这部分是由语言提供和语言相关的内容。libunwind的两个阶段对应到这一个函数之中,per...
第一阶段的personality,这个handler是从frameInfo中获取的,表明每个frame都可以有自己单独的personality,每个frame关...
在之前的博客提到带有异常相关的C++代码编译成llvm ir后,会插入libcxxabi的__cxa_xxx函数,这期则是来了解这些函数的实现。
这一期我们通过编译C++到LLVM代码来查看这部分的实现。在此之前我们需要了解一些简单的基础知识,之后我们将从一个最小抛出异常的代码开始,逐渐复杂化这个例子,查...
整个异常处理的过程中,涉及到各种层级之间相互调用,同时还有一些函数还会负责处理不同的功能(比如说personality会同时处理search以及clean),这...
LLVM(Low Level Virtual Machine)是一个用于构建编译器的开源框架和工具链。它不仅提供了一个高度优化的中间表示(IR),还支持广泛的优...
上面给的用例函数的编译执行是在投影列中的(无JIT投影列执行可以参考这篇《Postgresql源码(127)投影ExecProject的表达式执行分析》)。
链接时优化(Link-time optimization,简称LTO)是编译器在链接时对程序进行的一种优化。它适用于以文件为单位编译程序,然后将这些文件链接在一...
这一步如果当前网络环境有网络并且dhcp获取到ip地址会默认获取国家跟时区直接下一步,如果没有网络环境这一步需要手动输入时区以及国家
前段时间试了把虚拟机CentOS下面的C/C++工程中的Makefile文件改用clang/clang++来编译,这篇文章主要是介绍如何在CentOS7.3系统...
当你心血来潮想学习Rust这门语言时,一定会用到Rustup来安装Rust。同时你可以会疑问toolchain是啥,target又是啥,为啥学其它编程语言没有这...
Scalar Evolution(SCEV)用于分析循环中的标量(scalar)是如何变化的(evolution)。
dlopen动态加载llvmjit.so,并调用so中的_PG_jit_provider_init初始化:
下面函数foo中存在冗余变量计算、赋值语句,使用instcombine优化的效果:
opt提供了很多pass,例如检测代码中的死循环、对代码中的memcpy优化、遍历全部函数分析调用关系等等。
例如上面的%6 = call noundef i32 @_Z9factoriali(i32 noundef 2)函数调用语法,如何找到call的全部使用方法?