I've got a possible compiler bug I was wondering you could help me with.
Here's what I'm seeing in two places in the code (and who knows where else):
In fork.c there is:
On entering this line of code, my "p" is valid (0x80fdb810) on exit from
the code it is invalid (0xFFFFFFF). If I put the following code immediately
after the call:
p = *(&p);
My pointer magically reappears. I get the same fun behavior in dup_mmap()
surrounding the flush_tlb_mm() call (this is a 2.1.36 kernel). Maybe the
two are related?
I'm running this on a RM5230. I thought it might be a cache problem, but
I've run the code with caches off and get the same behavior. I'm compiling
with the default CFLAGS... and using gcc 2.7.2-3 and binutils 2.7. Does
anyone have any ideas?