【发布时间】:2013-03-21 18:29:20
【问题描述】:
这是来自 a.out 的转储
STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x00000000 memsz 0x00000000 flags rwx
为什么栈段有可执行属性?
为什么没有带有 rw- 属性的堆段?
//在 ubuntu 32 位机器上。程序是一个简单的hello world。
命令:
ld test.o startup.s; objdump -dhSxt -M intel-pneumonic a.out
//startup.s 有一个带有 _start 符号的小汇编代码,它调用 main 并在 main 返回后退出。
【问题讨论】:
-
您需要提供编译器标志和正在运行的命令。
-
@teppic 没什么特别的。只是 gcc test.c;将其添加到 Q 中。
-
允许堆栈可执行,但我很惊讶它是默认值。在我的 Ubuntu 副本上不是。
-
@teppic,我很抱歉。我使用的实际命令是 ld test.o startup.s,其中我有带有 _startup 符号的汇编代码。这里有一些上下文 - airs.com/blog/archives/518