为什么 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 它可能包含的内容。