【问题标题】:elixir.bootlin doesn't work to search Linux files?elixir.bootlin 无法搜索 Linux 文件?
【发布时间】:2021-08-13 06:13:18
【问题描述】:

我在处理 linux 时遇到了很多问题。

我正在尝试查找 do_execv 和 sys_execv 的实现,所以我去了:https://elixir.bootlin.com/linux/v4.15.12/A/ident/do_execv

并搜索了do_execv,但我根本没有得到任何结果,这怎么可能? linux没有这样的功能吗?

【问题讨论】:

标签: c linux unix linux-kernel kernel


【解决方案1】:

不,Linux 内核没有“do_execv”符号。

标准 C 库中的所有 POSIX.1 exec*() 函数都使用execveexecveat 系统调用,在fs/exec.c 中定义。

这些系统调用在该文件中使用的两个辅助函数名为do_execvedo_execveat;请注意,它们采用struct filename 而不是用户空间字符串作为参数。

如果您搜索sys_execve(实现系统调用的函数),它不会在 fs/exec.c 中找到系统调用定义,因为通常系统调用是使用宏 SYSCALL_DEFINEn(name, ...) 定义的,其中 n 是参数个数,定义的函数名称为sys_name。因此,对于系统调用,您通常只搜索 sys_name 符号以及系统调用名称,但检查它所在的行是否以 SYSCALL_DEFINE 开头。

【讨论】:

  • 你错了,我刚刚打开了一个文件,里面有do_exec...
猜你喜欢
  • 2021-11-13
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 2021-09-29
  • 2022-08-12
  • 1970-01-01
相关资源
最近更新 更多