diff -dupr ../../pristine.20030801/gcc/libjava/gnu/gcj/runtime/natSharedLibLoader.cc libjava/gnu/gcj/runtime/natSharedLibLoader.cc
--- ../../pristine.20030801/gcc/libjava/gnu/gcj/runtime/natSharedLibLoader.cc	2003-07-24 04:45:49.000000000 -0400
+++ libjava/gnu/gcj/runtime/natSharedLibLoader.cc	2001-10-24 03:00:19.000000000 -0400
@@ -1,6 +1,6 @@
 // natSharedLibLoader.cc - Implementation of FirstThread native methods.
 
-/* Copyright (C) 2001, 2003  Free Software Foundation
+/* Copyright (C) 2001  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -14,7 +14,6 @@ details.  */
 #include <gnu/gcj/runtime/SharedLibLoader.h>
 #include <java/io/IOException.h>
 #include <java/lang/UnsupportedOperationException.h>
-#include <java/lang/UnsatisfiedLinkError.h>
 
 #ifdef HAVE_DLOPEN
 #include <dlfcn.h>
@@ -46,14 +45,10 @@ struct SharedLibDummy
 #endif
 
 void
-gnu::gcj::runtime::SharedLibLoader::init(jstring libname, jint flags)
+gnu::gcj::runtime::SharedLibLoader::init(jbyteArray libname, jint flags)
 {
 #ifdef HAVE_DLOPEN
-  jint len = _Jv_GetStringUTFLength (libname);
-  char lname[len + 1];
-  JvGetStringUTFRegion (libname, 0, libname->length(), lname);
-  lname[len] = '\0';
-
+  char *lname = (char*) elements(libname);
   if (flags==0)
     flags = RTLD_LAZY;
   JvSynchronize dummy1(&java::lang::Class::class$);
@@ -64,14 +59,10 @@ gnu::gcj::runtime::SharedLibLoader::init
   if (h == NULL)
     {
       const char *msg = dlerror();
-      jstring str = JvNewStringLatin1 (lname);
-      str = str->concat (JvNewStringLatin1 (": "));
-      str = str->concat (JvNewStringLatin1 (msg));
-      throw new java::lang::UnsatisfiedLinkError (str);
     }
   handler = (gnu::gcj::RawData*) h;
 #else
-  const char *msg = "SharedLibLoader is not supported on this platform";
+  const char *msg = "ShareedLibLoader is not supported on this platform";
   throw new java::lang::UnsupportedOperationException(JvNewStringLatin1(msg));
 #endif
 }
diff -dupr ../../pristine.20030801/gcc/libjava/gnu/gcj/runtime/SharedLibLoader.java libjava/gnu/gcj/runtime/SharedLibLoader.java
--- ../../pristine.20030801/gcc/libjava/gnu/gcj/runtime/SharedLibLoader.java	2003-07-24 04:45:49.000000000 -0400
+++ libjava/gnu/gcj/runtime/SharedLibLoader.java	2001-09-29 15:16:26.000000000 -0400
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2003  Free Software Foundation
+/* Copyright (C) 2001  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -27,7 +27,7 @@ public class SharedLibLoader extends Cla
   /** Load a shared library, and associate a ClassLoader with it.
    * @param libname named of shared library (passed to dlopen)
    * @param parent the parent ClassLoader
-   * @param flags passed to dlopen
+   * @parem flags passed to dlopen
    */
   public SharedLibLoader(String libname, ClassLoader parent, int flags)
   {
@@ -45,7 +45,12 @@ public class SharedLibLoader extends Cla
     init(libname, 0);
   }
 
-  native void init(String libname, int flags);
+  void init(String libname, int flags)
+  {
+    init(libname.getBytes(), flags);
+  }
+
+  native void init(byte[] libname, int flags);
 
   public Class loadClass(String name)
     throws ClassNotFoundException
diff -dupr ../../pristine.20030801/gcc/libjava/java/net/DatagramSocketImpl.java libjava/java/net/DatagramSocketImpl.java
--- ../../pristine.20030801/gcc/libjava/java/net/DatagramSocketImpl.java	2003-07-23 04:44:21.000000000 -0400
+++ libjava/java/net/DatagramSocketImpl.java	2002-10-12 02:35:42.000000000 -0400
@@ -1,6 +1,5 @@
 /* DatagramSocketImpl.java -- Abstract class for UDP socket implementations
-   Copyright (C) 1998, 1999 2000, 2001, 
-                 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -103,8 +102,8 @@ public abstract class DatagramSocketImpl
    * Takes a peek at the next packet received in order to retrieve the
    * address of the sender
    *
-   * @param i The <code>InetAddress</code> to fill in with the information 
-   *          about the sender if the next packet
+   * @param i The InetAddress to fill in with the information about the
+   *          sender if the next packet
    *
    * @return The port number of the sender of the packet
    *
@@ -119,7 +118,7 @@ public abstract class DatagramSocketImpl
    * Takes a peek at the next packet received.  This packet is not consumed.
    * With the next peekData/receive operation this packet will be read again.
    * 
-   * @param p The <code>DatagramPacket</code> to fill in with the data sent.
+   * @param p The DatagramPacket to fill in with the data sent.
    *
    * @return The port number of the sender of the packet.
    * 
@@ -148,7 +147,7 @@ public abstract class DatagramSocketImpl
   /**
    * Receives a packet of data from the network  Will block until a packet
    * arrives.  The packet info in populated into the passed in
-   * <code>DatagramPacket</code> object.
+   * DatagramPacket object.
    *
    * @param p A place to store the incoming packet.
    *
@@ -162,7 +161,7 @@ public abstract class DatagramSocketImpl
   /**
    * Connects the socket to a host specified by address and port.
    *
-   * @param address The <code>InetAddress</code> of the host to connect to
+   * @param address The InetAddress of the host to connect to
    * @param port The port number of the host to connect to
    *
    * @exception SocketException If an error occurs
@@ -284,4 +283,36 @@ public abstract class DatagramSocketImpl
   {
     return localPort;
   }
+
+  /**
+   * Sets the specified option on a socket to the passed in object.  For
+   * options that take an integer argument, the passed in object is an
+   * <code>Integer</code>.  For options that are set to on or off, the
+   * value passed will be a <code>Boolean</code>.   The <code>option_id</code>
+   * parameter is one of the defined constants in the superinterface.
+   *
+   * @param option_id The identifier of the option
+   * @param val The value to set the option to
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract void setOption(int option_id, Object val)
+    throws SocketException;
+
+  /**
+   * Returns the current setting of the specified option.  The
+   * <code>Object</code> returned will be an <code>Integer</code> for options
+   * that have integer values.  For options that are set to on or off, a
+   * <code>Boolean</code> will be returned.   The <code>option_id</code>
+   * is one of the defined constants in the superinterface.
+   *
+   * @param option_id The option identifier
+   *
+   * @return The current value of the option
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract Object getOption(int option_id) throws SocketException;
 }
--- ../../pristine.20030801/gcc/libjava/java/net/SocketImpl.java	2003-07-23 04:44:21.000000000 -0400
+++ libjava/java/net/SocketImpl.java	2003-02-24 03:33:18.000000000 -0500
@@ -1,6 +1,5 @@
 /* SocketImpl.java -- Abstract socket implementation class
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
-   Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -36,13 +35,9 @@ this exception to your version of the li
 obligated to do so.  If you do not wish to do so, delete this
 exception statement from your version. */
 
-
 package java.net;
 
-import java.io.FileDescriptor;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 
 /* Written using on-line Java Platform 1.2 API Specification.
  * Believed complete and correct.
@@ -282,15 +277,44 @@ public abstract class SocketImpl impleme
   }
 
   /**
+   * Sets the specified option on a socket to the passed in object.  For
+   * options that take an integer argument, the passed in object is an
+   * <code>Integer</code>.  For options that are set to on or off, the
+   * value passed will be a <code>Boolean</code>.   The <code>option_id</code> 
+   * parameter is one of the defined constants in the superinterface.
+   *
+   * @param option_id The identifier of the option
+   * @param val The value to set the option to
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract void setOption(int option_id, Object val)
+    throws SocketException;
+
+  /**
+   * Returns the current setting of the specified option.  The 
+   * <code>Object</code> returned will be an <code>Integer</code> for options 
+   * that have integer values.  For options that are set to on or off, a 
+   * <code>Boolean</code> will be returned.   The <code>option_id</code>
+   * is one of the defined constants in the superinterface.
+   *
+   * @param option_id The option identifier
+   *
+   * @return The current value of the option
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract Object getOption(int option_id) throws SocketException;
+
+  /**
    * Shut down the input side of this socket.  Subsequent reads will
    * return end-of-file.
    *
    * @exception IOException if an error occurs
    */
-  protected void shutdownInput () throws IOException
-  {
-    throw new IOException ("Not implemented in this socket class");
-  }
+  protected abstract void shutdownInput () throws IOException;
 
   /**
    * Shut down the output side of this socket.  Subsequent writes will
@@ -298,8 +322,5 @@ public abstract class SocketImpl impleme
    *
    * @exception IOException if an error occurs
    */
-  protected void shutdownOutput () throws IOException
-  {
-    throw new IOException ("Not implemented in this socket class");
-  }
+  protected abstract void shutdownOutput () throws IOException;
 }
