diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1cfb5b2dfe6b3ee57d6189126d8468c42997b7b0..19080bcb038ba4b63fa6887fbbd9089c23b4015d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2010-11-29  Iain Sandoe  <iains@gcc.gnu.org>
+
+	* gcc/testsuite/objc.dg/strings-1.m: Move to...
+	* gcc/testsuite/objc.dg/strings/strings-1.m: ... here. Update paths.
+	* gcc/testsuite/objc.dg/strings-2.m: Move to ...
+	* gcc/testsuite/objc.dg/strings/strings-2.m ... here, provide a 
+	constructor and class reference for NeXT runtime.  Update paths.
+	* gcc/testsuite/obj-c++.dg/strings-1.m: Move to...
+	* gcc/testsuite/obj-c++.dg/strings/strings-1.m: ... here. Update paths.
+	* gcc/testsuite/obj-c++.dg/strings-2.m: Move to ...
+	* gcc/testsuite/obj-c__.dg/strings/strings-2.m ... here, provide a 
+	constructor and class reference for NeXT runtime.  Update paths.
+	
 2010-11-29  Dodji Seketeli  <dodji@redhat.com>
 
 	PR c++/42260
diff --git a/gcc/testsuite/obj-c++.dg/strings-1.mm b/gcc/testsuite/obj-c++.dg/strings/strings-1.mm
similarity index 94%
rename from gcc/testsuite/obj-c++.dg/strings-1.mm
rename to gcc/testsuite/obj-c++.dg/strings/strings-1.mm
index 2630220618c282607fb4a39eb9be4e44350709d6..fc3f211857aa223ea2cc3043e676ed7dae66ef57 100644
--- a/gcc/testsuite/obj-c++.dg/strings-1.mm
+++ b/gcc/testsuite/obj-c++.dg/strings/strings-1.mm
@@ -1,8 +1,8 @@
 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/next-mapping.h"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #endif
diff --git a/gcc/testsuite/obj-c++.dg/strings-2.mm b/gcc/testsuite/obj-c++.dg/strings/strings-2.mm
similarity index 63%
rename from gcc/testsuite/obj-c++.dg/strings-2.mm
rename to gcc/testsuite/obj-c++.dg/strings/strings-2.mm
index 9b7023a974596113dfc3f2b5a828cca99ea42a2a..09d7a7f1f3205d6cba490652a15d972b7aca6c2d 100644
--- a/gcc/testsuite/obj-c++.dg/strings-2.mm
+++ b/gcc/testsuite/obj-c++.dg/strings/strings-2.mm
@@ -5,10 +5,10 @@
 /* { dg-options "-fconstant-string-class=MyTestString" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyTestString" { target *-*-darwin* } } */
 
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.mm" } */
+/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.mm" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/next-mapping.h"
 
 #include <stdlib.h> /* For abort() */
 
@@ -31,6 +31,14 @@
 }
 @end
 
+#ifdef __NEXT_RUNTIME__
+#  ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class _MyTestStringClassReference;
+#  else
+struct objc_class _MyTestStringClassReference;
+#  endif
+#endif
+
 int main (void)
 {
   MyTestString *test_valid1 = @"test";
@@ -49,3 +57,15 @@ int main (void)
 
   return 0;
 }
+
+#ifdef __NEXT_RUNTIME__
+/* The MyTestString metaclass will need to be initialized before we can
+   send messages to strings.  */
+
+void testsuite_mytest_string_init (void) __attribute__((constructor));
+void testsuite_mytest_string_init (void) {
+  memcpy (&_MyTestStringClassReference,
+	  objc_getClass ("MyTestString"),
+	  sizeof (_MyTestStringClassReference));
+}
+#endif
\ No newline at end of file
diff --git a/gcc/testsuite/objc.dg/strings-1.m b/gcc/testsuite/objc.dg/strings/strings-1.m
similarity index 94%
rename from gcc/testsuite/objc.dg/strings-1.m
rename to gcc/testsuite/objc.dg/strings/strings-1.m
index 2630220618c282607fb4a39eb9be4e44350709d6..fc3f211857aa223ea2cc3043e676ed7dae66ef57 100644
--- a/gcc/testsuite/objc.dg/strings-1.m
+++ b/gcc/testsuite/objc.dg/strings/strings-1.m
@@ -1,8 +1,8 @@
 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/next-mapping.h"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #endif
diff --git a/gcc/testsuite/objc.dg/strings-2.m b/gcc/testsuite/objc.dg/strings/strings-2.m
similarity index 63%
rename from gcc/testsuite/objc.dg/strings-2.m
rename to gcc/testsuite/objc.dg/strings/strings-2.m
index d69967a6871d726bcefa4cc56c80aaf918016765..29d9375bf7b1f9d98bd33bb1d8e46c854784aebc 100644
--- a/gcc/testsuite/objc.dg/strings-2.m
+++ b/gcc/testsuite/objc.dg/strings/strings-2.m
@@ -5,10 +5,10 @@
 /* { dg-options "-fconstant-string-class=MyTestString" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=MyTestString" { target *-*-darwin* } } */
 
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
+/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.m" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/next-mapping.h"
 
 #include <stdlib.h> /* For abort() */
 
@@ -31,6 +31,14 @@
 }
 @end
 
+#ifdef __NEXT_RUNTIME__
+#  ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class _MyTestStringClassReference;
+#  else
+struct objc_class _MyTestStringClassReference;
+#  endif
+#endif
+
 int main (void)
 {
   MyTestString *test_valid1 = @"test";
@@ -49,3 +57,15 @@ int main (void)
 
   return 0;
 }
+
+#ifdef __NEXT_RUNTIME__
+/* The MyTestString metaclass will need to be initialized before we can
+   send messages to strings.  */
+
+void testsuite_mytest_string_init (void) __attribute__((constructor));
+void testsuite_mytest_string_init (void) {
+  memcpy (&_MyTestStringClassReference,
+	  objc_getClass ("MyTestString"),
+	  sizeof (_MyTestStringClassReference));
+}
+#endif
\ No newline at end of file