大家。我在为armv5(arm926ej-s)交叉编译valgrind时遇到一些问题。我可以解决其中一些问题,但有一个我无法解决。我会写下这些问题:
Valgrind 在
配置
中不支持armv5,我用armv7*|arm*)
代替armv7*)
,它效果很好。-mcpu=cortex-a8
不正确,因为我有一个arm926ej-s CPU。所以我使用这个命令来替换Makfiles中的它们:sed -i 's/-mcpu=cortex-a8/-mcpu=arm926ej-s/g' `find . -name "Makefile*"`
问题来了。源码中的
movw
和movt
是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
代替 movw
和 movt
。但我对汇编代码不熟悉。任何人都可以帮忙吗?谢谢!
最佳答案
bug 248998 上有一些补丁在 valgrind 错误跟踪器中,它试图添加对 armv5 的支持,但我不知道它们有多完整或它们工作得有多好。
无论如何,它们可能会为您的工作提供一个良好的起点。
关于assembly - 为armv5编译Valgrind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853124/