- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,运行命令:
readelf -r /bin/ls | head -n 20
我得到以下输出:
Relocation section '.rela.dyn' at offset 0x15b8 contains 7 entries:
Offset Info Type Sym. Value Sym. Name + Addend
000000619ff0 003e00000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0
00000061a580 006f00000005 R_X86_64_COPY 000000000061a580 __progname + 0
00000061a590 006c00000005 R_X86_64_COPY 000000000061a590 stdout + 0
00000061a5a0 007800000005 R_X86_64_COPY 000000000061a5a0 optind + 0
00000061a5a8 007a00000005 R_X86_64_COPY 000000000061a5a8 optarg + 0
00000061a5b0 007400000005 R_X86_64_COPY 000000000061a5b0 __progname_full + 0
00000061a5b8 007700000005 R_X86_64_COPY 000000000061a5b8 stderr + 0
Relocation section '.rela.plt' at offset 0x1660 contains 105 entries:
Offset Info Type Sym. Value Sym. Name + Addend
00000061a018 000100000007 R_X86_64_JUMP_SLO 0000000000000000 __ctype_toupper_loc + 0
00000061a020 000200000007 R_X86_64_JUMP_SLO 0000000000000000 getenv + 0
00000061a028 000300000007 R_X86_64_JUMP_SLO 0000000000000000 sigprocmask + 0
00000061a030 000400000007 R_X86_64_JUMP_SLO 0000000000000000 raise + 0
00000061a038 007000000007 R_X86_64_JUMP_SLO 00000000004020a0 free + 0
00000061a040 000500000007 R_X86_64_JUMP_SLO 0000000000000000 localtime + 0
00000061a048 000600000007 R_X86_64_JUMP_SLO 0000000000000000 __mempcpy_chk + 0
我不明白这个输出,需要一些澄清。
第一列偏移量是否指示这些符号引用在 .text 段中的位置? Info 和 Type 列是什么意思,我认为重定位只是将符号引用映射到定义,所以我不明白怎么会有不同的类型?为什么某些符号名称将 0 作为其值的地址...我无法想象它们都映射到文本段中的同一位置?最后,为什么重定位表甚至存在于最终的可执行文件中?它不会占用额外的空间,并且生成可执行文件的最后一个链接命令的所有引用都已解析吗?
最佳答案
这是 readelf 输出的清晰(我希望如此):
请参阅计算示例: https://web.archive.org/web/20150324024617/http://mylinuxbook.com/readelf-command/更多信息: http://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-54839.html
关于elf - 了解 readelf 的重定位表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19593883/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
使用独立的 Android NDK r10e 工具链(使用 --toolchain=x86-clang3.6 开关构建)得到了这种奇怪的行为。交叉编译的环境变量已经设置在运行makefile之前,SY
我想了解 readelf 实用程序如何计算函数大小。我写了一个简单的程序 #include int main() { printf("Test!\n"); } 现在检查函数大小我使用了这个(
对于为 ARM 编译的共享对象,使用 -a 选项调用 readelf,显示没有版本号的库,即 libc.so me@home:~ $ readelf -a shared_object_for_arm
我有以下简单的“hello world”程序: #include int main() { printf("Hello world.\n"); return 0; } 我把它编译成 gcc
有人可以解释一下这些列的含义吗? 我使用 readelf 读取一个 ELF 文件,但找不到任何关于节标题列的相关信息(例如 objdump)。 例如什么是“ES”、“Lk”和“信息”? “Flg”中所
例如,运行命令: readelf -r /bin/ls | head -n 20 我得到以下输出: Relocation section '.rela.dyn' at offset 0x15b8 co
我正在使用 readelf 来弄清楚为什么二进制文件如此之大,但我对输出感到困惑。或者我的二进制链接非常错误。现在二进制大约有 380MB,如果我这样做: readelf -W -s binary |
我试图使用 readelf 从可执行文件中查看源文件 readelf -s svm_classify| grep FILE 给出了这个结果 27: 00000000 0 FILE LOC
在可执行文件上使用 readelf 时,我在一些符号名称后的括号中得到一个数字。例如: Num: Value Size Type Bind Vis Ndx
我需要从已编译的 C 程序文件中获取全局符号。我使用的是 linux 命令 readelf -s filePath 当我使用该命令时,这就是我得到的: 我画了一个蓝色矩形来表示变量名称没有正确显示。
假设我们有一个名为 libtest.so 的共享库,其中有一个函数“foo” 使用 strip 丢弃 libtest.so 中的所有符号 $strip libtest.so 所以,现在如果我们使用:
例如: : Abbrev Number: 1 (DW_TAG_compile_unit) DW_AT_producer : (indirect string, offset: 0
我正在尝试将 elf 文件加载到我制作的 MIPS 模拟器中。我遇到的问题是我不太明白 elf 部分标题偏移背后的含义。当我执行段转储时,段 25 - 31 和 33 - 35 在 0x0000000
我正在开发一个项目,我们的验证测试脚本需要在正在测试的软件版本中定位符号地址。这可用于设置断点或从内存中读取静态数据。我想要创建一个包含符号名称、内存中基地址和大小的映射文件。我们的构建输出一个 EL
当我运行 make binutils/readelf 时,出现以下错误: In file included from readelf.c:43:0: sysdep.h:23:25: fatal err
当我运行 make binutils/readelf 时,出现以下错误: In file included from readelf.c:43:0: sysdep.h:23:25: fatal err
我在 linux 上执行命令“readelf -h test”(“test”是我的二进制程序),得到以下文本: ELF header: Magic: 7f 45 4c 46 .... D
我需要了解我正在从事的项目的 ELF 文件布局,并且我注意到这些工具的存在。为什么所有 Linux 发行版都包含 readelf 和 objdump?这些工具是否相互补充?我什么时候更喜欢使用其中一个
我有 Linux 内核,并尝试使用 objcopy 工具在其上生成 ELF header , 下面是第一步 objcopy -I binary -B i386 -O elf32-i386 -
我是一名优秀的程序员,十分优秀!