官方 ELF 参考 & 忽略共享库中的 DT_RPATH

官方 ELF 参考 & 忽略共享库中的 DT_RPATH

Linux 的官方 ELF 格式参考是什么?

有的是精灵1.2规范,该规范是 1995 年的并且已经过时(不包括DT_RUNPATH示例)。

但除此之外,似乎只有一个草稿版本System V 应用程序二进制接口从 2003 年开始。我似乎找不到不是草稿的版本。

然后,有一个Oracle Solaris 版本,这似乎是基于该草案。

值得注意的是,2003 年草案和 Solaris 版本似乎DT_RPATH在共享库是否被忽略的问题上存在分歧;比较表格2003年选秀索拉里斯。根据 2003 年草案,它们应该被忽略,而根据 Solaris,它们不应该被忽略。

在我的 Ubuntu 16 机器上,运行时链接器似乎确实如此不是忽略DT_RPATH共享库,因此看起来它遵循 Solaris 规范,而不是 2003 年草案。

Linux 的官方 ELF 规范应该是什么?


编辑:从 LSB 5.0.0 开始:

符合 LSB 的实现应支持对象文件信息和系统操作,这些信息和系统操作创建系统 V ABI 和系统 V ABI 更新中指定的运行程序,以及本规范和 LSB 核心规范的相关体系结构特定部分的进一步要求。

我没有看到 LSB 文档提到如何处理共享库上的 DT_RPATH。这是否意味着ld不符合 LSB,因为它应该忽略共享库上的 RPATH?

相关内容