在 execve 调用一个函数后堆栈如何看?甚至有 return 地址吗?

How does the stack look after execve calls a function? Is there even a return address?

我正在尝试了解当您使用系统调用 execve 调用新函数时堆栈的行为方式。

我知道应该有变量 argcargvenvp。最后两个应该是指向包含参数和环境的向量的指针。这些向量也在堆栈框架中。

我正在尝试了解堆栈框架中可能还有什么。具体来说:它是否遵循任何已知的调用约定?有return地址吗?它是否像函数那样存储旧的堆栈指针?

根据 Linux man page:

execve() does not return on success, and the text, data, bss, and stack of the calling process are overwritten by that of the program loaded.

所以,不,没有return地址,栈帧等