|
From: Isaac R. <is...@ra...> - 2017-09-19 17:29:07
|
Hello there! I have been having some trouble getting Valgrind to work on an embedded platform we are using and have been a bit confused by the supported platform listing. On the website it says the following in the list of supported platforms (http://valgrind.org/info/platforms.html): "ARM/Linux: up to and including ARMv7." I read this to mean that Valgrind supports all versions of ARM from v2 to v7 across all processor families, but I am not so sure that this reading is correct. I have found many old references online to ARMv5 not being supported by Valgrind at all, and the 'valgrind' package in OpenEmbedded refuses to build for anything other than only ARMv7 exactly (I think it is confused to refuse to build on anything either older or newer than v7). The language used on the supported platform page is a little confusing to me I guess, since it doesn't mention the specific ARM processor families (Cortex, "Legacy", the newer looking hybrid 32/64 *-A architecture). Can someone who has worked on the code clarify if Valgrind is in fact expected to work on an ARMv5? Thanks a lot for your help! IJR Isaac Raway |
|
From: John R. <jr...@bi...> - 2017-09-19 18:20:10
|
> Can someone who has worked on the code clarify if Valgrind is in fact expected to work on an ARMv5? The official position is v7 only. There is no v8 or higher yet, except aarch64 which is supported separately because it is totally a different architecture. It is technically possible to support v5/v6, and it is not really difficult for single-threaded processes. I myself submitted a set of patches that worked. But less-than-v7 hardware (especially v5) lacks reasonable support for multi-threading and mutual exclusion. It can be done, but it is so cumbersome that it is not worthwhile. If your project is unwilling to spend another $1 for a v7 chip then you are too cheap. Get a RaspberryPi 3B, a pine64, or other similar board to use for next-to-last-stage integration. Interface your hardware peripherals directly or via USB, or over ethernet to a real device. Algorithm work, plus most integration, should be done in a non-embedded environment using emulators [you _do_ have and maintain good software models for the devices, right?] -- |
|
From: Julian S. <js...@ac...> - 2017-09-23 07:01:35
|
On 19/09/17 20:19, John Reiser wrote: >> Can someone who has worked on the code clarify if Valgrind is in fact >> expected to work on an ARMv5? ARMv5 and ARMv6 aren't supported. In theory they could be to some extent, but they lack adequate concurrency-related instructions (atomic insns, mem fences) and the overall hassle-to-benefit ratio doesn't seem worth it. ARMv7 is ubiquitous now -- can't you use that? > The official position is v7 only. There is no v8 or higher yet, except aarch64 > which is supported separately because it is totally a different architecture. No, that's not the case. ARMv8 (that is, 8.0) is supported in both 32 and 64 bit modes (that is, for both "arm" and "aarch64"). J |
|
From: Ivo R. <iv...@iv...> - 2017-09-23 07:17:46
|
2017-09-23 9:01 GMT+02:00 Julian Seward <js...@ac...>: > > On 19/09/17 20:19, John Reiser wrote: >>> Can someone who has worked on the code clarify if Valgrind is in fact >>> expected to work on an ARMv5? > > ARMv5 and ARMv6 aren't supported. In that case we need to update http://www.valgrind.org/info/platforms.html to say for example: - ARM/Linux: up to and including ARMv7. - ARM64/Linux: Up to and including ARMv8. + ARM/Linux: supported since ARMv7. + ARM64/Linux: support for ARMv8.0. I. |