-qstackprotect (-fstack-保护器)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qstackprotect
-fstack-protector    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

错误检查和调试

等效编译指示

无。

用途

防止将覆盖或损坏堆栈的恶意输入数据或编程错误

语法

读取语法图跳过可视语法图  -fno-stack-protector -fstack-protector -fstack-protector-all -fstack-protector-strong -fstack-protector --parm ssp-buffer-size=N
读取语法图跳过可视语法图 -q nostackprotectstackprotect=allsize=N

缺省值

-qnostackprotect

参数

全部
保护 所有 函数 ,无论 函数 是否具有易受攻击的对象。
size=N
保护 所有 函数 ,这些函数包含大小 大于 或等于 N 字节的自动数组。 启用 -qstackprotect 选项时,缺省大小为 8 bytes

使用量

-qstackprotect 生成额外的代码,以保护具有易受攻击对象的 函数 免受堆栈损坏。 缺省情况下, -qstackprotect 选项处于禁用状态,因为它可能会降低运行时性能。

要生成代码以保护所有函数 基于 XL 的前端开始和易受攻击的对象基于 XL 的前端端 ,请输入以下命令:

xlc myprogram.c -qstackprotect=all

要生成代码以保护具有特定大小的对象的 函数 ,请在将 size= 参数设置为以字节表示的对象大小的情况下输入以下命令:

xlc myprogram.c -qstackprotect=size=8
注: 如果链接步骤失败并显示一条消息,指示 __ssp_canary_word 未定义,那么您可能使用了不受支持的 AIX®级别。

预定义的宏

无。

相关信息