极术小姐姐 · 12月3日 · 广东

第 3 部分:在 Linux AArch64 上启用 PAC 和 BTI

image.png

在第 2 部分中,我们探讨了如何同时启用 PAC 和 BTI、优化和提示空间。在第 3 部分中,我们将了解 C++ 风格的异常处理、DWARF 如何与运行时交互以提供此支持以及支持 PAC 所需的修改。我们还将研究如何使用 PAC 可用的其他签名密钥,并在汇编代码中添加支持。

示例的源代码可在 https://gitlab.arm.com/pac-an... 上找到,源示例前将使用 “Tag ”关键字引用标记。

异常处理: DWARF 和 CFI

如果要支持跨汇编例程的异常处理,就必须执行 CFI 指令。CFI 即调用帧信息,是一组汇编指令,用于生成 DWARF 数据,以便在 C++ 异常发生时解除调用帧和堆栈。DWARF 本身是一个基于图灵完整堆栈的虚拟机,CFI 指令可以看作是对该虚拟机的编程。DWARF 代码的执行将生成处理异常所需的数据。让我们修改程序,抛出异常并确保其得到处理。

作者:Bill Roberts
文章来源:https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/p3-enabling-pac-and-bti-on-aarch64

欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区 Arm 技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
23580
内容数
1031
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息