gpt4 book ai didi

c++ - 程序编译中的PIC级别是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:24 28 4
gpt4 key购买 nike

我正在查看 LLVM 库,我发现 Clang 会发出添加此元数据的 LLVM IR 模块:

!llvm.module.flags = !{!0}
!llvm.ident = !{!1}

!0 = !{i32 1, !"PIC Level", i32 2}
!1 = !{!"Apple LLVM version 7.3.0 (clang-703.0.31)"}

然后我发现在模块上调用方法 setPICLevel() 会得到类似的结果:

!0 = !{i32 1, !"PIC Level", i32 0}

所以整个元数据 !0 都是关于 PIC 级别的。

我一直在互联网上搜索它,但我一无所获。这个 PIC 级别是什么,它表示什么?

最佳答案

这是一个仅适用于 PowerPC 的标志,否则将被忽略。它将位置无关代码的模型设置为小型或大型模型。其他架构当然可以有 PIC,但如果该模型不适用于其他地方,则此标志表示大小。

您可以看到首次添加到 LLVM 的提交:http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/205216

更多信息:

https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachOTopics/1-Articles/dynamic_code.html

https://en.m.wikipedia.org/wiki/Position-independent_code

关于c++ - 程序编译中的PIC级别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37777316/

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