在第 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)加入技术交流群,请备注研究方向。