diff -ruN gcc-4.2.2/configure gcc-4.2.2.patched/configure --- gcc-4.2.2/configure 2007-09-14 17:42:24.000000000 -0700 +++ gcc-4.2.2.patched/configure 2007-11-25 14:09:56.000000000 -0800 @@ -1295,6 +1295,10 @@ sh-*-linux*) noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" ;; + sh-*-elf) + noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" + noconfigdirs="$noconfigdirs target-libstdc++-v3" + ;; sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs="$noconfigdirs ${libgcj}" noconfigdirs="$noconfigdirs target-examples" @@ -1320,6 +1324,7 @@ ;; arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) noconfigdirs="$noconfigdirs target-libffi target-qthreads" + noconfigdirs="$noconfigdirs target-libstdc++-v3" ;; arm*-*-linux-gnueabi) noconfigdirs="$noconfigdirs target-libffi target-qthreads" @@ -1434,6 +1439,7 @@ ;; i[3456789]86-*-coff | i[3456789]86-*-elf) noconfigdirs="$noconfigdirs ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3" ;; i[3456789]86-*-linux*) # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's @@ -1494,6 +1500,10 @@ i[3456789]86-*-rdos*) noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss" ;; + x86_64-*-elf) + noconfigdirs="$noconfigdirs ${libgcj}" + noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3" + ;; m32r-*-*) noconfigdirs="$noconfigdirs ${libgcj}" ;; @@ -1544,6 +1554,10 @@ powerpc-*-eabi) noconfigdirs="$noconfigdirs ${libgcj}" ;; + powerpc-*-elf) + noconfigdirs="$noconfigdirs ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3" + ;; powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems* ) ;; rs6000-*-lynxos*) diff -ruN gcc-4.2.2/gcc/config/arm/t-arm-elf gcc-4.2.2.patched/gcc/config/arm/t-arm-elf --- gcc-4.2.2/gcc/config/arm/t-arm-elf 2006-11-06 04:13:53.000000000 -0800 +++ gcc-4.2.2.patched/gcc/config/arm/t-arm-elf 2007-11-25 13:44:12.000000000 -0800 @@ -11,6 +11,10 @@ MULTILIB_EXCEPTIONS = MULTILIB_MATCHES = +# build a bunch of specialized versions of libcc for particular cores +MULTILIB_OPTIONS += mcpu=arm7tdmi/mcpu=arm9tdmi/mcpu=arm920t/mcpu=arm926ej-s/mcpu=arm1136j-s/mcpu=arm1136jf-s/mcpu=arm1176jz-s/mcpu=arm1176jzf-s/mcpu=xscale/mcpu=mpcore/march=armv4/march=armv4t/march=armv5/march=armv5t/march=armv5te/march=armv6/march=armv6j/march=armv6k/march=armv6z/march=armv6zk +MULTILIB_DIRNAMES += arm7tdmi arm9tdmi arm920t arm926ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s xscale mpcore armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6k armv6z armv6zk + # MULTILIB_OPTIONS += mcpu=ep9312 # MULTILIB_DIRNAMES += ep9312 # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312* @@ -23,8 +27,8 @@ # MULTILIB_DIRNAMES += fpu soft # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float* # -# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork -# MULTILIB_DIRNAMES += normal interwork +MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork +MULTILIB_DIRNAMES += normal interwork # # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore # MULTILIB_DIRNAMES += elf under diff -ruN gcc-4.2.2/gcc/config/i386/t-x86_64elf gcc-4.2.2.patched/gcc/config/i386/t-x86_64elf --- gcc-4.2.2/gcc/config/i386/t-x86_64elf 1969-12-31 16:00:00.000000000 -0800 +++ gcc-4.2.2.patched/gcc/config/i386/t-x86_64elf 2007-11-25 13:44:12.000000000 -0800 @@ -0,0 +1,21 @@ +# On x86-64 we do not need any exports for glibc for 64-bit libgcc_s, +# override the settings +# from t-slibgcc-elf-ver and t-linux +#SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ +# $(srcdir)/config/i386/libgcc-x86_64-glibc.ver + +MULTILIB_OPTIONS = m64/m32 +MULTILIB_DIRNAMES = 64 32 +MULTILIB_OSDIRNAMES = ../lib64 ../lib + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +#EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o \ +# crtbeginT.o crtfastmath.o + +# The pushl in CTOR initialization interferes with frame pointer elimination. +# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, +# because then __FRAME_END__ might not be the last thing in .eh_frame +# section. +#CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables diff -ruN gcc-4.2.2/gcc/config.gcc gcc-4.2.2.patched/gcc/config.gcc --- gcc-4.2.2/gcc/config.gcc 2007-09-01 08:28:30.000000000 -0700 +++ gcc-4.2.2.patched/gcc/config.gcc 2007-11-25 13:44:12.000000000 -0800 @@ -1058,6 +1058,10 @@ x86_64-*-freebsd*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" ;; +x86_64-*-elf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/x86-64.h" + tmake_file="i386/t-x86_64elf" + ;; i[34567]86-*-netbsdelf*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" ;;