【问题标题】:Where is the implementation of syscall.Entersyscall?syscall.Entersyscall 的实现在哪里?
【发布时间】:2019-10-14 20:22:22
【问题描述】:

我正在尝试追踪系统调用在 Go 中的工作方式,但我被卡住了 here

代码正在调用syscall.Entersyscall,但我在源代码树中的syscall 包中找不到Entersyscall 函数的定义。

是否有某种魔法可以将其重命名为其他名称?

更一般地说,如何找到在其广告包中没有明显定义的函数名称(在 Go 源代码树中)的定义?

【问题讨论】:

    标签: go system-calls


    【解决方案1】:

    您在 stdlib 中找不到它,因为它只包含一个包装函数 syscall.Entersyscall()。正确的实现在同一个包中,但用 asm golang.org/src/syscall/asm_linux_arm.s

    编写

    【讨论】:

    • 对不起,我有点困惑; Entersyscall 变成了什么?
    • syscall.Entersyscall() 只是 go 文件中函数的定义(没有实现)。实现是在另一种语言(C、ASM 等)的单独文件中完成的。在编译过程中,两个文件都编译成二进制数据,然后链接成一个可执行文件。
    • 是否有一些文档说明 Go 中的哪些名称与实现中的哪些名称相对应?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2018-02-07
    • 2011-04-18
    • 1970-01-01
    • 2019-05-24
    相关资源
    最近更新 更多