程序编译中的PIC级别是什么?
What is PIC level in program compilation?
我正在查看 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,但是这个flag代表size如果模型在别处不适用
您可以看到首次添加到 LLVM 的提交:http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/205216
更多信息:
我正在查看 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,但是这个flag代表size如果模型在别处不适用
您可以看到首次添加到 LLVM 的提交:http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/205216
更多信息: