# here at the top...  Easier to find things here anyways...
 #
 #############################################################
-#BINUTILS_SITE:=ftp://ftp.gnu.org/gnu/binutils
-#BINUTILS_SOURCE:=binutils-2.13.2.1.tar.bz2
-#BINUTILS_DIR:=$(TOOL_BUILD_DIR)/binutils-2.13.2.1
 BINUTILS_SITE:=http://ftp.kernel.org/pub/linux/devel/binutils
 BINUTILS_SOURCE:=binutils-2.14.90.0.5.tar.bz2
 BINUTILS_DIR:=$(TOOL_BUILD_DIR)/binutils-2.14.90.0.5
        # Apply any files named binutils-*.patch from the source directory to binutils
        $(SOURCE_DIR)/patch-kernel.sh $(BINUTILS_DIR) $(SOURCE_DIR) binutils-*.patch
        #
-       # Enable combreloc, since it is such a nice thing to have...
+       # Hack binutils to use the correct default shared lib loader
        #
-       -perl -i -p -e "s,link_info.combreloc = false,link_info.combreloc = true,g;" \
-               $(BINUTILS_DIR)/ld/ldmain.c
-       #
-       # Hack binutils to use the correct shared lib loader
-       #
-       (cd $(BINUTILS_DIR); perl -i -p -e "s,#.*define.*ELF_DYNAMIC_INTERPRETER.*\".*\"\
-               ,#define ELF_DYNAMIC_INTERPRETER \"/lib/ld-uClibc.so.0\",;" \
-               `grep -lr "ELF_DYNAMIC_INTERPRETER" $(BINUTILS_DIR)`);
-       #
-       # Hack binutils to prevent it from searching the host system
-       # for libraries.  We only want libraries for the target system.
-       #
-       (cd $(BINUTILS_DIR); perl -i -p -e "s,^NATIVE_LIB_DIRS.*,\
-               NATIVE_LIB_DIRS='$(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib',;" \
-               $(BINUTILS_DIR)/ld/configure.host);
+       (cd $(BINUTILS_DIR); perl -i -p -e "s,#.*define.*ELF_DYNAMIC_INTERPRETER.*\".*\",\
+               #define ELF_DYNAMIC_INTERPRETER \"/lib/ld-uClibc.so.0\",;" \
+               `grep -lr ELF_DYNAMIC_INTERPRETER *`);
        touch $(BINUTILS_DIR)/.patched
 
 $(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched
                --mandir=$(STAGING_DIR)/man \
                --infodir=$(STAGING_DIR)/info \
                --enable-targets=$(GNU_TARGET_NAME) \
+               --with-lib-path="/usr/lib:/lib" \
+               --with-sysroot=$(STAGING_DIR) \
                $(MULTILIB) \
                --program-prefix=$(ARCH)-uclibc-);
        touch $(BINUTILS_DIR1)/.configured
 
--- /dev/null
+--- binutils-2.11.90.0.19.orig/ld/Makefile.am
++++ binutils-2.11.90.0.19/ld/Makefile.am
+@@ -19,7 +19,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ 
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
+--- binutils-2.11.90.0.19.orig/ld/Makefile.in
++++ binutils-2.11.90.0.19/ld/Makefile.in
+@@ -123,7 +123,7 @@
+ # We put the scripts in the directory $(scriptdir)/ldscripts.
+ # We can't put the scripts in $(datadir) because the SEARCH_DIR
+ # directives need to be different for native and cross linkers.
+-scriptdir = $(tooldir)/lib
++scriptdir = $(libdir)
+ 
+ EMUL = @EMUL@
+ EMULATION_OFILES = @EMULATION_OFILES@
 
--- /dev/null
+diff -urN binutils-2.11.92.0.5/bfd/opncls.c binutils-2.11.92.0.5.new/bfd/opncls.c
+--- binutils-2.11.92.0.5/bfd/opncls.c  Mon Oct  1 18:25:21 2001
++++ binutils-2.11.92.0.5.new/bfd/opncls.c      Sat Oct 13 11:26:59 2001
+@@ -127,6 +127,13 @@
+ {
+   bfd *nbfd;
+   const bfd_target *target_vec;
++  struct stat s;
++
++  if (stat (filename, &s) == 0)
++    if (S_ISDIR(s.st_mode)) {
++      bfd_set_error (bfd_error_file_not_recognized);
++      return NULL;
++    }
+ 
+   nbfd = _bfd_new_bfd ();
+   if (nbfd == NULL)
 
--- /dev/null
+diff -urN binutils-2.11.92.0.12.3/opcodes/i386-dis.c binutils-2.11.92.0.12.3.new/opcodes/i386-dis.c
+--- binutils-2.11.92.0.12.3/opcodes/i386-dis.c Fri Nov 16 17:05:55 2001
++++ binutils-2.11.92.0.12.3.new/opcodes/i386-dis.c     Mon Dec 31 15:55:04 2001
+@@ -1830,7 +1830,7 @@
+  * The function returns the length of this instruction in bytes.
+  */
+ 
+-static char intel_syntax;
++static signed char intel_syntax;
+ static char open_char;
+ static char close_char;
+ static char separator_char;
 
--- /dev/null
+diff -urN binutils-2.12.90.0.12/ld/emultempl/elf32.em binutils-2.12.90.0.12.new/ld/emultempl/elf32.em
+--- binutils-2.12.90.0.12/ld/emultempl/elf32.em        Wed Jun 19 00:41:59 2002
++++ binutils-2.12.90.0.12.new/ld/emultempl/elf32.em    Wed Jun 26 10:00:26 2002
+@@ -672,6 +672,8 @@
+             && command_line.rpath == NULL)
+           {
+             lib_path = (const char *) getenv ("LD_RUN_PATH");
++            if ((lib_path) && (strlen (lib_path) == 0))
++                lib_path = NULL;
+             if (gld${EMULATION_NAME}_search_needed (lib_path, l->name,
+                                                     force))
+               break;
+@@ -867,6 +869,8 @@
+   rpath = command_line.rpath;
+   if (rpath == NULL)
+     rpath = (const char *) getenv ("LD_RUN_PATH");
++  if ((rpath) && (strlen (rpath) == 0))
++      rpath = NULL;
+   if (! (bfd_elf${ELFSIZE}_size_dynamic_sections
+          (output_bfd, command_line.soname, rpath,
+         command_line.filter_shlib,
 
--- /dev/null
+http://sources.redhat.com/ml/binutils/2003-05/msg00739.html
+
+2003-05-23  H.J. Lu <hongjiu.lu@intel.com>
+
+       * ltmain.sh: Make symlink for shared library if needed.
+
+opcodes/
+
+2003-05-23  H.J. Lu <hongjiu.lu@intel.com>
+
+       * Makefile.am (libopcodes_la_LIBADD): Use "-L../bfd -lbfd"
+       instead of "../bfd/libbfd.la".
+       * Makefile.in: Regenerated.
+
+--- binutils/ltmain.sh.dso     2002-03-22 00:16:20.000000000 -0800
++++ binutils/ltmain.sh 2003-05-23 22:51:20.000000000 -0700
+@@ -4413,6 +4413,10 @@ relink_command=\"$relink_command\""
+       # LD_LIBRARY_PATH before the program is installed.
+       $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+       $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
++      if test -n "$linkname"; then
++        $show "(cd $output_objdir && $rm ../$linkname && $LN_S $output_objdir/$linkname ../$linkname)"
++        $run eval '(cd $output_objdir && $rm ../$linkname && $LN_S $output_objdir/$linkname ../$linkname)' || exit $?
++      fi
+       ;;
+     esac
+     exit 0
+--- binutils/opcodes/Makefile.am.dso   2003-05-19 08:23:00.000000000 -0700
++++ binutils/opcodes/Makefile.am       2003-05-23 22:46:29.000000000 -0700
+@@ -283,7 +283,7 @@ disassemble.lo: disassemble.c $(INCDIR)/
+ 
+ libopcodes_la_SOURCES =  dis-buf.c disassemble.c
+ libopcodes_la_DEPENDENCIES = $(OFILES) ../bfd/libbfd.la
+-libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ ../bfd/libbfd.la
++libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ -L../bfd -lbfd
+ libopcodes_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@
+ 
+ # libtool will build .libs/libopcodes.a.  We create libopcodes.a in
+--- binutils/opcodes/Makefile.in.dso   2003-05-20 08:37:53.000000000 -0700
++++ binutils/opcodes/Makefile.in       2003-05-23 22:46:31.000000000 -0700
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
++# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+ 
+ # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -393,7 +393,7 @@ INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir)
+ 
+ libopcodes_la_SOURCES = dis-buf.c disassemble.c
+ libopcodes_la_DEPENDENCIES = $(OFILES) ../bfd/libbfd.la
+-libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ ../bfd/libbfd.la
++libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ -L../bfd -lbfd
+ libopcodes_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@
+ 
+ # libtool will build .libs/libopcodes.a.  We create libopcodes.a in
+@@ -592,7 +592,7 @@ libopcodes.la: $(libopcodes_la_OBJECTS) 
+ all-recursive install-data-recursive install-exec-recursive \
+ installdirs-recursive install-recursive uninstall-recursive install-info-recursive \
+ check-recursive installcheck-recursive info-recursive dvi-recursive:
+-      @set fnord $(MAKEFLAGS); amf=$$2; \
++      @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+@@ -612,7 +612,7 @@ check-recursive installcheck-recursive i
+ 
+ mostlyclean-recursive clean-recursive distclean-recursive \
+ maintainer-clean-recursive:
+-      @set fnord $(MAKEFLAGS); amf=$$2; \
++      @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
+         rev="$$subdir $$rev"; \