使用gcc编译时怎样去掉endbr32指令?

我给cflags添加了选项 -fcf-protection=none和-mmanual-endbr
因为我看了gcc手册,上面说这两个组合可以消除endbr32这个指令。
但是我使用前有两条endbr32指令,使用后只消除了一条。如图。添加选项前
添加选项后
第一张图是添加选项前的汇编代码,第二张图是添加后的代码。
我的c程序很简单,如下。

int main(){
return 0;
}

这个程序什么都不做就返回了,我现在想消除编译产生的endbr32指令。
但是我只能消除一条,为什么?

阅读 5.4k
1 个回答

_trm_init 不是由你的代码生成的,是编译器已经生成好的代码直接链接进去的。所以不受你的编译选项的控制。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏