|
From: Julian S. <js...@ac...> - 2007-11-12 01:35:06
|
I've been testing Valgrind on a recent ppc distro, openSUSE 10.3 running on a 32-bit ppc box. Memcheck generates huge numbers of undefined value errors even for the simplest program (eg /bin/date) and I'm trying to figure out what's going on. Many of the errors seem to relate to load instructions like this 387d8: 80 02 8f f4 lwz r0,-28684(r2) complaining that r2 contains an undefined value. And it's true; it is not written at all in the procedure in which this is reported. Which is odd. AFAIK r2 is not an argument register and it didn't used to have any particular meaning in the ppc32 ELF ABI. Now I'm wondering if the 32-bit ABI has morphed into something more similar to the 64-bit ppc ELF ABI. That uses r2 to point to tables of constants, which kinda looks like what I'm seeing. Or perhaps it is being used as a pointer to some thread-local data area? Anybody know anything about this? This is with gcc-4.2.1, gcc-2.6.1, kernel 2.6.22.9-0.4-default. J |