作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 LLVM。我正在阅读位于 lib/CodeGen/StackProtector.cpp 中的堆栈保护代码。在这个文件中,InsertStackProtectors 函数将调用 llvm.stackprotect 插入到代码中:
// entry:
// StackGuardSlot = alloca i8*
// StackGuard = load __stack_chk_guard
// call void @llvm.stackprotect.create(StackGuard, StackGuardSlot)
// ...(Skip some lines)
CallInst::
Create(Intrinsic::getDeclaration(M, Intrinsic::stackprotector),
Args, "", InsPt);
最佳答案
.td
文件是 LLVM 使用代码生成来减少样板代码的数量。在这种特殊情况下,./include/llvm/IR/Intrinsics.gen
在构建目录中生成并包含描述在 .td
中指定的内在函数的代码。文件。
至于stackprotector
,后端有一堆代码来处理它。参见例如 lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
- 在 SelectionDAGBuilder::visitIntrinsicCall
它生成实现这个内在的实际 DAG 节点
关于LLVM 的 llvm.stackprotect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19775744/
我刚刚开始使用 LLVM。我正在阅读位于 lib/CodeGen/StackProtector.cpp 中的堆栈保护代码。在这个文件中,InsertStackProtectors 函数将调用 llvm
我是一名优秀的程序员,十分优秀!