gcc-4.2.1 works fine on ARM with a few patches from openembedded: http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/904-flatten-switch-stmt-00.patch (fixes size regression) http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-20000320.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-64bit-disable0.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-cfcvt64-disable.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-cfcvtds-disable.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-cirrus-bugfixes.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-compare-geu.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-compare-unordered.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-compare.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-eabi-ieee754-div.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-eabi-ieee754.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-floatsi-disable.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-fp_consts.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-neg2.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-offset.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-predicates3.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-saveregs.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-crunch-truncsi-disable.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-thumb-cache.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/arm-thumb.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/cache-amnesia.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/unbreak-armv4t.patch http://www.openembedded.org/repo/org.openembedded.dev/packages/gcc/gcc-4.2.1/zecke-xgcc-cpp.patch With them you could get some patches from debian sid, like arm-pr30486.patch, arm-pragma-pack.patch
Created attachment 132804 [details, diff] arm-pr30486.patch arm-pr30486.patch from debian sid
Created attachment 132806 [details, diff] arm-pragma-pack.patch arm-pragma-pack.patch from debian sid
All those patches seems to work with gcc-4.2.2. Now I'm doing some tests, but it looks like gcc-4.2.2 works perfectly with bare gentoo-patches from gcc-4.2.1 + those patches from deb and oe patches.
i'm not about to start merging crunch crap ... it's a pita to maintain adding fixes for specific PRs is fine
4.2.2 includes a bunch of patches