Linux 2.6.35 and later on ARM randomise the address space, breaking precompiled header support in GCC. The fix is to use the support in GCC for mmap()ing into a fixed, likely to be free address. The ARM memory map is modeled on the i386 so I used the same definition.
Tested on trunk with a Ubuntu 2.6.35 kernel. Bootstraps OK and clears all of the PCH testsuite failures. Note that this change is equivalent to Mikael Pettersson's patch at: http://gcc.gnu.org/ml/gcc-patches/2010-10/msg02252.html OK for trunk? -- Michael gcc/ 2011-05-02 Michael Hope <michael.h...@linaro.org> PR pch/45979 * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __ARM_EABI__ hosts. diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c index 47ce3ea..8b41685 100644 --- a/gcc/config/host-linux.c +++ b/gcc/config/host-linux.c @@ -84,6 +84,8 @@ # define TRY_EMPTY_VM_SPACE 0x60000000 #elif defined(__mc68000__) # define TRY_EMPTY_VM_SPACE 0x40000000 +#elif defined(__ARM_EABI__) +# define TRY_EMPTY_VM_SPACE 0x60000000 #else # define TRY_EMPTY_VM_SPACE 0 #endif