为什么 gcc 添加 .comment 和 .note.gnu.property 部分?
why gcc is adding .comment and .note.gnu.property section?
任何人都可以解释为什么 gcc 在目标代码中添加 .comment 和 .note.gnu.property 部分,我如何告诉 gcc 不要添加它们,这可能吗?
谢谢。
why gcc is adding the .comment and .note.gnu.property sections
您可以检查 .comment
部分的内容,例如readelf -x.comment
:
echo "int foo() { return 42; }" | gcc -xc - -c -o foo.o
readelf -x.comment foo.o
Hex dump of section '.comment':
0x00000000 00474343 3a202844 65626961 6e203131 .GCC: (Debian 11
0x00000010 2e322e30 2d313029 2031312e 322e3000 .2.0-10) 11.2.0.
显然,“为什么”是为了更容易理解生成目标文件的编译器。
我不相信有 GCC 标志可以抑制这种情况,但 objcopy --remove-section .comment foo.o bar.o
会摆脱它。
.note.gnu.property
可以用类似的方式 。
这里是 discussion 它可能包含的内容。
任何人都可以解释为什么 gcc 在目标代码中添加 .comment 和 .note.gnu.property 部分,我如何告诉 gcc 不要添加它们,这可能吗?
谢谢。
why gcc is adding the .comment and .note.gnu.property sections
您可以检查 .comment
部分的内容,例如readelf -x.comment
:
echo "int foo() { return 42; }" | gcc -xc - -c -o foo.o
readelf -x.comment foo.o
Hex dump of section '.comment':
0x00000000 00474343 3a202844 65626961 6e203131 .GCC: (Debian 11
0x00000010 2e322e30 2d313029 2031312e 322e3000 .2.0-10) 11.2.0.
显然,“为什么”是为了更容易理解生成目标文件的编译器。
我不相信有 GCC 标志可以抑制这种情况,但 objcopy --remove-section .comment foo.o bar.o
会摆脱它。
.note.gnu.property
可以用类似的方式
这里是 discussion 它可能包含的内容。