diff -rc gcc-4.0.0-orig/gcc/cppdefault.c gcc-4.0.0/gcc/cppdefault.c
*** gcc-4.0.0-orig/gcc/cppdefault.c	2004-11-03 04:23:49.000000000 +0100
--- gcc-4.0.0/gcc/cppdefault.c	2005-04-22 09:53:28.000000000 +0200
***************
*** 41,46 ****
--- 41,50 ----
  # undef CROSS_INCLUDE_DIR
  #endif
  
+ #undef LOCAL_INCLUDE_DIR
+ #undef SYSTEM_INCLUDE_DIR
+ #undef STANDARD_INCLUDE_DIR
+ 
  const struct default_include cpp_include_defaults[]
  #ifdef INCLUDE_DEFAULTS
  = INCLUDE_DEFAULTS;
diff -rc gcc-4.0.0-orig/gcc/Makefile.in gcc-4.0.0/gcc/Makefile.in
*** gcc-4.0.0-orig/gcc/Makefile.in	2005-04-04 21:45:13.000000000 +0200
--- gcc-4.0.0/gcc/Makefile.in	2005-04-22 10:38:50.000000000 +0200
***************
*** 213,219 ****
  CPPFLAGS = @CPPFLAGS@
  
  # These exists to be overridden by the x-* and t-* files, respectively.
! X_CFLAGS =
  T_CFLAGS =
  
  X_CPPFLAGS =
--- 213,219 ----
  CPPFLAGS = @CPPFLAGS@
  
  # These exists to be overridden by the x-* and t-* files, respectively.
! X_CFLAGS = $(NIX_EXTRA_CFLAGS) $(NIX_EXTRA_LDFLAGS)
  T_CFLAGS =
  
  X_CPPFLAGS =
***************
*** 373,379 ****
  MD5_H	    = $(srcdir)/../include/md5.h
  
  # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
! NATIVE_SYSTEM_HEADER_DIR = /usr/include
  # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
  CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
  
--- 373,383 ----
  MD5_H	    = $(srcdir)/../include/md5.h
  
  # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
! # Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent
! # `fixinc' from fixing header files in /usr/include.  However,
! # NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set
! # it to some dummy directory.
! NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY)
  # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
  CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
  
***************
*** 385,391 ****
  STMP_FIXINC = @STMP_FIXINC@
  
  # Test to see whether <limits.h> exists in the system header files.
! LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
  
  # Directory for prefix to system directories, for
  # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
--- 389,395 ----
  STMP_FIXINC = @STMP_FIXINC@
  
  # Test to see whether <limits.h> exists in the system header files.
! LIMITS_H_TEST = true
  
  # Directory for prefix to system directories, for
  # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
***************
*** 2677,2683 ****
    -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
    -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
    -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
!   -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
    -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
    -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
    @TARGET_SYSTEM_ROOT_DEFINE@
--- 2681,2687 ----
    -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
    -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
    -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
!   -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \
    -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
    -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
    @TARGET_SYSTEM_ROOT_DEFINE@
Only in gcc-4.0.0: ltcf-cxx.sh.orig
diff -rc gcc-4.0.0-orig/ltconfig gcc-4.0.0/ltconfig
*** gcc-4.0.0-orig/ltconfig	2004-10-02 18:33:06.000000000 +0200
--- gcc-4.0.0/ltconfig	2005-04-22 13:33:33.000000000 +0200
***************
*** 2321,2326 ****
--- 2321,2331 ----
  # A language-specific compiler.
  CC=$CC
  
+ # Ugly hack to get libmudflap (and possibly other libraries) to build.
+ # Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag
+ # to Glibc gets lost.  Here we forcibly add it to any invocation.
+ CC="\$CC $NIX_EXTRA_LDFLAGS"
+ 
  # Is the compiler the GNU C compiler?
  with_gcc=$with_gcc
  
Only in gcc-4.0.0: ltconfig~
diff -rc gcc-4.0.0-orig/Makefile.in gcc-4.0.0/Makefile.in
*** gcc-4.0.0-orig/Makefile.in	2005-04-21 09:04:10.000000000 +0200
--- gcc-4.0.0/Makefile.in	2005-04-22 09:53:28.000000000 +0200
***************
*** 336,342 ****
  NM = @NM@
  
  LD = @LD@
! LDFLAGS = 
  
  RANLIB = @RANLIB@
  
--- 336,342 ----
  NM = @NM@
  
  LD = @LD@
! LDFLAGS = $(NIX_EXTRA_LDFLAGS)
  
  RANLIB = @RANLIB@
  
***************
*** 387,393 ****
  # CFLAGS will be just -g.  We want to ensure that TARGET libraries
  # (which we know are built with gcc) are built with optimizations so
  # prepend -O2 when setting CFLAGS_FOR_TARGET.
! CFLAGS_FOR_TARGET = -O2 $(CFLAGS)
  # If GCC_FOR_TARGET is not overriden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
--- 387,393 ----
  # CFLAGS will be just -g.  We want to ensure that TARGET libraries
  # (which we know are built with gcc) are built with optimizations so
  # prepend -O2 when setting CFLAGS_FOR_TARGET.
! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(NIX_EXTRA_CFLAGS)
  # If GCC_FOR_TARGET is not overriden on the command line, then this
  # variable is passed down to the gcc Makefile, where it is used to
  # build libgcc2.a.  We define it here so that it can itself be
***************
*** 400,406 ****
  RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@
  CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
  RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
! CXXFLAGS_FOR_TARGET = $(CXXFLAGS)
  LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
  
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
--- 400,406 ----
  RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@
  CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
  RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
! CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(NIX_EXTRA_CFLAGS)
  LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
  
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
***************
*** 434,440 ****
      fi; \
    fi`
  
! LDFLAGS_FOR_TARGET = 
  
  NM_FOR_TARGET=@NM_FOR_TARGET@
  CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_FOR_TARGET@
--- 434,440 ----
      fi; \
    fi`
  
! LDFLAGS_FOR_TARGET = $(NIX_EXTRA_LDFLAGS)
  
  NM_FOR_TARGET=@NM_FOR_TARGET@
  CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_FOR_TARGET@
Only in gcc-4.0.0: Makefile.in.orig
