diff -uNr binutils-2.14-orig/ld/genscripts.sh binutils-2.14/ld/genscripts.sh
--- binutils-2.14-orig/ld/genscripts.sh	2003-02-08 01:21:03.000000000 +1100
+++ binutils-2.14/ld/genscripts.sh	2004-05-19 12:40:51.000000000 +1000
@@ -50,8 +50,13 @@
     if [ "x${host}" = "x${target}" ] ; then
       NATIVE=yes
       USE_LIBPATH=yes
+      skip_libdir=no
     elif [ "x${use_sysroot}" = "xyes" ] ; then
       USE_LIBPATH=yes
+      skip_libdir=no
+    elif [ "x${LIB_PATH}" != "x" ] ; then
+      USE_LIBPATH=yes
+      skip_libdir=yes
     fi
     ;;
 esac
@@ -72,13 +77,29 @@
 #
 # If the emulparams file set LIBPATH_SUFFIX, prepend an extra copy of
 # the library path with the suffix applied.
+if [ "x${USE_LIBPATH}" = xyes ] ; then
+  LIB_PATH2=
+  if [ "x${LIB_PATH}" = "x" ] ; then
+    libs="${NATIVE_LIB_DIRS}"
+  else
+    libs=`echo ${LIB_PATH} | sed 's/:/ /g'`
+    LIB_PATH=
+  fi
 
-if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
-  if [ x"$use_sysroot" != xyes ] ; then
-    LIB_PATH=${libdir}
+  if [ "x${use_sysroot}" != "xyes" ] ; then
+    if [ "x${skip_libdir}" != "xyes" ] ; then
+      case " ${libs} " in
+        *" ${libdir} "*) ;;
+        *) libs="${libdir} ${libs}" ;;
+      esac
+    fi
+    case " ${libs} " in
+      *" ${tool_lib} "*) ;;
+      *) libs="${tool_lib} ${libs}" ;;
+    esac
   fi
-  LIB_PATH2=""
-  for lib in ${NATIVE_LIB_DIRS}; do
+
+  for lib in ${libs}; do
     # The "=" is harmless if we aren't using a sysroot, but also needless.
     if [ "x${use_sysroot}" = "xyes" ] ; then
       lib="=${lib}"
@@ -91,34 +112,51 @@
     esac
     if test -n "$addsuffix"; then
       case :${LIB_PATH}: in
-	*:${lib}${LIBPATH_SUFFIX}:*) ;;
-	::) LIB_PATH=${lib}${LIBPATH_SUFFIX} ;;
-	*) LIB_PATH=${LIB_PATH}:${lib}${LIBPATH_SUFFIX} ;;
+        *:${lib}${LIBPATH_SUFFIX}:*) ;;
+        ::) LIB_PATH=${lib}${LIBPATH_SUFFIX} ;;
+        *) LIB_PATH=${LIB_PATH}:${lib}${LIBPATH_SUFFIX} ;;
       esac
-      case :${LIB_PATH}${LIB_PATH2}: in
-	*:${lib}:*) ;;
+      case :${LIB_PATH}:${LIB_PATH2}: in
+        *:${lib}:*) ;;
+        *::) LIB_PATH2=${lib} ;;
         *) LIB_PATH2=${LIB_PATH2}:${lib} ;;
       esac
     else
-      case :${LIB_PATH}: in
+      case :${LIB_PATH2}: in
         *:${lib}:*) ;;
-        ::) LIB_PATH=${lib} ;;
-        *) LIB_PATH=${LIB_PATH}:${lib} ;;
+        ::) LIB_PATH2=${lib} ;;
+        *) LIB_PATH2=${LIB_PATH2}:${lib} ;;
       esac
     fi
   done
-  LIB_PATH=${LIB_PATH}${LIB_PATH2}
-fi
 
+  case :${LIB_PATH}:${LIB_PATH2}: in
+    *:: | ::*) LIB_PATH=${LIB_PATH}${LIB_PATH2} ;;
+    *) LIB_PATH=${LIB_PATH}:${LIB_PATH2} ;;
+  esac
+fi
 
 # Always search $(tooldir)/lib, aka /usr/local/TARGET/lib, except for
 # sysrooted configurations.
 if [ "x${use_sysroot}" != "xyes" ] ; then
-  LIB_PATH=${tool_lib}:${LIB_PATH}
+  case :${LIB_PATH}: in
+  ::: | *:${tool_lib}:*) ;;
+  ::) LIB_PATH=${tool_lib} ;;
+  *) LIB_PATH=${tool_lib}:${LIB_PATH} ;;
+  esac
 fi
 
 LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'`
 
+# We need it for testsuite.
+case " $EMULATION_LIBPATH " in
+  *" ${EMULATION_NAME} "*)
+    test -d tmpdir || mkdir tmpdir
+    test -f tmpdir/libpath.exp || \
+    echo "set libpath \"${LIB_PATH}\"" | sed -e 's/:/ /g' > tmpdir/libpath.exp
+    ;;
+esac
+
 # Generate 5 or 6 script files from a master script template in
 # ${srcdir}/scripttempl/${SCRIPT_NAME}.sh.  Which one of the 5 or 6
 # script files is actually used depends on command line options given
