Linker 链接ELF文件中的静态重定位,.dynsym表中不需要条目

Linker 链接ELF文件中的静态重定位,.dynsym表中不需要条目,linker,arm,ld,elf,Linker,Arm,Ld,Elf,我的最终ELF文件包含超过500个R_ARM_RELATIVE类型的动态重定位和5个R_ARM_ABS32类型的静态重定位。 据我所知,静态重新定位仅用于静态链接。我的文件将仅在加载时动态链接。 我在这里找到了以下信息: 为什么我的文件在完全链接时可以包含静态重新定位 我的另一个问题是关于R\u ARM\u相对迁移的问题。 他们不使用.dynsym表进行重新定位过程(R_ARM_ABS32使用)。 那么为什么在.dynsym表中有这么多(>70)个符号,而不是5个呢? 除了动态链接中的重新定位

我的最终ELF文件包含超过500个R_ARM_RELATIVE类型的动态重定位和5个R_ARM_ABS32类型的静态重定位。
据我所知,静态重新定位仅用于静态链接。我的文件将仅在加载时动态链接。 我在这里找到了以下信息:

为什么我的文件在完全链接时可以包含静态重新定位

我的另一个问题是关于R\u ARM\u相对迁移的问题。
他们不使用.dynsym表进行重新定位过程(R_ARM_ABS32使用)。
那么为什么在.dynsym表中有这么多(>70)个符号,而不是5个呢?
除了动态链接中的重新定位过程外,这些符号还用于其他用途吗?

没有人可以真正发表评论。你是怎么产生小精灵的?根据编译器和选项的不同,将有不同的形式。有时候手臂精灵会因为这个原因做一些愚蠢的事情。我认为编译器/链接器会留下一堆PC-relative
R\u-ARM\u-relative
符号,它们根本不需要任何修复。如果要通过重新定位/拆分节在代码中打孔,则可以使用这些条目。如
。rodata
将不会跟随
。text
等。请提供示例汇编程序和录音机。此外,尝试使用
strip
以确保不存在仅用于调试的内容。
Static relocations are processed by a static linker; they are normally either
fully resolved or used to produce dynamic relocations for processing by a
post-linking step or a dynamic loader. A well formed image will have no static
relocations after static linking is complete, so a post-linker or dynamic loader
will normally only have to deal with dynamic relocations.