On Thu, 14 Apr 2011, Michael Hope wrote:
Hi there. The address space randomisation feature in 2.6.35 and above kernels breaks GCC's precompiled headers support. GCC works by compiling the header once, dumping the internal format out to disk, and then mmap()ing it back in at a fixed address.
Oh my... This is really nasty.
The solution for other architectures is for GCC to pick a spot in the virtual address space that is likely to be free and map the PCH in there. Most of them use 0x60000000 which from a bit of poking seems to be fine on ARM as well.
Can someone point me at the typical virtual address space for a ARM Linux process? How does 0x60000000 sound?
The ARM user address space closely mimics the x86 32-bit user address space. So if 0x60000000 works fine there then it should be fine on ARM too.
Nicolas