为什么在ARM二进制文件上显示readelf奇数入口点地址?

菲利普

我在gdc / g ++版本4.8.2和clang版本3.5的Odroid-XU3上编译了C ++ HelloWorld。我还编写了一个C HelloWorld进行比较。

g++ -static -o HelloWorld hello.cc

readelf -h HelloWorld 显示以下入口点地址:

HelloWorld: 0x8be5 HelloClang: 0x8c45 HelloC: 0x88b5

这些是奇数地址。Thumb有奇数个地址,所以这与Thumb有关系吗?

此外,objdump -lSd HelloWorld_start显示符号0x8be4,看起来像“正确”的地址。

为什么要显示这两个工具的不同地址?

奥瑟伦

是的,地址是奇怪的,因为它们是Thumb函数,这是一个简单的问题,但是,为什么两个工具向我报告的方式不同是一个好问题。

readelf 故意不使用BFD(与objdump不同),并且主要用于验证其他工具。

在这里

readelf和objdump之间的区别:这两个程序都能够显示ELF格式文件的内容,那么binutils项目为什么有两个文件转储器?

原因是objdump通过世界的BFD过滤器看到了ELF文件。如果BFD有一个错误,例如,它不同意e_flags中的机器常数,那么很有可能会保持内部一致性。链接器将其视为BFD方式,objdump将其视为BFD方式,GAS将其视为BFD方式。需要一种工具来找出文件的实际含义。

这就是为什么readelf程序不与BFD库链接的原因-它作为独立程序存在,以帮助验证BFD的正常工作。

在某些情况下,readelf可以提供比objdump更多的关于ELF文件的信息。特别是,它可以显示objdump目前无法提供的DWARF调试信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“二进制文件”不在原始二进制文件中?

来自分类Dev

如何在objcopy生成的二进制图像文件中获取入口地址?

来自分类Dev

为什么“ git status”在二进制文件未修改且文件模式相同时显示修改后的二进制文件

来自分类Dev

为什么git索引文件是二进制的?

来自分类Dev

cat为什么更改二进制文件的内容?

来自分类Dev

为什么忽略二进制文件是最佳做法?

来自分类Dev

为什么在二进制文件上使用cat会使终端混乱?

来自分类Dev

为什么在二进制文件上使用cat会使终端混乱?

来自分类Dev

为什么二进制文件上的grep -P有时匹配错误的字节?

来自分类Dev

为什么我静态编译的 BusyBox ARM 二进制文件可以在我的 x86_64 PC 上运行?

来自分类Dev

为什么不同的十六进制编辑器为文件显示不同的二进制文件?

来自分类Dev

如果我在ARM上意外运行x86二进制文件,如何显示错误消息?

来自分类Dev

为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

来自分类Dev

为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

来自分类Dev

为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

来自分类Dev

为什么Linux上的Subversion客户端将我的XML文件检测为二进制文件?

来自分类Dev

Cygwin gcc创建损坏的二进制文件-无法在动态链接库中找到过程入口点

来自分类Dev

为什么Go(lang)二进制文件不会显示在`where`,`whereis`和类似工具中?

来自分类Dev

为什么我的交叉编译CGO二进制文件不能在Raspberry Pi(Raspbian)上运行?

来自分类Dev

我想将stdin解释为二进制文件。为什么freopen在Windows上失败?

来自分类Dev

Perl模块取决于二进制文件,即使使用CheckBin,为什么在FreeBSD上测试也会失败?

来自分类Dev

是否可以在ARM处理器上运行x86二进制文件?

来自分类Dev

安装跨工具链以在Debian上构建ARM二进制文件

来自分类Dev

使用Valgrind在X86 / Linux机器上检测ARM二进制文件

来自分类Dev

使用ARM程序集读取二进制文件

来自分类Dev

为什么以二进制格式写入文件会导致文件大小不同?

来自分类Dev

为什么GCC根据文件创建共享对象而不是可执行二进制文件?

来自分类Dev

为什么可执行二进制文件包含包含的头文件的路径?

来自分类Dev

为什么在版本控制系统中应将.pbxproj文件视为二进制文件?

Related 相关文章

  1. 1

    为什么“二进制文件”不在原始二进制文件中?

  2. 2

    如何在objcopy生成的二进制图像文件中获取入口地址?

  3. 3

    为什么“ git status”在二进制文件未修改且文件模式相同时显示修改后的二进制文件

  4. 4

    为什么git索引文件是二进制的?

  5. 5

    cat为什么更改二进制文件的内容?

  6. 6

    为什么忽略二进制文件是最佳做法?

  7. 7

    为什么在二进制文件上使用cat会使终端混乱?

  8. 8

    为什么在二进制文件上使用cat会使终端混乱?

  9. 9

    为什么二进制文件上的grep -P有时匹配错误的字节?

  10. 10

    为什么我静态编译的 BusyBox ARM 二进制文件可以在我的 x86_64 PC 上运行?

  11. 11

    为什么不同的十六进制编辑器为文件显示不同的二进制文件?

  12. 12

    如果我在ARM上意外运行x86二进制文件,如何显示错误消息?

  13. 13

    为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

  14. 14

    为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

  15. 15

    为什么我的二进制文件可以在Windows 8上运行而不能在Windows 7上运行?

  16. 16

    为什么Linux上的Subversion客户端将我的XML文件检测为二进制文件?

  17. 17

    Cygwin gcc创建损坏的二进制文件-无法在动态链接库中找到过程入口点

  18. 18

    为什么Go(lang)二进制文件不会显示在`where`,`whereis`和类似工具中?

  19. 19

    为什么我的交叉编译CGO二进制文件不能在Raspberry Pi(Raspbian)上运行?

  20. 20

    我想将stdin解释为二进制文件。为什么freopen在Windows上失败?

  21. 21

    Perl模块取决于二进制文件,即使使用CheckBin,为什么在FreeBSD上测试也会失败?

  22. 22

    是否可以在ARM处理器上运行x86二进制文件?

  23. 23

    安装跨工具链以在Debian上构建ARM二进制文件

  24. 24

    使用Valgrind在X86 / Linux机器上检测ARM二进制文件

  25. 25

    使用ARM程序集读取二进制文件

  26. 26

    为什么以二进制格式写入文件会导致文件大小不同?

  27. 27

    为什么GCC根据文件创建共享对象而不是可执行二进制文件?

  28. 28

    为什么可执行二进制文件包含包含的头文件的路径?

  29. 29

    为什么在版本控制系统中应将.pbxproj文件视为二进制文件?

热门标签

归档