我给cflags添加了选项 -fcf-protection=none和-mmanual-endbr
因为我看了gcc手册,上面说这两个组合可以消除endbr32这个指令。
但是我使用前有两条endbr32指令,使用后只消除了一条。如图。
第一张图是添加选项前的汇编代码,第二张图是添加后的代码。
我的c程序很简单,如下。
int main(){
return 0;
}
这个程序什么都不做就返回了,我现在想消除编译产生的endbr32指令。
但是我只能消除一条,为什么?
我给cflags添加了选项 -fcf-protection=none和-mmanual-endbr
因为我看了gcc手册,上面说这两个组合可以消除endbr32这个指令。
但是我使用前有两条endbr32指令,使用后只消除了一条。如图。
第一张图是添加选项前的汇编代码,第二张图是添加后的代码。
我的c程序很简单,如下。
int main(){
return 0;
}
这个程序什么都不做就返回了,我现在想消除编译产生的endbr32指令。
但是我只能消除一条,为什么?
1 回答1.4k 阅读
1 回答1.1k 阅读
1 回答919 阅读
868 阅读
812 阅读
730 阅读
673 阅读
_trm_init
不是由你的代码生成的,是编译器已经生成好的代码直接链接进去的。所以不受你的编译选项的控制。