c++ - FORTIFY_SOURCE 和 Og 优化级别

标签 c++ gcc optimization g++ memory-safety

是否可以将-Wp,-D_FORTIFY_SOURCE=2 选项(或=1)与-Og 优化级别一起使用? The patch其中引入了 FORTIFY_SOURCE 包含注释 /* Object size checking is only intended for -O[s123]。 */.

现在是 2004 年。而且我不知道何时引入 -Og 键(也许稍后)。

FORTIFY_SOURCE 需要哪些优化(优化标志)?

最佳答案

强化需要大于 0 的 __OPTIMIZE__ 宏:

$ cat /usr/include/features
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
    && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
# if _FORTIFY_SOURCE > 1
#  define __USE_FORTIFY_LEVEL 2

-Og 在定义 __OPTIMIZE__ 时与其他 -O 标志没有区别:

$ gcc -E -Og -dM -x c /dev/null 2>&1 | grep OPTIMIZE
#define __OPTIMIZE__ 1

所以你应该没问题。

您可以要求 Glibc 开发人员更新评论。

关于c++ - FORTIFY_SOURCE 和 Og 优化级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41009455/

相关文章:

c++ - 常量引用如何工作?

c - 如何使用 gcc 和 Atom 编辑器获得输出 "Process returned x (0x0) execution time : x.xxxx s"?

c++ - 可以做些什么来优化离开方法和清空局部变量堆栈所花费的时间?

c++ - 命令行参数向后?

c++ - 是否可以浏览结构?

C++ 为什么基类/结构构造函数不能有多个参数可以从派生隐式调用?

c - 在 C. Linux 与 Mac 中使用文件函数在每个系统上的结果不同

c - argv : Sanitizing wildcards

android - 安卓应用优化

mysql - 添加抽象层,还是在单个表中工作?