Linuxでexec(...)
を呼び出すと、sys_execve()
を呼び出してdo_execve
を呼び出し、一致するものが見つかるまでハンドラーのリストを調べます(これにはbinfmt_elf.c
にデフォルトのelfハンドラーがあります)を呼び出して終了します。Linuxでexecveを起動する方法は?
一方、glibcのソースを見ると、execve()
はhurd_exec()
を呼び出し、__file_exec
(これはソースが見つかりません)を呼び出します。最終的にはdl-open.c
になりますが、その間に実行されるコードは見つかりません。
私はユーザ空間プログラムが常にライブラリからそのバージョンを呼び出すと仮定しています。この場合、__file_exec
はどこに行きますか?カーネルコードまたはglibcコードのいずれにも参照できません...
注:これはarmv8、linux 3.10用です。一方
ああ、それはいくつかのことを説明します。間違った道を離れてくれてありがとう! – HardcoreHenry