Index: gcc/doc/objc.texi
===================================================================
--- gcc/doc/objc.texi   (revision 165577)
+++ gcc/doc/objc.texi   (working copy)
@@ -107,24 +107,27 @@ instead of @code{+initialize}.
 @node What you can and what you cannot do in +load
 @subsection What you can and what you cannot do in @code{+load}
 
-The @code{+load} implementation in the GNU runtime guarantees you the following
-things:
+@code{+load} is to be used only as a last resort.  Because it is
+executed very early, most of the Objective-C runtime machinery will
+not be ready when @code{+load} is executed; hence @code{+load} works
+best for executing C code that is independent on the Objective-C
+runtime.
 
+The @code{+load} implementation in the GNU runtime guarantees you the
+following things:
+
 @itemize @bullet
 
 @item
 you can write whatever C code you like;
 
 @item
-you can send messages to Objective-C constant strings (@code{@@"this is a
-constant string"});
-
-@item
 you can allocate and send messages to objects whose class is implemented
 in the same file;
 
 @item
-the @code{+load} implementation of all super classes of a class are executed before the @code{+load} of that class is executed;
+the @code{+load} implementation of all super classes of a class are
+executed before the @code{+load} of that class is executed;
 
 @item
 the @code{+load} implementation of a class is executed before the
@@ -144,6 +147,10 @@ allocation of or sending messages to arbitrary obj
 allocation of or sending messages to objects whose classes have a
 category implemented in the same file;
 
+@item
+sending messages to Objective-C constant strings (@code{@@"this is a
+constant string"});
+
 @end itemize
 
 You should make no assumptions about receiving @code{+load} in sibling
Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog       (revision 165577)
+++ gcc/ChangeLog       (working copy)
@@ -1,3 +1,9 @@
+2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * doc/objc.texi (What you can and what you cannot do in +load):
+       Document that sending messages to constant string objects in +load
+       is not guaranteed to work.
+
 2010-10-16  Jan Hubicka  <jh@suse.cz>
 
        PR middle-end/44206
Index: libobjc/init.c
===================================================================
--- libobjc/init.c      (revision 165577)
+++ libobjc/init.c      (working copy)
@@ -444,8 +444,7 @@ class_is_subclass_of_class (Class class, Class sup
    their superclasses are not yet known to the runtime.  */
 static struct objc_list *unresolved_classes = 0;
 
-/* Extern function used to reference the Object and NXConstantString
-   classes.  */
+/* Extern function used to reference the Object class.  */
 
 extern void __objc_force_linking (void);
 
@@ -755,11 +754,9 @@ objc_send_load (void)
        return;
     }
 
-  /* Special check to allow creating and sending messages to constant
-     strings in +load methods. If these classes are not yet known,
-     even if all the other classes are known, delay sending of +load.  */
-  if (! objc_lookup_class ("NXConstantString") ||
-      ! objc_lookup_class ("Object"))
+  /* Special check.  If 'Object', which is used by meta-classes, has
+     not been loaded yet, delay sending of +load.  */
+  if (! objc_lookup_class ("Object"))
     return;
 
   /* Iterate over all modules in the __objc_module_list and call on
Index: libobjc/linking.m
===================================================================
--- libobjc/linking.m   (revision 165577)
+++ libobjc/linking.m   (working copy)
@@ -27,12 +27,11 @@ see the files COPYING3 and COPYING.RUNTIME respect
 #include <objc/Object.h>
 #include <objc/NXConstStr.h>
 
-/* Generate references to Object and NXConstanstString classes since they are
-   needed by the runtime system to run correctly.  */
+/* Generate references to Object class since it is needed by the
+   runtime system to run correctly.  */
 
 void __objc_linking (void)
 {
   [Object name];
-  [NXConstantString name];
 }
 
Index: libobjc/ChangeLog
===================================================================
--- libobjc/ChangeLog   (revision 165577)
+++ libobjc/ChangeLog   (working copy)
@@ -1,3 +1,12 @@
+2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * init.c (objc_send_load): Do not wait for NXConstantString to be
+       registered before executing +load.  There is no point if
+       -fconstant-string-class=xxx is used when compiling all modules,
+       as is the case for almost all users.
+       * linking.m (__objc_linking): Do not try to forcefully link in
+       NXConstantString.
+       
 2010-10-16  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * objc/runtime.h: Updated comments.
