gpt4 book ai didi

c - 为什么在动态链接器启动之前调用 _dl_fixup?

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:39 27 4
gpt4 key购买 nike

我正在尝试了解 glibc 动态链接器的工作原理。我知道在_dl_runtime_resolve中调用了_dl_fixup,解决了重定位问题。所以我认为只有在链接器启动并加载了一些库之后才会调用它。但是当我在里面做一些打印工作时,我发现这个函数甚至在 _dl_start 之前就被调用了。令人困惑:为什么叫它?它做了哪些工作?

我做了一些打印工作,该函数正在处理 strncpy、fopen、fread64 等符号,但对象名称 (l->l_name) 似乎为空。

I add print sentences in _dl_start and _dl_fixup

I make glibc and test the ld.so, I found "_dl_fixup" appears before and after "_dl_start"

我使用gdb 来调试链接器,我认为gdb 本身使用_dl_fixup 来完成一些任务。如果我不使用 gdb,则 _dl_fixup 将仅在 _dl_start 之后调用。

最佳答案

So I thought it's called only after linker starts and has loaded some libraries

没错。

I find the function is called even before _dl_start

这是不正确的:_dl_fixup 仅在 _dl_start 之后调用。

很遗憾,您没有提供任何有关如何得出错误结论的详细信息,因此无法告诉您哪里出错了,但您确实犯了(至少一个)错误。

关于c - 为什么在动态链接器启动之前调用 _dl_fixup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34220222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com