【发布时间】:2017-11-22 21:29:27
【问题描述】:
如果您在 linux 上调用 exec(...),它最终会调用 execve(),后者调用 sys_execve(),然后调用 do_execve,然后遍历处理程序列表,直到找到匹配的处理程序(有binfmt_elf.c 中的默认精灵处理程序)。
另一方面,如果您查看 glibc 的源代码,那么 execve() 会调用 hurd_exec(),然后它会调用 __file_exec(我找不到它的源代码)。它看起来最终会出现在dl-open.c,但我找不到在两者之间运行的代码。
我假设用户空间程序将始终从库中调用版本,在这种情况下,__file_exec 会去哪里?我在内核或 glibc 代码中都找不到对它的引用...
注意:这是针对 armv8、linux 3.10 的。
【问题讨论】: