assembly - 为armv5编译Valgrind

标签 assembly arm valgrind cross-compiling

大家。我在为armv5(arm926ej-s)交叉编译valgrind时遇到一些问题。我可以解决其中一些问题,但有一个我无法解决。我会写下这些问题:

  1. Valgrind 在配置中不支持armv5,我用armv7*|arm*)代替armv7*),它效果很好。

  2. -mcpu=cortex-a8 不正确,因为我有一个arm926ej-s CPU。所以我使用这个命令来替换Makfiles中的它们:

    sed -i 's/-mcpu=cortex-a8/-mcpu=arm926ej-s/g' `find . -name "Makefile*"`

  3. 问题来了。源码中的movwmovt是armv5不支持的。错误信息为:

m_dispatch/dispatch-arm-linux.S: Assembler messages:
m_dispatch/dispatch-arm-linux.S:122: Error: selected processor does not support `movw r1,#47'
m_dispatch/dispatch-arm-linux.S:123: Error: selected processor does not support `movw r2,#0'
m_dispatch/dispatch-arm-linux.S:175: Error: selected processor does not support `movw   r1,#:lower16:vgPlain_stats__n_xindirs_32'
m_dispatch/dispatch-arm-linux.S:176: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindirs_32'
m_dispatch/dispatch-arm-linux.S:183: Error: selected processor does not support `movw r1,#(((1<<15))-1)'
m_dispatch/dispatch-arm-linux.S:184: Error: selected processor does not support `movw r4,#:lower16:vgPlain_tt_fast'
m_dispatch/dispatch-arm-linux.S:187: Error: selected processor does not support `movt r4,#:upper16:vgPlain_tt_fast'
m_dispatch/dispatch-arm-linux.S:200: Error: selected processor does not support `movw r1,#:lower16:vgPlain_stats__n_xindir_misses_32'
m_dispatch/dispatch-arm-linux.S:201: Error: selected processor does not support `movt r1,#:upper16:vgPlain_stats__n_xindir_misses_32'

我正在考虑用 mov 代替 movwmovt。但我对汇编代码不熟悉。任何人都可以帮忙吗?谢谢!

最佳答案

bug 248998 上有一些补丁在 valgrind 错误跟踪器中,它试图添加对 armv5 的支持,但我不知道它们有多完整或它们工作得有多好。

无论如何,它们可能会为您的工作提供一个良好的起点。

关于assembly - 为armv5编译Valgrind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853124/

相关文章:

c - .c 文件中的内联 PPC 汇编代码出现 "Error: unsupported relocation against <register>"错误

assembly - RMW 指令对现代 x86 是否有害?

c - 绕过地址随机化和堆栈粉碎保护 - 缓冲区溢出攻击的可行性

security - ARM TrustZone 安全操作系统的安全性如何?

c - ARM 皮质 M0+ : How to use "Branch if Carry" instructions in C-code?

c++ - 用于 C++ 分析的 Very sleepy 和 Callgrind 之间的区别

assembly - 修改 6502 中断返回

assembly - GNU Arm 汇编器将 ORR 更改为 MOVW

valgrind - 在理解 kcachedgrind 输出方面需要帮助

c - Valgrind:分配内存时跳转或移动取决于未初始化的值