-qstackprotect (-fstack-保护器)
适用的调用
| 选项 | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
| -qstackprotect | ✓ | ✓ | ✓ | ✓ |
| -fstack-protector | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
无。
用途
防止将覆盖或损坏堆栈的恶意输入数据或编程错误。
语法
缺省值
-qnostackprotect
参数
- 全部
- 保护 所有 函数 ,无论 函数 是否具有易受攻击的对象。
- size=N
- 保护 所有 函数 ,这些函数包含大小 大于 或等于 N 字节的自动数组。 启用 -qstackprotect 选项时,缺省大小为 8 bytes 。
使用量
-qstackprotect 生成额外的代码,以保护具有易受攻击对象的 函数 免受堆栈损坏。 缺省情况下, -qstackprotect 选项处于禁用状态,因为它可能会降低运行时性能。
要生成代码以保护所有函数
和易受攻击的对象
,请输入以下命令:
xlc myprogram.c -qstackprotect=all要生成代码以保护具有特定大小的对象的 函数 ,请在将 size= 参数设置为以字节表示的对象大小的情况下输入以下命令:
xlc myprogram.c -qstackprotect=size=8注: 如果链接步骤失败并显示一条消息,指示 __ssp_canary_word 未定义,那么您可能使用了不受支持的 AIX®级别。
预定义的宏
无。
