GCC 15 功能开发很快就会结束,专注于错误修复,然后在 2025 年初将 GCC 15.1 发布为稳定版。编译器代码库中的最新功能之一是围绕 Arm Guarded Control Stack (GCS) 功能的代码生成支持。
Arm 在其 2022 CPU 扩展中引入了 Guarded Control Stack,是一种帮助缓解某些返回对象编程 (ROP) 攻击的方法。如 Arm 文档中所述:
“GCS 是由软件分配的虚拟地址空间的受保护区域。当处理器执行 Branch with Link 指令(例如 BL)时,返回地址被推送到 GCS 上,并被写入 Link Register (LR)。在过程返回时,将从 GCS 中弹出最新存储的返回地址。处理器要么将 popped 值与 LR 进行比较,要么直接使用 popped 值……为了防止对 GCS 进行意外或恶意更改,引入了新的阶段 1 权限。此权限允许软件读取,但将写入限制为 GCSPUSH 指令或作为执行 BL 的副作用。
随着星期四合并了最新的 GCC 补丁,现在支持“-mbranch-protection=gcs”选项。这样可以生成 Arm Guarded Control Stack 兼容的代码。此分支保护选项与早期 Arm 处理器也可以设置为 Branch Target Identification “BTI” 的选项相同。
-mbranch-protection=gcs 选项是通过此提交引入的,而相关的 Arm GCS 补丁也在星期四合并,并且都将成为即将发布的 GCC 15.1 版本的一部分。
转自 GCC 15 Adds Option For Arm Guarded Control Stack “GCS” Code Generation – Phoronix