As for gathering information, I can't think of some useful information
from a working system so far. The same applies to testing. We are able to
test it here. Anyway, thanks for your messages, Frank and Daniel! The
remaining useful tasks which I see are:
1) learn how to compile a bootable kernel for this machine and apply this
knowledge to compile a fresh current kernel;
2) understand what goes wrong (by bisecting gcc), suggest a fix. (Before
we understand it, we can't be sure what should be fixed: it's not
necessarily abug in gcc).
So far, we've done a number of attempts to compile and boot a kernel (I'm
going to post the details and the kernels soon), and my conclusion so far is
that the only affecting factor is the version of gcc (even not -O1 vs
-Os/-O2).
gcc <= 4.5.3 produces a bootable kernel (as for
linux-image-3.2.0-4-mckinley, gcc 4.4.7 from wheezy and gcc 4.5.3 from
snapshots produced a bootable one in my experiments);
gcc > = 4.6.3 produces a non-bootable kernel.
So this already gives an initial hypothesis about the solution to 1):
To compile a bootable kernel for this machine, use gcc <= 4.5.3.