BTW, here's the state of toolchains, by architecture:

alpha           alpha-linux     works
arm             arm-linux       works
arm26                           support is gone in gcc4, tree is not well either
cris            cris-linux      broken [*3][*4], but gets through arch/cris, so
                                there's some use for it...
frv             frv-linux       4.1 mostly works [*2], but "U" constraint
                                support is still missing in mainline
h8300           h8300-elf       broken [*5][*3]
i386            x86_64-linux    works
ia64            ia64-linux      works
m32r            m32r-linux      works [*2]
m68k            m68k-linux      works [*2]
mips            mips64-linux    works
mips64          mips64-linux    works [*1]
parisc          hppa-linux      works [*4]; gcc-4.1 gives an ICE [*7]
parisc64        hppa64-linux    Linus' tree is broken; gcc builds, but doesn't
                                get far in kernel build; might die later.
powerpc         powerpc64-linux works
ppc             powerpc64-linux works
s390            s390x-linux     works
sh              sh-linux        works [*4]
sh64            sh64-linux      broken [*6]
sparc           sparc64-linux   works
sparc64         sparc64-linux   works
um              toolchain of corresponding sub-arch
v850            v850e-linux     works [*2][*5]
x86_64          x86_64-linux    works
xtensa, m68knommu: have not tried lately

[*1] except that we get bogus flags passed to as(1) if we are building
for 64bit cpu without CONFIG_BUILD_ELF64.
[*2] 64bit bugs in binutils, fixes exist
[*3] ICE during kernel build
[*4] needs a patch to get rid of dependency on target libc headers; fix exists
[*5] 64bit bugs in gcc, fixes exist
[*6] ICE during libgcc build
[*7] 4.0 works, 4.1 gives an ICE when you build on 64bit host with -Os;
trimmed-down reproducer is
void foo(int sig, int *p)
{
        if (!((1ULL << ((sig)-1)) & 0x300000edcULL))
                *p = 0;
}

Reply via email to