gpt4 book ai didi

macos - OSX 10.5 Leopard Symbol Mangling with $non_lazy_ptr

转载 作者:行者123 更新时间:2023-12-01 08:21:08 25 4
gpt4 key购买 nike

为什么 Leopard 会用 $non_lazy_ptr 破坏一些符号?更重要的是,修复 undefined symbol 错误的最佳方法是什么,因为符号已被 $​​non_lazy_ptr 破坏?

最佳答案

发件人:Developer Connection - Indirect Addressing

间接寻址是代码生成技术的名称,它允许从另一个文件引用一个文件中定义的符号,而无需引用文件明确了解定义该符号的文件的布局。因此,定义文件可以独立于引用文件进行修改。间接寻址最大限度地减少了必须由动态链接器修改的位置数量,这有助于代码共享并提高性能。

当一个文件使用另一个文件中定义的数据时,它会创建符号引用。符号引用标识从中导入符号的文件和引用的符号。有两种类型的符号引用:非惰性和惰性。

加载模块时,动态链接器会解析非惰性符号引用(绑定(bind)到它们的定义)。
非惰性符号引用本质上是一个符号指针——一个指针大小的数据。编译器为数据符号或函数地址生成非惰性符号引用。

惰性符号引用在第一次使用时由动态链接器解析(而不是在加载时)。对引用符号的后续调用直接跳转到符号的定义。
惰性符号引用由符号指针和符号 stub 组成,这是一小部分直接取消引用并跳过符号指针的代码。当编译器遇到对另一个文件中定义的函数的调用时,它会生成惰性符号引用。

关于macos - OSX 10.5 Leopard Symbol Mangling with $non_lazy_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/79054/

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