Index: ChangeLog
===================================================================
--- ChangeLog	(revision 174696)
+++ ChangeLog	(working copy)
@@ -1,3 +1,399 @@
+2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+	Updated all testcases in the ObjC/ObjC++ testsuites to use the
+	Modern Objective-C runtime API.
+	* objc/execute/next_mapping.h: Removed.
+	* objc-obj-c++-shared/next-mapping.h: Removed.
+	* objc-obj-c++-shared/Object1.h: Removed.
+	* objc-obj-c++-shared/Object1.m: Removed.
+	* objc-obj-c++-shared/Object1.mm: Removed.
+	* objc-obj-c++-shared/Object1-implementation.h: Removed.
+	* objc-obj-c++-shared/Protocol1.h: Removed.
+	* objc-obj-c++-shared/objc-test-suite-types.h: Removed definition
+	of ProtoBool, IVAR_T and METHOD.
+	* objc-obj-c++-shared/runtime.h: New.
+	* objc-obj-c++-shared/TestsuiteObject.h: New.
+	* objc-obj-c++-shared/TestsuiteObject.m: New.
+	
+	* objc/compile/trivial.m: Use TestsuiteObject instead of Object.	
+	* objc/execute/IMP.m: Include ../../objc-obj-c++-shared/runtime.h.
+	Use the Modern Objective-C runtime API. ([TestClass -next:]): Made
+	it a class method.
+	* objc/execute/_cmd.m: Include
+	../../objc-obj-c++-shared/runtime.h.  Use the Modern Objective-C
+	runtime API.  ([TestClass +initialize]): Include this method also
+	with the GNU runtime.
+	* objc/execute/accessing_ivars.m: Use TestsuiteObject instead of
+	Object.  ([-setValue:]): Return void.
+	* objc/execute/bf-common.h: Do not include objc/objc-encoding.h
+	with the GNU runtime.  Include
+	../../objc-obj-c++-shared/runtime.h.  Do not define objc_get_class
+	for the NeXT runtime.  Use the existing print_ivars() and
+	compare_structures() implementations for the old NeXT runtime.
+	Added new implementations for the Modern GNU and NeXT runtimes.
+	Enable the testcase (and hence all the bf-* ones) for __OBJC2__ as
+	well.  (main): Use objc_getClass().  Use return instead of exit.
+	* objc/execute/bycopy-1.m: Include objc/objc.h instead of
+	../../objc-obj-c++-shared/Protocol1.h.  (main): Use return instead
+	of exit().
+	* objc/execute/bycopy-2.m: Include objc/objc.h instead of
+	../../objc-obj-c++-shared/Protocol1.h.  Use TestsuiteObject
+	instead of Object.  (main): Use return instead of exit().
+	* objc/execute/bycopy-3.m: Updated includes.  Use TestsuiteObject
+	instead of Object.  Removed prototype for exit().  (main): Use
+	return instead of exit().  Use the Modern Objective-C runtime API.
+	* objc/execute/cascading-1.m: Use TestsuiteObject instead of
+	Object.
+	* objc/execute/class-tests-1.h: Include
+	../../objc-obj-c++-shared/runtime.h.  Use the Modern Objective-C
+	runtime API.  (test_class_with_superclass): Do not call [Object
+	class].  There is no need to with the current libobjc.
+	* objc/execute/class-tests-2.h: Include
+	../../objc-obj-c++-shared/runtime.h.  Use the Modern Objective-C
+	runtime API.
+	* objc/execute/class-1.m: Do not include <objc/objc-api.h> and
+	../../objc-obj-c++-shared/next-mapping.h.
+	* objc/execute/class-2.m: Likewise.
+	* objc/execute/class-3.m: Likewise.
+	* objc/execute/class-4.m: Do not include <objc/objc-api.h> and
+	../../objc-obj-c++-shared/next-mapping.h.  ([RootClass
+	+initialize]): Include this method also with the GNU
+	runtime. (main): Use the Modern Objective-C runtime API.
+	* objc/execute/class-5.m: Likewise.
+	* objc/execute/class-6.m: Likewise.
+	* objc/execute/class-7.m: Likewise.
+	* objc/execute/class-8.m: Likewise.
+	* objc/execute/class-9.m: Likewise.
+	* objc/execute/class-10.m: Likewise.
+	* objc/execute/class-11.m: Likewise.
+	* objc/execute/class-12.m: Likewise.
+	* objc/execute/class-13.m: Likewise.
+	* objc/execute/class-14.m: Likewise.
+	* objc/execute/class_self-1.m ([TestClass +initialize]): Include
+	this method also with the GNU runtime.
+	* objc/execute/class_self-2.m: ([TestClass +initialize], [ClassA
+	+initialize]): Include this method also with the GNU runtime.
+	* objc/execute/compatibility_alias.m: Use TestsuiteObject instead
+	of Object.
+	* objc/execute/encode-1.m: Likewise.
+	* objc/execute/enumeration-1.m: Likewise.
+	* objc/execute/enumeration-2.m: Likewise.
+	* objc/execute/exceptions/catchall-1.m: Likewise.
+	* objc/execute/exceptions/finally-1.m: Likewise.
+	* objc/execute/exceptions/foward-1.m: Likewise.
+	* objc/execute/exceptions/local-variables-1.m: Likewise.	
+	* objc/execute/exceptions/throw-nil.m: Likewise.
+	* objc/execute/exceptions/trivial.m: Likewise.
+	* objc/execute/exceptions/handler-1.m: Use TestsuiteObject instead
+	of Object. Include objc/runtime.h instead of objc/objc-api.h.
+	* objc/execute/exceptions/matcher-1.m: Likewise.
+	* objc/execute/formal_protocol-1.m: Use TestsuiteObject instead of
+	Object.
+	* objc/execute/formal_protocol-2.m: Likewise.
+	* objc/execute/formal_protocol-3.m: Likewise.
+	* objc/execute/formal_protocol-4.m: Likewise.
+	* objc/execute/formal_protocol-5.m: Include
+	../../objc-obj-c++-shared/runtime.h. (main): Always use
+	protocol_getName().
+	* objc/execute/formal_protocol-6.m: Likewise.
+	* objc/execute/formal_protocol-7.m: Use TestsuiteObject instead of
+	Object.  Include <objc/Protocol.h> instead of
+	../../objc-obj-c++-shared/Protocol1.h.
+	* objc/execute/function-message-1.m: Use TestsuiteObject intead of
+	Object.
+	* objc/execute/informal_protocol.m: Likewise.
+	* objc/execute/load-3.m: Likewise.
+	* objc/execute/many_args_method.m ([TestClass +initialize]):
+	Include this method with the GNU runtime as well.
+	* objc/execute/nested-3.m ([Test +initialize]): Likewise.
+	* objc/execute/nested-func-1.m: Use TestsuiteObject
+	instead of Object.
+	* objc/execute/nil_method-1.m: Likewise.
+	* objc/execute/no_clash.m: Likewise.
+	* objc/execute/np-1.m: Do not include
+	../../objc-obj-c++-shared/Protocol1.h.
+	(main): Use return instead of exit().
+	* objc/execute/np-2.m: Do not include
+	../../objc-obj-c++-shared/Protocol1.h.
+	([MyObject +initialize]): Include this method also with the GNU
+	runtime.  (main): Use return instead of exit().
+	* objc/execute/object_is_class.m: Include
+	../../objc-obj-c++-shared/runtime.h.  Use TestsuiteObject instead
+	of Object.  (main): Use the Modern Objective-C runtime API.
+	* objc/execute/object_is_meta_class.m: Likewise.
+	* objc/execute/private.m: Use TestsuiteObject instead of Object.
+	* objc/execute/protocol-isEqual-1.m: Include objc/Protocol.h
+	instead of ../objc-obj-c++-shared/Protocol1.h.  Include
+	../../objc-obj-c++-shared/runtime.h.  (main): Use the Modern
+	Objective-C runtime API.
+	* objc/execute/protocol-isEqual-2.m: Likewise.
+	* objc/execute/protocol-isEqual-3.m: Likewise.
+	* objc/execute/protocol-isEqual-4.m: Likewise.
+	* objc/execute/redefining_self.m ([TestClass +initialize]):
+	Include this method with the GNU runtime as well.
+	* objc/execute/root_methods.m: Include
+	../../objc-obj-c++-shared/runtime.h.  ([RootClass +initialize]):
+	Include this method with the GNU runtime as well.
+	(main): Use the Modern Objective-C runtime API.
+	* objc/execute/selector-1.m: Include
+	../../objc-obj-c++-shared/runtime.h.  Use TestsuiteObject instead
+	of Object.  (main): Use the Modern Objective-C runtime API.
+	* objc/execute/static-1.m ([Test +initialize]): Include this
+	method with the GNU runtime as well.
+	* objc/execute/static-2.m: Likewise.
+	* objc/execute/trivial.m: Use TestsuiteObject instead of Object.
+	* objc/execute/va_method.m: Do not include objc/objc-api.h.
+	([MathClass +initialize]): Include this method with the GNU
+	runtime as well.
+	* objc.dg/attributes/categ-attribute-1.m: Use TestsuiteObject
+	instead of Object.
+	* obj-c++.dg/attributes/categ-attribute-1.mm: Likewise.	
+	* objc.dg/attributes/categ-attributes-2.m: Likewise.
+	* obj-c++.dg/attributes/categ-attributes-2.mm: Likewise.
+	* objc.dg/attributes/method-attribute-1.m: Likewise.
+	* obj-c++.dg/attributes/method-attribute-1.mm: Likewise.	
+	* objc.dg/attributes/method-attribute-2.m: Likewise.
+	* obj-c++.dg/attributes/method-attribute-2.mm: Likewise.	
+	* objc.dg/attributes/method-attribute-3.m: Likewise.
+	* obj-c++.dg/attributes/method-attribute-3.mm: Likewise.	
+	* obj-c++.dg/basic.mm: Use TestsuiteObject instead of Object.
+	* objc.dg/bitfield-1.m: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/bitfield-1.mm: Likewise.
+	* obj-c++.dg/bitfield-2.mm: Likewise
+	* objc.dg/bitfield-3.m: Likewise.
+	* obj-c++.dg/bitfield-4.mm: Likewise.
+	* objc.dg/bitfield-5.m: Likewise
+	* objc.dg/call-super-1.m: Likewise.
+	* objc.dg/call-super-2.m: Use TestsuiteObject instead of Object.
+	Use objc_getClass() instead of objc_get_class(), but for the GNU
+	runtime redefine objc_getClass as objc_get_class.  Include
+	../objc-obj-c++-shared/runtime.h.
+	* objc.dg/call-super-3.m: Use TestsuiteObject instead of Object.
+	* objc.dg/category-1.m: Use TestsuiteObject instead of Object.
+	Use the Modern Objective-C runtime API.	
+	* objc.dg/class-protocol-1.m: Include
+	../objc-obj-c++-shared/runtime.h instead of objc/objc-api.h.
+	* obj-c++.dg/class-protocol-1.mm: Likewise.	
+	* objc.dg/comp-types-8.m: Use TestsuiteObject instead of Object.
+	* objc.dg/comp-types-10.m: Likewise.
+	* objc.dg/comp-types-11.m: Likewise.
+	* objc.dg/comp-types-12.m: Likewise.
+	* obj-c++.dg/comp-types-9.mm: Likewise.
+	* obj-c++.dg/comp-types-11.mm: Likewise.
+	* obj-c++.dg/comp-types-12.mm: Likewise.
+	* obj-c++.dg/comp-types-13.mm: Likewise.
+	* obj-c++.dg/cxx-ivars-1.mm: Likewise.
+	* obj-c++.dg/cxx-ivars-2.mm: Likewise.
+	* obj-c++.dg/cxx-scope-1.mm: Likewise.
+	* obj-c++.dg/cxx-scope-2.mm: Likewise.
+	* objc.dg/defs.m: Use TestsuiteObject instead of Object.
+	* objc.dg/desig-init-1.m: Likewise.
+	* obj-c++.dg/defs.mm: Likewise.
+	* objc.dg/exceptions-2.m: Likewise.
+	* obj-c++.dg/except-1.mm: Likewise.
+	* obj-c++.dg/exceptions-2.mm: Likewise.
+	* objc.dg/encode-2.m: Use TestsuiteObject instead of Object.
+	Use the Modern Objective-C runtime API.
+	* objc.dg/encode-3.m: Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API.  Do not include
+	../objc-obj-c++-shared/objc-test-suite-types.h.  Define ProtoBool.
+	* objc.dg/encode-4.m: Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API except when using an older NeXT
+	runtime.
+	* objc.dg/encode-5.m: Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API.
+	* objc.dg/encode-7.m: Include objc/runtime.h instead of
+	objc/encoding.h.	
+	* objc.dg/encode-7-next.m: Use TestsuiteObject instead of Object.
+	* objc.dg/encode-7-next-64bit.m: Updated include.
+	* objc.dg/encode-8.m: Include objc/runtime.h instead of
+	objc/encoding.h.
+	* obj-c++.dg/encode-4.mm: Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API.
+	* obj-c++.dg/encode-5.mm: Use TestsuiteObject instead of Object.
+	Use the Modern Objective-C runtime API.  Include objc/Protocol.h
+	instead of ../objc-obj-c++-shared/Protocol1.h.
+	* obj-c++.dg/encode-6.mm: Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API except when using an older NeXT
+	runtime.
+	* obj-c++.dg/encode-7.mm:  Use TestsuiteObject instead of Object.  Use
+	the Modern Objective-C runtime API.	
+	* objc.dg/fix-and-continue-1.m: Use TestsuiteObject instead of
+	Object.
+	* obj-c++.dg/fix-and-continue-2.mm: Likewise.
+	* objc.dg/fix-and-continue-2.m: Likewise.
+	* objc.dg/foreach-1.m: Likewise.
+	* objc.dg/foreach-2.m: Likewise.
+	* objc.dg/foreach-3.m: Likewise.
+	* objc.dg/foreach-4.m: Likewise.
+	* objc.dg/foreach-5.m: Likewise.
+	* objc.dg/foreach-6.m: Likewise.
+	* objc.dg/foreach-7.m: Likewise.
+	* objc.dg/func-ptr-1.m:  Use TestsuiteObject instead of
+	Object.
+	* objc.dg/func-ptr-2.m: Likewise.
+	* objc.dg/fsf-package-0.m: Use TestsuiteObject instead of Object.
+	Do not include objc/objc-api.h.
+	* obj-c++.dg/fsf-package-0.mm: Likewise.
+	* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c (switchfiles):
+	Include objc/runtime.h instead of objc/encoding.h.	
+	* objc.dg/gnu-runtime-1.m: Updated to use TestsuiteObject instead
+	of Object.
+	* obj-c++.dg/gnu-runtime-1.mm: Likewise.
+	* objc.dg/gnu-runtime-3.m: Likewise.
+	* obj-c++.dg/gnu-runtime-3.mm: Likewise.
+	* objc.dg/headers.m: Include objc/runtime.h instead of
+	objc/encoding.h for the GNU runtime.  Include objc/objc-api.h only
+	for the NeXT runtime.
+	* objc.dg/isa-field-1.m: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/isa-field-1.mm: Likewise.
+	* obj-c++.dg/ivar-list-semi.mm: Likewise.
+	* objc.dg/layout-1.m: Likewise.
+	* objc.dg/layout-2.m: Likewise.
+	* objc.dg/local-decl-2.m: Likewise.
+	* objc.dg/lookup-1.m: Use TestsuiteObject instead of
+	Object.  ([Container +elementForView:]): Use
+	class_conformsToProtocol().
+	* obj-c++.dg/lookup-2.mm: Likewise.
+	* obj-c++.dg/layout-1.mm: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/local-decl-1.mm: Likewise.
+	* objc.dg/method-3.m: Likewise.
+	* objc.dg/method-4.m: Likewise.
+	* objc.dg/method-6.m: Include objc/Protocol.h instead of
+	../objc-obj-c++-shared/Protocol1.h.
+	* objc.dg/method-7.m: Use TestsuiteObject instead of Object.
+	* objc.dg/method-9.m: Likewise.
+	* objc.dg/method-10.m: Likewise.
+	* objc.dg/method-13.m ([Root +initialize]): Include this method
+	also for the GNU runtime.  (main): Use objc_getClass() also for
+	the GNU runtime.
+	* objc.dg/method-15.m: Use TestsuiteObject instead of Object.
+	* objc.dg/method-17.m: Likewise.
+	* objc.dg/method-19.m: Likewise.
+	* objc.dg/method-20b.m: Likewise.
+	* obj-c++.dg/method-2.mm: Likewise.
+	* obj-c++.dg/method-6.mm: Likewise.
+	* obj-c++.dg/method-10.mm: Likewise.
+	* obj-c++.dg/method-11.mm: Likewise.
+	* obj-c++.dg/method-12.mm: Include objc/Protocol.h instead of
+	../objc-obj-c++-shared/Protocol1.h.
+	* obj-c++.dg/method-13.mm: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/method-15.mm: Likewise.
+	* obj-c++.dg/method-17.mm: Likewise.
+	* obj-c++.dg/method-19.mm: Updated includes.  ([Root
+	+initialize]): Include this method also for the GNU
+	runtime.  (main): Use objc_getClass() also for the GNU runtime.
+	* obj-c++.dg/method-21.mm: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/method-22.mm: Likewise.
+	* obj-c++.dg/method-23.mm: Likewise.
+	* obj-c++.dg/no-extra-load.mm: Likewise.
+	* objc.dg/objc-fast-4.m: Likewise.
+	* objc.dg/objc-gc-4.m: Likewise.
+	* obj-c++.dg/objc-gc-3.mm: Likewise.
+	* objc.dg/pr18255.m: Include objc/runtime.h.  (main): Use
+	protocol_getMethodDescription() instead of [Protocol
+	-descriptionForInstanceMethod].
+	* objc.dg/pr23214.m ([Object(TS_CAT) -class]): Renamed to test.
+	Made it available with all runtimes.  (main): Call -test instead
+	of -class.
+	* objc.dg/pr45878.m ([Object -isEqual:]): Renamed to testIsEqual,
+	and put into a category.
+	* objc.dg/proto-lossage-2.m: Use TestsuiteObject instead of
+	Object.  Include objc/objc.h.
+	* obj-c++.dg/proto-lossage-2.mm: Likewise.
+	* objc.dg/proto-lossage-3.m: Updated includes.  (MyClass):
+	New. (main): Use protocol_getMethodDescription() instead
+	of [Protocol -descriptionForInstanceMethod] and [Protocol
+	-descriptionForClassMethod].
+	* obj-c++.dg/proto-lossage-3.mm: Likewise.
+	* objc.dg/proto-qual-1.m: Updated includes.  Use the Modern
+	Objective-C runtime API.
+	* obj-c++.dg/proto-qual-1.mm: Likewise.	
+	* objc.dg/property/property-1.m: Use TestsuiteObject instead of
+	Object.
+	* obj-c++.dg/property/property-1.mm: Likewise.
+	* obj-c++.dg/qual-types-1.mm: Likewise.
+	* objc.dg/selector-2.m: Include objc/objc.h instead of
+	../objc-obj-c++-shared/Object1.h.
+	* obj-c++.dg/selector-2.mm: Likewise.
+	* obj-c++.dg/selector-5.mm: Likewise.
+	* obj-c++.dg/selector-6.mm: Likewise.
+	* objc.dg/set-not-used-1.m: Use TestsuiteObject instead of
+	Object.  Do not include objc/objc-api.h.
+	* obj-c++.dg/set-not-used-1.mm: Likewise.
+	* objc.dg/sizeof-1.m: Use TestsuiteObject instead of Object.
+	* objc.dg/stret-1.m: Likewise.
+	* objc.dg/stret-2.m: Likewise.
+	* obj-c++.dg/super-class-2.mm: Likewise.
+	* objc.dg/super-class-3.m: Likewise.
+	* objc.dg/super-class-4.m: Likewise.
+	* objc.dg/sync-2.m: Likewise.
+	* obj-c++.dg/sync-2.mm: Likewise.
+	* objc.dg/sync-1.m: Include objc/objc.h instead of
+	../objc-obj-c++-shared/Object1.h.
+	* objc.dg/special/unclaimed-category-1.h (TestClass): Always use
+	'Class' as the type of 'isa'.
+	* objc.dg/special/unclaimed-category-1.m: Use the Modern
+	Objective-C runtime API.  ([TestClass +initialize]): Include this
+	method with the GNU runtime as well.
+	* objc.dg/strings/strings-1.m: Updated includes.
+	* obj-c++.dg/strings/strings-1.mm: Likewise.
+	* obj-c++.dg/strings/const-str-12.mm: Updated to be identical to
+	objc.dg/strings/const-str-12b.m.
+	* obj-c++.dg/template-1.mm: Use TestsuiteObject intead of Object.
+	* obj-c++.dg/template-3.mm: Likewise.
+	* obj-c++.dg/template-4.mm: Likewise.
+	* objc.dg/threedotthree-abi-1.m: Updated includes.
+	* obj-c++.dg/threedotthree-abi-1.mm: Likewise.
+	* objc.dg/try-catch-1.m: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/try-catch-1.mm: Likewise.
+	* obj-c++.dg/try-catch-2.mm: Likewise.
+	* objc.dg/try-catch-3.m: Likewise.
+	* obj-c++.dg/try-catch-3.mm: Likewise.
+	* objc.dg/try-catch-6.m: Likewise.
+	* objc.dg/try-catch-7.m: Likewise.
+	* obj-c++.dg/try-catch-7.mm: Likewise.
+	* obj-c++.dg/try-catch-8.mm: Likewise.
+	* obj-c++.dg/try-catch-9.mm: Likewise.
+	* objc.dg/try-catch-10.m: Likewise.
+	* obj-c++.dg/try-catch-11.mm: Likewise.
+	* objc.dg/typedef-alias-1.m: Use TestsuiteObject instead of
+	Object.  Include objc/objc.h.
+	* obj-c++.dg/typedef-alias-1.mm: Likewise.
+	* objc.dg/type-size-2.m: Use the Modern Objective-C runtime API.
+	* objc.dg/torture/forward-1.m: Use TestsuiteObject intead of
+	Object.  Use Modern Objective-C runtime API.  Do not use
+	performv::.
+	* objc.dg/torture/trivial.m: Use TestsuiteObject intead of Object.
+	* obj-c++.dg/torture/trivial.mm: Likewise.	
+	* objc.dg/torture/strings/const-str-10.m: Include objc/Object.h
+	instead of ../objc-obj-c++-shared/Object1.h.
+	* obj-c++.dg/torture/strings/const-str-10.mm: Likewise.
+	* objc.dg/torture/strings/const-str-11.m: Likewise.
+	* obj-c++.dg/torture/strings/const-str-11.mm: Likewise.
+	* objc.dg/torture/strings/const-str-9.m: Likewise.
+	* obj-c++.dg/torture/strings/const-str-9.mm: Likewise.
+	* objc.dg/torture/strings/const-str-7.m: Use TestsuiteObject
+	instead of Object. Only add _FooClassReference if
+	__NEXT_RUNTIME__.
+	* obj-c++.dg/torture/strings/const-str-7.mm: Likewise.
+	* objc.dg/torture/strings/const-str-8.m: Likewise.
+	* obj-c++.dg/torture/strings/const-str-8.mm: Likewise.
+	* obj-c++.dg/torture/strings/string1.mm: Updated includes and
+	additional sources.
+	* objc.dg/torture/tls/thr-init-3.m: Use TestsuiteObject instead of
+	Object.
+	* obj-c++.dg/torture/tls/thr-init-3.mm: Likewise.
+	* objc.dg/va-meth-1.m: Use TestsuiteObject instead of Object.
+	* obj-c++.dg/va-meth-1.mm: Likewise.
+	* objc.dg/zero-link-1.m: Include objc/Object.h instead of
+	../objc-obj-c++-shared/Object1.h.
+	* objc.dg/zero-link-3.m: Likewise.	
+	
+2011-06-06  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+	* obj-c++.dg/try-catch-2.mm: Fixed unterminated comment.
+	
 2011-06-06  Mikael Pettersson  <mikpe@it.uu.se>
 
 	PR tree-optimization/49243
Index: objc/execute/class-11.m
===================================================================
--- objc/execute/class-11.m	(revision 174696)
+++ objc/execute/class-11.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -16,9 +14,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -76,10 +72,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   test_that_class_has_instance_method ("SubSubClass", @selector (shift));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/enumeration-1.m
===================================================================
--- objc/execute/enumeration-1.m	(revision 174696)
+++ objc/execute/enumeration-1.m	(working copy)
@@ -1,7 +1,6 @@
 /* Contributed by Nicola Pero -  Wed Dec  5 17:12:40 GMT 2001 */
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
-#include <objc/objc.h>
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test using a bitfield enumeration ivar.  */
 
@@ -11,7 +10,7 @@ typedef enum
   white
 } color;
 
-@interface TestClass: Object
+@interface TestClass: TestsuiteObject
 {
   color c:2;
 }
@@ -48,4 +47,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/static-2.m
===================================================================
--- objc/execute/static-2.m	(revision 174696)
+++ objc/execute/static-2.m	(working copy)
@@ -22,9 +22,7 @@ static int test (void)
   return test ();
 }
 
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 int main (void)
Index: objc/execute/object_is_class.m
===================================================================
--- objc/execute/object_is_class.m	(revision 174696)
+++ objc/execute/object_is_class.m	(working copy)
@@ -1,16 +1,13 @@
 /* Contributed by Nicola Pero - Tue Jul  3 10:55:21 BST 2001 */
-#ifdef __NEXT_RUNTIME__
-#  include "../../objc-obj-c++-shared/next-mapping.h"
-#else
-#  include <objc/objc-api.h>
-#endif
-#include "../../objc-obj-c++-shared/Object1.h"
 
+#include "../../objc-obj-c++-shared/runtime.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
+
 /* This test demonstrate a failure in object_is_class which was fixed */
 
 /* Create a class whose instance variables mirror the struct used for
    Class structures in the runtime ... yes we're feeling evil today */
-@interface EvilClass : Object
+@interface EvilClass : TestsuiteObject
 {
   Class super_class;
   const char* name;
@@ -35,7 +32,7 @@ int main (void)
   EvilClass *evilObject = [EvilClass new];
   
   /* Now check that the object is not a class object */
-  if (object_is_class (evilObject))
+  if (class_isMetaClass (object_getClass (evilObject)))
     {
       printf ("object_is_class failed\n");
       abort ();
@@ -43,4 +40,3 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
Index: objc/execute/class-13.m
===================================================================
--- objc/execute/class-13.m	(revision 174696)
+++ objc/execute/class-13.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with a class accessor
    methods and a subclass overriding the superclass' implementation
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 static int class_variable = 0;
@@ -65,10 +61,10 @@ int main (void)
   test_that_class_has_class_method ("SubSubClass", @selector (setState:));
   test_that_class_has_class_method ("SubSubClass", @selector (state));
   
-  class = objc_lookup_class ("SubClass");
+  class = objc_getClass ("SubClass");
   test_accessor_method (class, 0, -1, -1, 1, 1);
 
-  sub_class = objc_lookup_class ("SubSubClass");
+  sub_class = objc_getClass ("SubSubClass");
   class_variable = 0;
   test_accessor_method (sub_class, 1, -1, 0, 1, 2);
 
Index: objc/execute/formal_protocol-2.m
===================================================================
--- objc/execute/formal_protocol-2.m	(revision 174696)
+++ objc/execute/formal_protocol-2.m	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test defining a protocol, a class adopting it, and using an object
    of type `id <protocol>'. */
@@ -11,7 +11,7 @@
 - (void) setEnabled: (BOOL)flag;
 @end
 
-@interface Feature : Object <Enabling>
+@interface Feature : TestsuiteObject <Enabling>
 {
   const char *name;
   BOOL isEnabled;
@@ -43,4 +43,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/formal_protocol-4.m
===================================================================
--- objc/execute/formal_protocol-4.m	(revision 174696)
+++ objc/execute/formal_protocol-4.m	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test defining a protocol, a class adopting it in a category */
 
@@ -9,7 +9,7 @@
 - (int) importance;
 @end
 
-@interface Feature : Object
+@interface Feature : TestsuiteObject
 @end
 
 @implementation Feature
@@ -38,4 +38,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/class-1.m
===================================================================
--- objc/execute/class-1.m	(revision 174696)
+++ objc/execute/class-1.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a RootClass */
 
Index: objc/execute/bycopy-1.m
===================================================================
--- objc/execute/bycopy-1.m	(revision 174696)
+++ objc/execute/bycopy-1.m	(working copy)
@@ -2,9 +2,8 @@
  * Contributed by Nicola Pero <nicola@brainstorm.co.uk>
  * Fri Feb  2 11:48:01 GMT 2001
  */
+#include <objc/objc.h>
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
-
 @protocol MyProtocol
 - (bycopy id) bycopyMethod;
 @end
@@ -13,7 +12,7 @@ int main (void)
 {
   [nil bycopyMethod];
 
-   exit (0);
+  return 0;
 }
 
 
Index: objc/execute/formal_protocol-6.m
===================================================================
--- objc/execute/formal_protocol-6.m	(revision 174696)
+++ objc/execute/formal_protocol-6.m	(working copy)
@@ -2,7 +2,7 @@
 
 #include <stdlib.h>
 #include <objc/Protocol.h>
-#include "../../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /* Test defining a protocol, and accessing it using @protocol */
 
@@ -17,11 +17,7 @@ int main (void)
 {
   Protocol *protocol = @protocol (Evaluating);
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   if (strcmp (protocol_getName(protocol), "Evaluating"))
-#else
-  if (strcmp ([protocol name], "Evaluating"))
-#endif
     {
       abort ();
     }
Index: objc/execute/bycopy-3.m
===================================================================
--- objc/execute/bycopy-3.m	(revision 174696)
+++ objc/execute/bycopy-3.m	(working copy)
@@ -9,27 +9,18 @@
  * interfere with what we are testing, which is that the `bycopy'
  * keyword generates the _F_BYCOPY qualifier for the return type.  */
 
-extern void exit (int) __attribute__ ((noreturn));
 extern int printf (const char *, ...);
 
-#include <objc/Protocol.h>
+#include <objc/objc.h>
+#include "../../objc-obj-c++-shared/runtime.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-#ifndef __NEXT_RUNTIME__
-#include <objc/encoding.h>
-#endif
-
 @protocol MyProtocol
 + (bycopy id<MyProtocol>) bycopyMethod;
 @end
 
 /* This no-op class to keep it compile under broken gcc 3.x */
-@interface MyObject : Object <MyProtocol> 
-#ifdef __OBJC2__
-+ (id) initialize;
-+ (id) alloc;
-+ new;
-- init;
-#endif
+@interface MyObject : TestsuiteObject <MyProtocol> 
 @end
 
 @implementation MyObject
@@ -37,12 +28,6 @@ extern int printf (const char *, ...);
 {
   return [MyObject alloc];
 }
-#ifdef __OBJC2__
-+ initialize {return self;}
-+ alloc { return class_createInstance (self, 0);}
-+ new { return [[self alloc] init]; }
-- init {return self;}
-#endif
 @end
 
 /* The following header, together with the implementation included below,
@@ -52,7 +37,7 @@ extern int printf (const char *, ...);
 
 int main (void)
 {
-  struct objc_method_description *method;
+  struct objc_method_description method;
   const char *method_types;
   unsigned qualifiers;
   Protocol *protocol;
@@ -64,17 +49,19 @@ int main (void)
   protocol = @protocol (MyProtocol);
 
   /* Ask to the protocol for the description of the method bycopyMethod */
-  method = [protocol descriptionForClassMethod: @selector (bycopyMethod)];
-  if (method == NULL)
-    {
-      printf ("Could not find method bycopyMethod in protocol!\n");
-      exit (1);
-    }
+  method = protocol_getMethodDescription (protocol, @selector (bycopyMethod),
+					  YES, NO);
 
   /* Get the method types for the method - which encode return type,
      arguments etc. */
-  method_types = method->types;
+  method_types = method.types;
 
+  if (method_types == NULL)
+    {
+      printf ("Could not find method bycopyMethod in protocol!\n");
+      return 1;
+    }
+
   /* Get the qualifiers for the return type */
   qualifiers = objc_get_type_qualifiers (method_types);
 
@@ -82,7 +69,7 @@ int main (void)
   if (! (qualifiers & _F_BYCOPY))
     {
       printf ("Failed - selector does not contain _F_BYCOPY qualifier!\n");
-      exit (1);
+      return 1;
     }
 
   /* Else, happy end */
Index: objc/execute/class-3.m
===================================================================
--- objc/execute/class-3.m	(revision 174696)
+++ objc/execute/class-3.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a minimal subclass tree */
 
Index: objc/execute/class-5.m
===================================================================
--- objc/execute/class-5.m	(revision 174696)
+++ objc/execute/class-5.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -66,10 +62,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/class-7.m
===================================================================
--- objc/execute/class-7.m	(revision 174696)
+++ objc/execute/class-7.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods; accessor methods implemented in a separate
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -64,7 +60,7 @@ int main (void)
   test_that_class_has_instance_method ("SubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubClass", @selector (state));
 
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, 1, 1, -3, -3);
 
   return 0;
Index: objc/execute/class-9.m
===================================================================
--- objc/execute/class-9.m	(revision 174696)
+++ objc/execute/class-9.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -69,10 +65,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/selector-1.m
===================================================================
--- objc/execute/selector-1.m	(revision 174696)
+++ objc/execute/selector-1.m	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Nicola Pero - Thu Mar  8 16:27:46 CET 2001 */
 #include <objc/objc.h>
-#include <objc/objc-api.h>
-#include <objc/Object.h>
+#include "../../objc-obj-c++-shared/runtime.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 int main (void)
 {
@@ -9,11 +9,7 @@ int main (void)
   char *selname;
 
   selector = @selector (alloc);
-#ifdef __NEXT_RUNTIME__
   selname = sel_getName (selector);
-#else
-  selname = sel_get_name (selector);
-#endif
   if (strcmp (selname, "alloc"))
     abort ();
 
Index: objc/execute/many_args_method.m
===================================================================
--- objc/execute/many_args_method.m	(revision 174696)
+++ objc/execute/many_args_method.m	(working copy)
@@ -30,9 +30,7 @@
 {
   return [self sumInteger: a  withInteger: b  withInteger: c];
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 
Index: objc/execute/IMP.m
===================================================================
--- objc/execute/IMP.m	(revision 174696)
+++ objc/execute/IMP.m	(working copy)
@@ -1,9 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 19:39:15 CET 2001 */
 
 #include <stdlib.h>
-#include "../../objc-obj-c++-shared/next-mapping.h"
-#include <objc/objc.h>
-#include <objc/objc-api.h>
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /* Test getting and calling the IMP of a method */
 
@@ -11,11 +9,11 @@
 {
   Class isa;
 }
-- (int) next: (int)a;
++ (int) next: (int)a;
 @end
 
 @implementation TestClass
-- (int) next: (int)a
++ (int) next: (int)a
 {
   return a + 1;
 }
@@ -27,10 +25,10 @@ int main (void)
   SEL selector;
   int (* imp) (id, SEL, int);
   
-  class = objc_get_class ("TestClass");
+  class = objc_getClass ("TestClass");
   selector = @selector (next:);
-  imp = (int (*)(id, SEL, int))method_get_imp 
-    (class_get_class_method (class, selector));
+  imp = (int (*)(id, SEL, int))method_getImplementation
+    (class_getClassMethod (class, selector));
   
   if (imp (class, selector, 5) != 6)
     {
Index: objc/execute/exceptions/catchall-1.m
===================================================================
--- objc/execute/exceptions/catchall-1.m	(revision 174696)
+++ objc/execute/exceptions/catchall-1.m	(working copy)
@@ -4,7 +4,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#import "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* The following is not required in actual user code; we include it
    here to check that the compiler generates an internal definition of
@@ -13,10 +13,10 @@
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Frob: Object
+@interface Frob: TestsuiteObject
 @end
 
-@implementation Frob: Object
+@implementation Frob: TestsuiteObject
 @end
 
 static Frob* _connection = nil;
@@ -24,7 +24,7 @@ static Frob* _connection = nil;
 //--------------------------------------------------------------------
 
 
-void test (Object* sendPort)
+void test (TestsuiteObject* sendPort)
 {
 	int cleanupPorts = 1;
 	Frob* receivePort = nil;
@@ -51,7 +51,7 @@ static Frob* _connection = nil;
 		printf ("cleanupPorts = %d\n", cleanupPorts);
 		printf ("---\n");		
 		
-		@throw [Object new];
+		@throw [TestsuiteObject new];
 	}
 	@catch(Frob *obj) {
 		printf ("Exception caught by incorrect handler!\n");
@@ -71,7 +71,7 @@ static Frob* _connection = nil;
 
 int main (void) {
 
-	test((Object *)-1);
+	test((TestsuiteObject *)-1);
 	return 0;
 }
-#import "../../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/exceptions/trivial.m
===================================================================
--- objc/execute/exceptions/trivial.m	(revision 174696)
+++ objc/execute/exceptions/trivial.m	(working copy)
@@ -1,5 +1,5 @@
 #include <stdlib.h>
-#import "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* do nothing except prove we can compile and link code calling the
    ecceptions mechanism */
@@ -8,12 +8,10 @@ int main(void)
 {
     @try {
 	int a = 1 ;
-	@throw [Object new];
+	@throw [TestsuiteObject new];
     }
-    @catch (Object *obj) {
+    @catch (TestsuiteObject *obj) {
   	return 0;
     }
     abort();
 }
-
-#import "../../../objc-obj-c++-shared/Object1-implementation.h"
Index: objc/execute/exceptions/handler-1.m
===================================================================
--- objc/execute/exceptions/handler-1.m	(revision 174696)
+++ objc/execute/exceptions/handler-1.m	(working copy)
@@ -13,9 +13,9 @@ int main(void)
 
 #else
 
-#include <objc/objc-api.h>
+#include <objc/runtime.h>
 #include <objc/objc-exception.h>
-#include <objc/Object.h>
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 static unsigned int handlerExpected = 0;
@@ -37,14 +37,14 @@ main(int argc, char *argv[])
 
   @try
     {
-      @throw [Object new];
+      @throw [TestsuiteObject new];
     }
   @catch (id exc)
     {
       handlerExpected = 1;
     }
 
-  @throw [Object new];
+  @throw [TestsuiteObject new];
   abort();
   return 0;
 }
Index: objc/execute/exceptions/finally-1.m
===================================================================
--- objc/execute/exceptions/finally-1.m	(revision 174696)
+++ objc/execute/exceptions/finally-1.m	(working copy)
@@ -1,23 +1,7 @@
 #include <stdio.h>
 #include <stdlib.h>
-//#import "../../../objc-obj-c++-shared/Object1.h"
-#ifdef __OBJC2__
-#include <objc/runtime.h>
-@interface Object
-+ initialize;
-+ new;
-- free;
-@end
-@implementation Object
-+ initialize { return self; }
-+ new  { return class_createInstance (self, 0); }
-- free { return object_dispose(self);}
-@end
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
-#else
-#import "../../../objc-obj-c++-shared/Object1.h"
-#endif
-
 static int made_try = 0;
 
 int
@@ -42,7 +26,7 @@ thrower()
   @try
   {
     thrower_try_body();
-    @throw [Object new];
+    @throw [TestsuiteObject new];
   }
   @finally
   {
@@ -73,4 +57,4 @@ main(int ac, char *av[])
     abort ();
   return 0;
 }
-//#import "../../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/exceptions/local-variables-1.m
===================================================================
--- objc/execute/exceptions/local-variables-1.m	(revision 174696)
+++ objc/execute/exceptions/local-variables-1.m	(working copy)
@@ -4,7 +4,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
-#import "../../../objc-obj-c++-shared/Object1.h"
+#import "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
 int gi1 = 9, gi2 = 19;
 float gf1 = 9.0, gf2 = 19.0;
@@ -29,13 +29,13 @@ void foo (int arg1, float *arg2)
     local6 = 18.0;
     pi = &gi2;
     pf = &gf2;
-    obj2 = obj1 = [Object new];
+    obj2 = obj1 = [TestsuiteObject new];
     arg1 = 17;
     arg2 = &gf2;
     
-    @throw [Object new];
+    @throw [TestsuiteObject new];
   }
-  @catch (Object *obj) {
+  @catch (TestsuiteObject *obj) {
     if (local1 != 123 || local2 != 345 || local3 != 5.0 || local4 != 6.0
        || local5 != 17 || local6 != 18.0) {
       printf("Abort 1\n");
@@ -60,4 +60,4 @@ int main(void) {
   foo(15, &gf1);
   return 0;
 }
-#import "../../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/exceptions/foward-1.m
===================================================================
--- objc/execute/exceptions/foward-1.m	(revision 174696)
+++ objc/execute/exceptions/foward-1.m	(working copy)
@@ -1,34 +1,14 @@
 /* Check that throwing an exception from a -forward:: works.  */
 /* Developed by Marcin Koziej <creep@desk.pl>.  */
 
+#include <stdio.h>
 #include <stdlib.h>
-#include <objc/Object.h>
-#ifndef __NEXT_RUNTIME__
-#import <objc/objc-api.h>
-#endif
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
-#ifdef __OBJC2__
-@interface Object (TEST_SUITE_ADDITIONS)
-+ initialize;
-+ alloc;
-+ new;
-- init;
-- free;
-@end
-
-@implementation Object (TEST_SUITE_ADDITIONS)
-+ initialize { return self; }
-+ alloc { return class_createInstance (self, 0); }
-+ new { return [[self alloc] init]; }
-- init { return self; }
-- free { return object_dispose(self); }
-@end
-#endif
-
 static int i;
 
 __attribute__((objc_exception)) 
-@interface Thrower : Object 
+@interface Thrower : TestsuiteObject 
 - forward: (SEL) s : (void*) a;
 @end
 
@@ -36,7 +16,7 @@ __attribute__((objc_exception))
 - forward: (SEL) s : (void*) a
 {
   i++;
-  @throw [Object new];
+  @throw [TestsuiteObject new];
   return nil;
 }
 @end
Index: objc/execute/exceptions/matcher-1.m
===================================================================
--- objc/execute/exceptions/matcher-1.m	(revision 174696)
+++ objc/execute/exceptions/matcher-1.m	(working copy)
@@ -13,9 +13,9 @@ int main(void)
 
 #else
 
-#include <objc/objc-api.h>
+#include <objc/runtime.h>
 #include <objc/objc-exception.h>
-#include <objc/Object.h>
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 static unsigned int handlerExpected = 0;
@@ -27,13 +27,13 @@ my_exception_matcher(Class match_class, id excepti
   return 1;
 }
 
-@interface A : Object
+@interface A : TestsuiteObject
 @end
 
 @implementation A
 @end
 
-@interface B : Object
+@interface B : TestsuiteObject
 @end
 
 @implementation B
Index: objc/execute/exceptions/throw-nil.m
===================================================================
--- objc/execute/exceptions/throw-nil.m	(revision 174696)
+++ objc/execute/exceptions/throw-nil.m	(working copy)
@@ -1,5 +1,5 @@
 #include <objc/objc.h>
-#include <objc/Object.h>
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 
 #ifdef __NEXT_RUNTIME__
 /* This test only runs for the GNU runtime.  */
@@ -24,7 +24,7 @@ int main (void)
     {
       @throw nil;
     }
-  @catch (Object *exc)
+  @catch (TestsuiteObject *exc)
     {
       abort ();
     }
Index: objc/execute/informal_protocol.m
===================================================================
--- objc/execute/informal_protocol.m	(revision 174696)
+++ objc/execute/informal_protocol.m	(working copy)
@@ -1,8 +1,8 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.h"
 #include <objc/objc.h>
 
-@interface Object (StopProtocol)
+@interface TestsuiteObject (StopProtocol)
 - (void) stop;
 @end
 
Index: objc/execute/class-tests-1.h
===================================================================
--- objc/execute/class-tests-1.h	(revision 174696)
+++ objc/execute/class-tests-1.h	(working copy)
@@ -2,9 +2,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include "../../objc-obj-c++-shared/Object1.h"
-#include <objc/objc.h>
-#include <objc/objc-api.h>
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /*
  * Standard Tests For Classes and Objects - abort upon failing; return
@@ -14,23 +12,17 @@
 /* Test that `class' is a Class */
 static void test_is_class (Class class)
 {
-  if (object_is_class (class) == NO)
+  if (class_isMetaClass (object_getClass (class)) == NO)
     {
       printf ("test_is_class failed\n");
       abort ();
     }
-
-  if (class_is_class (class) == NO)
-    {
-      printf ("test_is_class failed\n");
-      abort ();
-    }
 }
 
 /* Test that the superclass of `class' is `superclass' */
 static void test_superclass (Class class, Class superclass)
 {
-  if (class_get_super_class (class) != superclass) 
+  if (class_getSuperclass (class) != superclass)
     {
       printf ("test_superclass failed\n");
       abort ();
@@ -40,7 +32,7 @@ static void test_superclass (Class class, Class su
 /* Test that the classname of `class' is `classname' */
 static void test_class_name (Class class, const char *classname)
 {
-  if (strcmp (class_get_class_name (class), classname))
+  if (strcmp (class_getName (class), classname))
     {
       printf ("test_class_name failed\n");
       abort ();
@@ -51,7 +43,7 @@ static void test_class_name (Class class, const ch
 static void test_allocate (Class class)
 {
   /* The object we create is leaked but who cares, this is only a test */
-  id object = class_create_instance (class);
+  id object = class_createInstance (class, 0);
 
   if (object == nil)
     {
@@ -63,9 +55,9 @@ static void test_allocate (Class class)
 /* Test that instances of `class' are instances and not classes */
 static void test_instances (Class class)
 {
-  id object = class_create_instance (class);
+  id object = class_createInstance (class, 0);
 
-  if (object_is_class (object) == YES)
+  if (class_isMetaClass (object_getClass (object)) == YES)
     {
       printf ("test_instances failed\n");
       abort ();
@@ -75,7 +67,7 @@ static void test_instances (Class class)
 /* Test that we can deallocate instances of `class' */
 static void test_deallocate (Class class)
 {
-  id object = class_create_instance (class);
+  id object = class_createInstance (class, 0);
 
   object_dispose (object);
 }
@@ -83,27 +75,15 @@ static void test_deallocate (Class class)
 /* Test that the object and the class agree on what the class is */
 static void test_object_class (Class class)
 {
-  id object = class_create_instance (class);
+  id object = class_createInstance (class, 0);
 
-  if (object_get_class (object) != class)
+  if (object_getClass (object) != class)
     {
       printf ("test_object_class failed\n");
       abort ();
     }
 }
 
-/* Test that the object and the class agree on what the superclass is */
-static void test_object_super_class (Class class)
-{
-  id object = class_create_instance (class);
-
-  if (object_get_super_class (object) != class_get_super_class (class))
-    {
-      printf ("test_object_super_class failed\n");
-      abort ();
-    }
-}
-
 /* 
  *  Runs all the tests in this file for the specified class 
  */
@@ -113,16 +93,12 @@ void test_class_with_superclass (const char *class
   Class class; 
   Class superclass; 
 
-  /* We need at least a method call before playing with the internals, 
-     so that the runtime will call __objc_resolve_class_links () */
-  [Object class];
-
   /* class_name must be an existing class */
-  class = objc_lookup_class (class_name);
+  class = objc_getClass (class_name);
   test_is_class (class);
 
   /* But superclass_name can be "", which means `Nil' */
-  superclass = objc_lookup_class (superclass_name);  
+  superclass = objc_getClass (superclass_name);  
   if (superclass != Nil)
     {
       test_is_class (superclass);
@@ -135,5 +111,4 @@ void test_class_with_superclass (const char *class
   test_instances (class);
   test_deallocate (class);
   test_object_class (class);
-  test_object_super_class (class);
 }
Index: objc/execute/protocol-isEqual-1.m
===================================================================
--- objc/execute/protocol-isEqual-1.m	(revision 174696)
+++ objc/execute/protocol-isEqual-1.m	(working copy)
@@ -1,6 +1,7 @@
 /* Contributed by Nicola Pero - Fri Jun  4 03:16:17 BST 2004 */
 /* Test that a protocol is equal to itself.  */
-#include "../../objc-obj-c++-shared/Protocol1.h"
+#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/runtime.h"
 
 @protocol Foo
 - (void)foo;
@@ -10,11 +11,7 @@ int main (void)
 {
   Protocol *protocol = @protocol(Foo);
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  if ( !protocol_isEqual (protocol, protocol))
-#else
-  if (! [protocol isEqual: protocol])
-#endif
+  if (!protocol_isEqual (protocol, protocol))
     {
       abort ();
     }
Index: objc/execute/protocol-isEqual-3.m
===================================================================
--- objc/execute/protocol-isEqual-3.m	(revision 174696)
+++ objc/execute/protocol-isEqual-3.m	(working copy)
@@ -1,19 +1,15 @@
 /* Contributed by Nicola Pero - Fri Jun  4 03:16:17 BST 2004 */
 /* Test that a protocol is not equal to nil.  */
+#include "../../objc-obj-c++-shared/runtime.h"
+#include <objc/Protocol.h>
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
-
 @protocol Foo
 - (void)foo;
 @end
 
 int main (void)
 {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   if (protocol_isEqual (@protocol(Foo), nil))
-#else
-  if ([@protocol(Foo) isEqual: nil])
-#endif
     {
       abort ();
     }
Index: objc/execute/_cmd.m
===================================================================
--- objc/execute/_cmd.m	(revision 174696)
+++ objc/execute/_cmd.m	(working copy)
@@ -1,8 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 19:39:15 CET 2001 */
 
 #include <stdlib.h>
-#include "../../objc-obj-c++-shared/next-mapping.h"
-#include <objc/objc-api.h>
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /* Test the hidden argument _cmd to method calls */
 
@@ -16,11 +15,9 @@
 @implementation TestClass
 + (const char*) method
 {
-  return sel_get_name (_cmd);
+  return sel_getName (_cmd);
 }
-#ifdef __NEXT_RUNTIME__
 + initialize { return self; }
-#endif
 @end
 
 
Index: objc/execute/function-message-1.m
===================================================================
--- objc/execute/function-message-1.m	(revision 174696)
+++ objc/execute/function-message-1.m	(working copy)
@@ -1,6 +1,6 @@
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface Foo : Object
+@interface Foo : TestsuiteObject
 + bar;
 @end
 
Index: objc/execute/bf-common.h
===================================================================
--- objc/execute/bf-common.h	(revision 174696)
+++ objc/execute/bf-common.h	(working copy)
@@ -1,17 +1,14 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#ifndef __NEXT_RUNTIME__
-#include <objc/encoding.h>
-#else
+#include "../../objc-obj-c++-shared/runtime.h"
+
 /* The following header, together with the implementation included below,
    emulate functionality provided by the GNU runtime but not available from
    the NeXT runtime.  */
 #include "../../objc-obj-c++-shared/objc-test-suite-next-encode-assist.h"
-#define objc_get_class(C) objc_getClass(C)
-#endif
 
-#ifndef __OBJC2__
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
 void print_ivars (Class class)
 {
   struct objc_ivar_list* ivars = class->ivars;
@@ -62,17 +59,67 @@ void compare_structures (Class class, const char*
   
   printf ("%d ivars checked\n", i);
 }
+#else
+void print_ivars (Class class)
+{
+  unsigned int count, i;
+  Ivar *list = class_copyIvarList (class, &count);
+
+  for (i = 0; i < count; i++) {
+    printf ("ivar '%s', type '%s', offset %ud\n",
+	    ivar_getName (list[i]),
+	    ivar_getTypeEncoding (list[i]),
+	    (unsigned int)ivar_getOffset (list[i]));
+  }
+}
+
+void compare_structures (Class class, const char* type)
+{
+  struct objc_struct_layout layout;
+  unsigned int count;
+  Ivar *list = class_copyIvarList (class, &count);
+  int i = 0;
+  int position;
+
+  objc_layout_structure (type, &layout);
+
+  while (objc_layout_structure_next_member (&layout))
+    {
+      const char *ivar_type;
+
+      if (i > count)
+        {
+          printf ("too many ivars in type %s, layout = %s\n",
+                  type, layout.type);
+          exit (1);
+        }
+
+      objc_layout_structure_get_info (&layout, &position, NULL, &ivar_type);
+      printf ("real ivar '%s' offset %ud\n",
+              ivar_getName (list[i]), (unsigned int)ivar_getOffset (list[i]));
+      printf ("computed type '%s' offset %d\n", ivar_type, position);
+      if ((unsigned int)position != (unsigned int)ivar_getOffset (list[i]))
+        {
+          printf ("offset %ud and computed position %d don't match on ivar '%s'"
+                  " (i = %d)\n",
+                  (unsigned int)ivar_getOffset (list[i]), position, ivar_getName (list[i]), i);
+          exit (1);
+        }
+      i++;
+    }
+  
+  printf ("%d ivars checked\n", i);
+}
 #endif
 
 int main ()
 {
-#ifndef __OBJC2__
   struct class_vars
     {
       @defs (MyObject);
     };
   int size1, size2;
-  Class class = objc_get_class ("MyObject");
+  Class class = objc_getClass ("MyObject");
   printf ("type = %s\n", @encode (struct class_vars));
   print_ivars (class);
 
@@ -83,10 +130,7 @@ int main ()
       printf ("sizes don't match (computed %d, exact %d)\n", size1, size2);
       abort ();
     }
-#endif
   
-  exit (0);
+  return 0;
 }
-#ifndef __OBJC2__
 #include "../../objc-obj-c++-shared/objc-test-suite-next-encode-assist-impl.h"
-#endif
Index: objc/execute/np-2.m
===================================================================
--- objc/execute/np-2.m	(revision 174696)
+++ objc/execute/np-2.m	(working copy)
@@ -2,7 +2,7 @@
  * Contributed by Nicola Pero <n.pero@mi.flashnet.it>
  * Tue Sep 19 4:34AM
  */
-#include "../../objc-obj-c++-shared/Protocol1.h"
+
 #include <objc/objc.h>
 
 @protocol MyProtocol
@@ -17,16 +17,14 @@
 {
   printf ("methodA\n");
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 int main (void)
 {
   [MyObject methodA];
 
-   exit (0);
+  return 0;
 }
 
 
Index: objc/execute/class_self-1.m
===================================================================
--- objc/execute/class_self-1.m	(revision 174696)
+++ objc/execute/class_self-1.m	(working copy)
@@ -51,9 +51,7 @@ struct d
 {
   return 4;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 
Index: objc/execute/redefining_self.m
===================================================================
--- objc/execute/redefining_self.m	(revision 174696)
+++ objc/execute/redefining_self.m	(working copy)
@@ -17,9 +17,7 @@
 
   return self;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 
Index: objc/execute/class-10.m
===================================================================
--- objc/execute/class-10.m	(revision 174696)
+++ objc/execute/class-10.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -72,10 +68,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   test_that_class_has_instance_method ("SubSubClass", @selector (shift));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/static-1.m
===================================================================
--- objc/execute/static-1.m	(revision 174696)
+++ objc/execute/static-1.m	(working copy)
@@ -19,9 +19,7 @@ static int test = 1;
   return test;
 }
 
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 int main (void)
Index: objc/execute/class-12.m
===================================================================
--- objc/execute/class-12.m	(revision 174696)
+++ objc/execute/class-12.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with a class methods */
 
@@ -13,9 +11,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 static int class_variable = 0;
@@ -48,7 +44,7 @@ int main (void)
   test_that_class_has_class_method ("SubClass", @selector (setState:));
   test_that_class_has_class_method ("SubClass", @selector (state));
 
-  class = objc_lookup_class ("SubClass");
+  class = objc_getClass ("SubClass");
   test_accessor_method (class, 0, -1, -1, 1, 1);
 
   return 0;
Index: objc/execute/enumeration-2.m
===================================================================
--- objc/execute/enumeration-2.m	(revision 174696)
+++ objc/execute/enumeration-2.m	(working copy)
@@ -1,7 +1,6 @@
 /* Contributed by Nicola Pero -  Wed Dec  5 17:12:40 GMT 2001 */
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
-#include <objc/objc.h>
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 typedef enum { black, white } color;
 
@@ -11,7 +10,7 @@ typedef struct
   color b:2;
 } color_couple;
 
-@interface TestClass: Object
+@interface TestClass: TestsuiteObject
 {
   color_couple *c;
 }
@@ -50,4 +49,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/class-14.m
===================================================================
--- objc/execute/class-14.m	(revision 174696)
+++ objc/execute/class-14.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with a class accessor
    methods and a subclass overriding the superclass' implementation,
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 static int class_variable = 0;
@@ -70,10 +66,10 @@ int main (void)
   test_that_class_has_class_method ("SubSubClass", @selector (state));
   test_that_class_has_class_method ("SubSubClass", @selector (shift));
   
-  class = objc_lookup_class ("SubClass");
+  class = objc_getClass ("SubClass");
   test_accessor_method (class, 0, -1, -1, 1, 1);
 
-  sub_class = objc_lookup_class ("SubSubClass");
+  sub_class = objc_getClass ("SubSubClass");
   class_variable = 0;
   test_accessor_method (sub_class, 1, -1, 0, 1, 2);
 
Index: objc/execute/encode-1.m
===================================================================
--- objc/execute/encode-1.m	(revision 174696)
+++ objc/execute/encode-1.m	(working copy)
@@ -1,8 +1,7 @@
 /* Contributed by Nicola Pero - Thu Mar  8 16:27:46 CET 2001 */
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Test very simple @encode */
 
@@ -18,7 +17,7 @@ int main (void)
       abort ();
     }
 
-  if (strcmp ("@", @encode (Object *)))
+  if (strcmp ("@", @encode (TestsuiteObject *)))
     {
       abort ();
     }
Index: objc/execute/formal_protocol-1.m
===================================================================
--- objc/execute/formal_protocol-1.m	(revision 174696)
+++ objc/execute/formal_protocol-1.m	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Tests defining a protocol and a class adopting it */
 
@@ -10,7 +10,7 @@
 - (void) setEnabled: (BOOL)flag;
 @end
 
-@interface Feature : Object <Enabling>
+@interface Feature : TestsuiteObject <Enabling>
 {
   const char *name;
   BOOL isEnabled;
@@ -42,4 +42,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/formal_protocol-3.m
===================================================================
--- objc/execute/formal_protocol-3.m	(revision 174696)
+++ objc/execute/formal_protocol-3.m	(working copy)
@@ -1,7 +1,7 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test defining two protocol, a class adopting both of them, 
    and using an object of type `id <Protocol1, Protocol2>' */ 
@@ -15,7 +15,7 @@
 - (int) importance;
 @end
 
-@interface Feature : Object <Enabling, Evaluating>
+@interface Feature : TestsuiteObject <Enabling, Evaluating>
 {
   const char *name;
   BOOL isEnabled;
@@ -56,4 +56,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/accessing_ivars.m
===================================================================
--- objc/execute/accessing_ivars.m	(revision 174696)
+++ objc/execute/accessing_ivars.m	(working copy)
@@ -1,23 +1,20 @@
 /* Contributed by Nicola Pero - Thu Mar  8 16:27:46 CET 2001 */
 #include <stdlib.h>
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test that by using -> we can access ivars of other objects of the same 
    class */
 
-@interface TestClass : Object
+@interface TestClass : TestsuiteObject
 {
   int value;
 }
 - (int) value;
-- (int) setValue: (int)number;
+- (void) setValue: (int)number;
 - (void) takeValueFrom: (TestClass *)object;
 @end
 
-@implementation TestClass : Object
+@implementation TestClass : TestsuiteObject
 {
   int value;
 }
@@ -25,9 +22,9 @@
 { 
   return value;
 }
-- (int) setValue: (int)number
+- (void) setValue: (int)number
 {
-  value = number; 
+  value = number;
 }
 - (void) takeValueFrom: (TestClass *)object
 {
@@ -55,4 +52,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/formal_protocol-5.m
===================================================================
--- objc/execute/formal_protocol-5.m	(revision 174696)
+++ objc/execute/formal_protocol-5.m	(working copy)
@@ -2,7 +2,7 @@
 
 #include <stdlib.h>
 #include <objc/Protocol.h>
-#include "../../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /* Test defining a protocol, and accessing it using @protocol */
 
@@ -25,11 +25,7 @@ int main (void)
 {
   Protocol *protocol = @protocol (Evaluating);
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   if (strcmp (protocol_getName(protocol), "Evaluating"))
-#else
-  if (strcmp ([protocol name], "Evaluating"))
-#endif
     {
       abort ();
     }
Index: objc/execute/bycopy-2.m
===================================================================
--- objc/execute/bycopy-2.m	(revision 174696)
+++ objc/execute/bycopy-2.m	(working copy)
@@ -2,14 +2,14 @@
  * Contributed by Nicola Pero <nicola@brainstorm.co.uk>
  * Fri Feb  2 11:48:01 GMT 2001
  */
+#include <objc/objc.h>
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
-
 @protocol MyProtocol
 + (bycopy id<MyProtocol>) bycopyMethod;
 @end
 
-@interface MyObject : Object <MyProtocol> 
+@interface MyObject : TestsuiteObject <MyProtocol> 
 @end
 
 @implementation MyObject
@@ -25,6 +25,6 @@ int main (void)
 
   object = [MyObject bycopyMethod];
 
-   exit (0);
+  return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/class-2.m
===================================================================
--- objc/execute/class-2.m	(revision 174696)
+++ objc/execute/class-2.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass */
 
Index: objc/execute/formal_protocol-7.m
===================================================================
--- objc/execute/formal_protocol-7.m	(revision 174696)
+++ objc/execute/formal_protocol-7.m	(working copy)
@@ -1,7 +1,8 @@
 /* Contributed by Nicola Pero - Fri Mar  9 21:35:47 CET 2001 */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Protocol1.h"
+#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test defining two protocols, one incorporating the other one. */
 
@@ -14,7 +15,7 @@
 @end
 
 /* A class adopting the protocol */
-@interface Test : Object <Processing>
+@interface Test : TestsuiteObject <Processing>
 {
   BOOL didConfigure;
   BOOL didProcess;
@@ -41,4 +42,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/root_methods.m
===================================================================
--- objc/execute/root_methods.m	(revision 174696)
+++ objc/execute/root_methods.m	(working copy)
@@ -1,6 +1,6 @@
 /* Contributed by Nicola Pero - Thu Mar  8 16:27:46 CET 2001 */
 
-#import "../../objc-obj-c++-shared/next-mapping.h"
+#import "../../objc-obj-c++-shared/runtime.h"
 #import <objc/objc.h>
 
 /* Test that instance methods of root classes are available as class 
@@ -18,9 +18,7 @@
 {
   return self;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface NormalClass : RootClass
@@ -31,7 +29,7 @@
 
 int main (void)
 {
-  Class normal = objc_get_class ("NormalClass");
+  Class normal = objc_getClass ("NormalClass");
 
   if (normal == Nil)
     {
Index: objc/execute/class-4.m
===================================================================
--- objc/execute/class-4.m	(revision 174696)
+++ objc/execute/class-4.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods */
@@ -14,9 +12,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -50,7 +46,7 @@ int main (void)
   test_that_class_has_instance_method ("SubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubClass", @selector (state));
 
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, 1, 1, -3, -3);
 
   return 0;
Index: objc/execute/class-6.m
===================================================================
--- objc/execute/class-6.m	(revision 174696)
+++ objc/execute/class-6.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -66,10 +62,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/nested-func-1.m
===================================================================
--- objc/execute/nested-func-1.m	(revision 174696)
+++ objc/execute/nested-func-1.m	(working copy)
@@ -3,7 +3,7 @@
 /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
 #include <stdio.h>
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 
 int bappy (int (*blargh) (int a, int b, int c))
@@ -11,7 +11,7 @@ int bappy (int (*blargh) (int a, int b, int c))
   return blargh (4, 7, 2) + 3;
 }
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 + (int)foo;
 @end
 
Index: objc/execute/class-8.m
===================================================================
--- objc/execute/class-8.m	(revision 174696)
+++ objc/execute/class-8.m	(working copy)
@@ -1,8 +1,6 @@
 /* Contributed by Nicola Pero - Tue Mar  6 23:05:53 CET 2001 */
 
-#include "../../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 
 /* Tests creating a root class and a subclass with an ivar and
    accessor methods and a subclass overriding the superclass'
@@ -15,9 +13,7 @@
 @end
 
 @implementation RootClass
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 @interface SubClass : RootClass
@@ -69,10 +65,10 @@ int main (void)
   test_that_class_has_instance_method ("SubSubClass", @selector (setState:));
   test_that_class_has_instance_method ("SubSubClass", @selector (state));
   
-  object = class_create_instance (objc_lookup_class ("SubClass"));
+  object = class_createInstance (objc_getClass ("SubClass"), 0);
   test_accessor_method (object, 0, -1, -1, 1, 1);
 
-  sub_object = class_create_instance (objc_lookup_class ("SubSubClass"));
+  sub_object = class_createInstance (objc_getClass ("SubSubClass"), 0);
   test_accessor_method (sub_object, 1, -1, 0, 1, 2);
 
   return 0;
Index: objc/execute/private.m
===================================================================
--- objc/execute/private.m	(revision 174696)
+++ objc/execute/private.m	(working copy)
@@ -1,11 +1,11 @@
 /* Contributed by Nicola Pero - Fri Mar  9 19:39:15 CET 2001 */
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 
 /* Test the @private, @protected, @public keyworks for ivars.  We only
    check syntax. */
 
-@interface TestClass : Object
+@interface TestClass : TestsuiteObject
 {
   int a;
 
Index: objc/execute/load-3.m
===================================================================
--- objc/execute/load-3.m	(revision 174696)
+++ objc/execute/load-3.m	(working copy)
@@ -9,10 +9,10 @@
  */
 
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 
-@interface A : Object
+@interface A : TestsuiteObject
 @end
 
 @interface B : A
Index: objc/execute/compatibility_alias.m
===================================================================
--- objc/execute/compatibility_alias.m	(revision 174696)
+++ objc/execute/compatibility_alias.m	(working copy)
@@ -1,8 +1,7 @@
 /* Contributed by Nicola Pero - Thu Mar  8 17:23:59 CET 2001 */
-#import "../../objc-obj-c++-shared/Object1.h"
-#include <objc/objc.h>
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-@compatibility_alias MyObject Object;
+@compatibility_alias MyObject TestsuiteObject;
 
 int main (void)
 {
@@ -10,4 +9,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/nested-3.m
===================================================================
--- objc/execute/nested-3.m	(revision 174696)
+++ objc/execute/nested-3.m	(working copy)
@@ -22,9 +22,7 @@
   return test ();
 }
 
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 int main (void)
Index: objc/execute/next_mapping.h
===================================================================
--- objc/execute/next_mapping.h	(revision 174696)
+++ objc/execute/next_mapping.h	(working copy)
@@ -1,906 +0,0 @@
-/* This file "renames" various ObjC GNU runtime entry points
-   (and fakes the existence of several others)
-   if the NeXT runtime is being used.  */
-/* Authors: Ziemowit Laski <zlaski@apple.com>  */
-/*	    David Ayers <d.ayers@inode.at>  */
-
-#ifdef __NEXT_RUNTIME__
-#include <objc/objc-class.h>
-#include <objc/Object.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define objc_get_class(C)			objc_getClass(C)
-#define objc_get_meta_class(C)			objc_getMetaClass(C)
-#define class_get_class_method(C, S)		class_getClassMethod(C, S)
-#define class_get_instance_method(C, S)		class_getInstanceMethod(C, S)
-#define method_get_imp(M)			(((Method)M)->method_imp)
-#define sel_get_name(S)				sel_getName(S)
-#define class_create_instance(C)		class_createInstance(C, 0)
-#define	class_get_class_name(C)			object_getClassName(C)
-#define class_get_super_class(C)		(((struct objc_class *)C)->super_class)
-#define object_get_super_class(O)		class_get_super_class(*(struct objc_class **)O)
-#define objc_lookup_class(N)			objc_lookUpClass(N)
-#define object_get_class(O)			(*(struct objc_class **)O)
-#define class_is_class(C)			(CLS_GETINFO((struct objc_class *)C, CLS_CLASS)? YES: NO)
-#define class_is_meta_class(C)			(CLS_GETINFO((struct objc_class *)C, CLS_META)? YES: NO)
-#define object_is_class(O)			class_is_meta_class(*(struct objc_class **)O)
-#define object_is_meta_class(O)			(class_is_meta_class(O) && class_is_meta_class(*(struct objc_class **)O))
-
-/* You need either an empty +initialize method or an empty -forward:: method. 
-   The NeXT runtime unconditionally sends +initialize to classes when they are 
-   first used, and unconditionally tries to forward methods that the class 
-   doesn't understand (including +initialize). If you have neither +initialize 
-   nor -forward::, the runtime complains.  
-
-   The simplest workaround is to add
-
-      + initialize { return self; }
-
-   to every root class @implementation.  */
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/* The following is necessary to "cover" the bf*.m test cases on NeXT.  */
-
-#undef  MAX
-#undef  MIN
-#undef  ROUND
-
-#ifdef __cplusplus
-#define MAX(X, Y) ((X > Y) ? X : Y)
-#define MIN(X, Y) ((X < Y) ? X : Y)
-#define ROUND(V, A) (A * ((V + A - 1) / A))
-#else
-#define MAX(X, Y)                    \
-  ({ typeof (X) __x = (X), __y = (Y); \
-     (__x > __y ? __x : __y); })
-#define MIN(X, Y)                    \
-  ({ typeof (X) __x = (X), __y = (Y); \
-     (__x < __y ? __x : __y); })
-#define ROUND(V, A) \
-  ({ typeof (V) __v = (V); typeof (A) __a = (A); \
-     __a * ((__v+__a - 1)/__a); })
-#endif
-
-#define BITS_PER_UNIT __CHAR_BIT__
-typedef struct{ char a; } __small_struct;
-#define STRUCTURE_SIZE_BOUNDARY (BITS_PER_UNIT * sizeof (__small_struct))
-
-/* Not sure why the following are missing from NeXT objc headers... */
-
-#ifndef _C_LNG_LNG
-#define _C_LNG_LNG  'q'
-#endif
-#ifndef _C_ULNG_LNG
-#define _C_ULNG_LNG 'Q'
-#endif
-#ifndef _C_ATOM
-#define _C_ATOM     '%'
-#endif
-#ifndef _C_BOOL
-#define _C_BOOL     'B'
-#endif
-
-#define _C_CONST        'r'
-#define _C_IN           'n'
-#define _C_INOUT        'N'
-#define _C_OUT          'o'
-#define _C_BYCOPY       'O'
-#define _C_BYREF        'R'
-#define _C_ONEWAY       'V'
-#define _C_GCINVISIBLE  '!'
-   
-#define _F_CONST        0x01
-#define _F_IN           0x01
-#define _F_OUT          0x02
-#define _F_INOUT        0x03
-#define _F_BYCOPY       0x04  
-#define _F_BYREF        0x08  
-#define _F_ONEWAY       0x10
-#define _F_GCINVISIBLE  0x20
-
-struct objc_struct_layout
-{
-  const char *original_type;
-  const char *type;
-  const char *prev_type;
-  unsigned int record_size; 
-  unsigned int record_align;
-};
-
-typedef union arglist {
-  char *arg_ptr;
-  char arg_regs[sizeof (char*)];
-} *arglist_t;                   /* argument frame */
-
-const char *objc_skip_typespec (const char *type);
-void objc_layout_structure_get_info (struct objc_struct_layout *layout,
-    unsigned int *offset, unsigned int *align, const char **type);
-void objc_layout_structure (const char *type,
-    struct objc_struct_layout *layout);
-BOOL objc_layout_structure_next_member (struct objc_struct_layout *layout);
-void objc_layout_finish_structure (struct objc_struct_layout *layout,
-    unsigned int *size, unsigned int *align);
-int objc_aligned_size (const char *type);
-
-/*
-  return the size of an object specified by type
-*/
-
-int
-objc_sizeof_type (const char *type)
-{
-  /* Skip the variable name if any */
-  if (*type == '"')
-    {
-      for (type++; *type++ != '"';)
-	/* do nothing */;
-    }
-
-  switch (*type) {
-  case _C_ID:
-    return sizeof (id);
-    break;
-
-  case _C_CLASS:
-    return sizeof (Class);
-    break;
-
-  case _C_SEL:
-    return sizeof (SEL);
-    break;
-
-  case _C_CHR:
-    return sizeof (char);
-    break;
-
-  case _C_UCHR:
-    return sizeof (unsigned char);
-    break;
-
-  case _C_SHT:
-    return sizeof (short);
-    break;
-
-  case _C_USHT:
-    return sizeof (unsigned short);
-    break;
-
-  case _C_INT:
-    return sizeof (int);
-    break;
-
-  case _C_UINT:
-    return sizeof (unsigned int);
-    break;
-
-  case _C_LNG:
-    return sizeof (long);
-    break;
-
-  case _C_ULNG:
-    return sizeof (unsigned long);
-    break;
-
-  case _C_LNG_LNG:
-    return sizeof (long long);
-    break;
-
-  case _C_ULNG_LNG:
-    return sizeof (unsigned long long);
-    break;
-
-  case _C_FLT:
-    return sizeof (float);
-    break;
-
-  case _C_DBL:
-    return sizeof (double);
-    break;
-
-  case _C_PTR:
-  case _C_ATOM:
-  case _C_CHARPTR:
-    return sizeof (char *);
-    break;
-
-  case _C_ARY_B:
-    {
-      int len = atoi (type + 1);
-      while (isdigit ((unsigned char)*++type))
-	;
-      return len * objc_aligned_size (type);
-    }
-    break;
-
-  case _C_BFLD:
-    {
-      /* The NeXT encoding of bitfields is _still_: b 'size' */
-      int size = atoi (type + 1);
-      /* Return an upper bound on byte size */
-      return (size + BITS_PER_UNIT - 1) / BITS_PER_UNIT;
-    }
-
-  case _C_STRUCT_B:
-    {
-      struct objc_struct_layout layout;
-      unsigned int size;
-
-      objc_layout_structure (type, &layout);
-      while (objc_layout_structure_next_member (&layout))
-        /* do nothing */ ;
-      objc_layout_finish_structure (&layout, &size, NULL);
-
-      return size;
-    }
-
-  case _C_UNION_B:
-    {
-      int max_size = 0;
-      while (*type != _C_UNION_E && *type++ != '=')
-	/* do nothing */;
-      while (*type != _C_UNION_E)
-	{
-	  /* Skip the variable name if any */
-	  if (*type == '"')
-	    {
-	      for (type++; *type++ != '"';)
-		/* do nothing */;
-	    }
-	  max_size = MAX (max_size, objc_sizeof_type (type));
-	  type = objc_skip_typespec (type);
-	}
-      return max_size;
-    }
-  }
-  return 0; /* error */
-}
-
-
-/*
-  Return the alignment of an object specified by type
-*/
-
-int
-objc_alignof_type (const char *type)
-{
-  /* Skip the variable name if any */
-  if (*type == '"')
-    {
-      for (type++; *type++ != '"';)
-	/* do nothing */;
-    }
-  switch (*type) {
-  case _C_ID:
-    return __alignof__ (id);
-    break;
-
-  case _C_CLASS:
-    return __alignof__ (Class);
-    break;
-
-  case _C_SEL:
-    return __alignof__ (SEL);
-    break;
-
-  case _C_CHR:
-    return __alignof__ (char);
-    break;
-
-  case _C_UCHR:
-    return __alignof__ (unsigned char);
-    break;
-
-  case _C_SHT:
-    return __alignof__ (short);
-    break;
-
-  case _C_USHT:
-    return __alignof__ (unsigned short);
-    break;
-
-  case _C_INT:
-  case _C_BFLD: /* This is for the NeXT only */
-    return __alignof__ (int);
-    break;
-
-  case _C_UINT:
-    return __alignof__ (unsigned int);
-    break;
-
-  case _C_LNG:
-    return __alignof__ (long);
-    break;
-
-  case _C_ULNG:
-    return __alignof__ (unsigned long);
-    break;
-
-  case _C_LNG_LNG:
-    return __alignof__ (long long);
-    break;
-
-  case _C_ULNG_LNG:
-    return __alignof__ (unsigned long long);
-    break;
-
-  case _C_FLT:
-    return __alignof__ (float);
-    break;
-
-  case _C_DBL:
-    return __alignof__ (double);
-    break;
-
-  case _C_PTR:
-  case _C_ATOM:
-  case _C_CHARPTR:
-    return __alignof__ (char *);
-    break;
-
-  case _C_ARY_B:
-    while (isdigit ((unsigned char)*++type))
-      /* do nothing */;
-    return objc_alignof_type (type);
-
-  case _C_STRUCT_B:
-    {
-      struct objc_struct_layout layout;
-      unsigned int align;
-
-      objc_layout_structure (type, &layout);
-      while (objc_layout_structure_next_member (&layout))
-        /* do nothing */;
-      objc_layout_finish_structure (&layout, NULL, &align);
-
-      return align;
-    }
-
-  case _C_UNION_B:
-    {
-      int maxalign = 0;
-      while (*type != _C_UNION_E && *type++ != '=')
-	/* do nothing */;
-      while (*type != _C_UNION_E)
-	{
-	  /* Skip the variable name if any */
-	  if (*type == '"')
-	    {
-	      for (type++; *type++ != '"';)
-		/* do nothing */;
-	    }
-	  maxalign = MAX (maxalign, objc_alignof_type (type));
-	  type = objc_skip_typespec (type);
-	}
-      return maxalign;
-    }
-  }
-  return 0; /* error */
-}
-
-/*
-  The aligned size if the size rounded up to the nearest alignment.
-*/
-
-int
-objc_aligned_size (const char *type)
-{
-  int size, align;
-
-  /* Skip the variable name */
-  if (*type == '"')
-    {
-      for (type++; *type++ != '"';)
-	/* do nothing */;
-    }
-
-  size = objc_sizeof_type (type);
-  align = objc_alignof_type (type);
-
-  return ROUND (size, align);
-}
-
-/*
-  The size rounded up to the nearest integral of the wordsize, taken
-  to be the size of a void *.
-*/
-
-int
-objc_promoted_size (const char *type)
-{
-  int size, wordsize;
-
-  /* Skip the variable name */
-  if (*type == '"')
-    {
-      for (type++; *type++ != '"';)
-	/* do nothing */;
-    }
-
-  size = objc_sizeof_type (type);
-  wordsize = sizeof (void *);
-
-  return ROUND (size, wordsize);
-}
-
-/*
-  Skip type qualifiers.  These may eventually precede typespecs
-  occurring in method prototype encodings.
-*/
-
-inline const char *
-objc_skip_type_qualifiers (const char *type)
-{
-  while (*type == _C_CONST
-	 || *type == _C_IN
-	 || *type == _C_INOUT
-	 || *type == _C_OUT
-	 || *type == _C_BYCOPY
-         || *type == _C_BYREF
-	 || *type == _C_ONEWAY
-	 || *type == _C_GCINVISIBLE)
-    {
-      type += 1;
-    }
-  return type;
-}
-
-
-/*
-  Skip one typespec element.  If the typespec is prepended by type
-  qualifiers, these are skipped as well.
-*/
-
-const char *
-objc_skip_typespec (const char *type)
-{
-  /* Skip the variable name if any */
-  if (*type == '"')
-    {
-      for (type++; *type++ != '"';)
-	/* do nothing */;
-    }
-
-  type = objc_skip_type_qualifiers (type);
-
-  switch (*type) {
-
-  case _C_ID:
-    /* An id may be annotated by the actual type if it is known
-       with the @"ClassName" syntax */
-
-    if (*++type != '"')
-      return type;
-    else
-      {
-	while (*++type != '"')
-	  /* do nothing */;
-	return type + 1;
-      }
-
-    /* The following are one character type codes */
-  case _C_CLASS:
-  case _C_SEL:
-  case _C_CHR:
-  case _C_UCHR:
-  case _C_CHARPTR:
-  case _C_ATOM:
-  case _C_SHT:
-  case _C_USHT:
-  case _C_INT:
-  case _C_UINT:
-  case _C_LNG:
-  case _C_ULNG:
-  case _C_LNG_LNG:
-  case _C_ULNG_LNG:
-  case _C_FLT:
-  case _C_DBL:
-  case _C_VOID:
-  case _C_UNDEF:
-    return ++type;
-    break;
-
-  case _C_ARY_B:
-    /* skip digits, typespec and closing ']' */
-
-    while (isdigit ((unsigned char)*++type))
-      ;
-    type = objc_skip_typespec (type);
-    if (*type == _C_ARY_E)
-      return ++type;
-    else
-      break; /* error */
-
-  case _C_BFLD:
-      /* The NeXT encoding for bitfields is _still_: b 'size' */
-    while (isdigit ((unsigned char)*++type))
-      ;	/* skip type and size */
-    return type;
-
-  case _C_STRUCT_B:
-    /* skip name, and elements until closing '}'  */
-
-    while (*type != _C_STRUCT_E && *type++ != '=')
-      ;
-    while (*type != _C_STRUCT_E)
-      {
-	type = objc_skip_typespec (type);
-      }
-    return ++type;
-
-  case _C_UNION_B:
-    /* skip name, and elements until closing ')'  */
-
-    while (*type != _C_UNION_E && *type++ != '=')
-      ;
-    while (*type != _C_UNION_E)
-      {
-	type = objc_skip_typespec (type);
-      }
-    return ++type;
-
-  case _C_PTR:
-    /* Just skip the following typespec */
-
-    return objc_skip_typespec (++type);
-  }
-  return 0; /* error */
-}
-
-/*
-  Skip an offset as part of a method encoding.  This is prepended by a
-  '+' if the argument is passed in registers.
-*/
-inline const char *
-objc_skip_offset (const char *type)
-{
-  if (*type == '+')
-    type++;
-  while (isdigit ((unsigned char) *++type))
-    ;
-  return type;
-}
-
-/*
-  Skip an argument specification of a method encoding.
-*/
-const char *
-objc_skip_argspec (const char *type)
-{
-  type = objc_skip_typespec (type);
-  type = objc_skip_offset (type);
-  return type;
-}
-
-/*
-  Return the number of arguments that the method MTH expects.
-  Note that all methods need two implicit arguments `self' and
-  `_cmd'.
-*/
-int
-method_get_number_of_arguments (struct objc_method *mth)
-{
-  int i = 0;
-  const char *type = mth->method_types;
-  while (*type)
-    {
-      type = objc_skip_argspec (type);
-      i += 1;
-    }
-  return i - 1;
-}
-
-/*
-  Return the size of the argument block needed on the stack to invoke
-  the method MTH.  This may be zero, if all arguments are passed in
-  registers.
-*/
-
-int
-method_get_sizeof_arguments (struct objc_method *mth)
-{
-  const char *type = objc_skip_typespec (mth->method_types);
-  return atoi (type);
-}
-
-/*
-  Return a pointer to the next argument of ARGFRAME.  type points to
-  the last argument.  Typical use of this look like:
-
-  {
-    char *datum, *type;
-    for (datum = method_get_first_argument (method, argframe, &type);
-         datum; datum = method_get_next_argument (argframe, &type))
-      {
-        unsigned flags = objc_get_type_qualifiers (type);
-        type = objc_skip_type_qualifiers (type);
-	if (*type != _C_PTR)
-          [portal encodeData: datum ofType: type];
-	else
-	  {
-	    if ((flags & _F_IN) == _F_IN)
-              [portal encodeData: *(char **) datum ofType: ++type];
-	  }
-      }
-  }
-*/
-
-char *
-method_get_next_argument (arglist_t argframe, const char **type)
-{
-  const char *t = objc_skip_argspec (*type);
-
-  if (*t == '\0')
-    return 0;
-
-  *type = t;
-  t = objc_skip_typespec (t);
-
-  if (*t == '+')
-    return argframe->arg_regs + atoi (++t);
-  else
-    return argframe->arg_ptr + atoi (t);
-}
-
-/*
-  Return a pointer to the value of the first argument of the method
-  described in M with the given argumentframe ARGFRAME.  The type
-  is returned in TYPE.  type must be passed to successive calls of
-  method_get_next_argument.
-*/
-char *
-method_get_first_argument (struct objc_method *m,
-			   arglist_t argframe,
-			   const char **type)
-{
-  *type = m->method_types;
-  return method_get_next_argument (argframe, type);
-}
-
-/*
-   Return a pointer to the ARGth argument of the method
-   M from the frame ARGFRAME.  The type of the argument
-   is returned in the value-result argument TYPE
-*/
-
-char *
-method_get_nth_argument (struct objc_method *m,
-			 arglist_t argframe, int arg,
-			 const char **type)
-{
-  const char *t = objc_skip_argspec (m->method_types);
-
-  if (arg > method_get_number_of_arguments (m))
-    return 0;
-
-  while (arg--)
-    t = objc_skip_argspec (t);
-
-  *type = t;
-  t = objc_skip_typespec (t);
-
-  if (*t == '+')
-    return argframe->arg_regs + atoi (++t);
-  else
-    return argframe->arg_ptr + atoi (t);
-}
-
-unsigned
-objc_get_type_qualifiers (const char *type)
-{
-  unsigned res = 0;
-  BOOL flag = YES;
-
-  while (flag)
-    switch (*type++)
-      {
-      case _C_CONST:	res |= _F_CONST; break;
-      case _C_IN:	res |= _F_IN; break;
-      case _C_INOUT:	res |= _F_INOUT; break;
-      case _C_OUT:	res |= _F_OUT; break;
-      case _C_BYCOPY:	res |= _F_BYCOPY; break;
-      case _C_BYREF:  res |= _F_BYREF; break;
-      case _C_ONEWAY:	res |= _F_ONEWAY; break;
-      case _C_GCINVISIBLE: res |= _F_GCINVISIBLE; break;
-      default: flag = NO;
-    }
-
-  return res;
-}
-
-
-/* The following three functions can be used to determine how a
-   structure is laid out by the compiler. For example:
-
-  struct objc_struct_layout layout;
-  int i;
-
-  objc_layout_structure (type, &layout);
-  while (objc_layout_structure_next_member (&layout))
-    {
-      int position, align;
-      const char *type;
-
-      objc_layout_structure_get_info (&layout, &position, &align, &type);
-      printf ("element %d has offset %d, alignment %d\n",
-              i++, position, align);
-    }
-
-  These functions are used by objc_sizeof_type and objc_alignof_type
-  functions to compute the size and alignment of structures. The
-  previous method of computing the size and alignment of a structure
-  was not working on some architectures, particulary on AIX, and in
-  the presence of bitfields inside the structure. */
-void
-objc_layout_structure (const char *type,
-                           struct objc_struct_layout *layout)
-{
-  const char *ntype;
-
-  layout->original_type = ++type;
-
-  /* Skip "<name>=" if any. Avoid embedded structures and unions. */
-  ntype = type;
-  while (*ntype != _C_STRUCT_E && *ntype != _C_STRUCT_B && *ntype != _C_UNION_B
-         && *ntype++ != '=')
-    /* do nothing */;
-
-  /* If there's a "<name>=", ntype - 1 points to '='; skip the name */
-  if (*(ntype - 1) == '=')
-    type = ntype;
-
-  layout->type = type;
-  layout->prev_type = NULL;
-  layout->record_size = 0;
-  layout->record_align = MAX (BITS_PER_UNIT, STRUCTURE_SIZE_BOUNDARY);
-}
-
-
-BOOL
-objc_layout_structure_next_member (struct objc_struct_layout *layout)
-{
-  register int desired_align = 0;
-
-  /* The current type without the type qualifiers */
-  const char *type;
-
-  /* Add the size of the previous field to the size of the record.  */
-  if (layout->prev_type)
-    {
-      type = objc_skip_type_qualifiers (layout->prev_type);
-
-      if (*type != _C_BFLD)
-        layout->record_size += objc_sizeof_type (type) * BITS_PER_UNIT;
-      else
-	layout->record_size += atoi (++type);
-    }
-
-  if (*layout->type == _C_STRUCT_E)
-    return NO;
-
-  /* Skip the variable name if any */
-  if (*layout->type == '"')
-    {
-      for (layout->type++; *layout->type++ != '"';)
-        /* do nothing */;
-    }
-
-  type = objc_skip_type_qualifiers (layout->type);
-
-  desired_align = objc_alignof_type (type) * BITS_PER_UNIT;
-
-  /* Record must have at least as much alignment as any field.
-     Otherwise, the alignment of the field within the record
-     is meaningless.  */
-  layout->record_align = MAX (layout->record_align, desired_align);
-
-  if (*type == _C_BFLD)
-    {
-      int bfld_size = atoi (++type);
-      int int_align = __alignof__ (int) * BITS_PER_UNIT;
-      /* If this bitfield would traverse a word alignment boundary, push it out 
-	 to that boundary instead.  */
-      if (layout->record_size % int_align
-	  && (layout->record_size / int_align
-	      < (layout->record_size + bfld_size - 1) / int_align))
-	layout->record_size = ROUND (layout->record_size, int_align);
-    }
-  else if (layout->record_size % desired_align != 0)
-    {
-      /* We need to skip space before this field.
-         Bump the cumulative size to multiple of field alignment.  */
-      layout->record_size = ROUND (layout->record_size, desired_align);
-    }
-
-  /* Jump to the next field in record. */
-
-  layout->prev_type = layout->type;
-  layout->type = objc_skip_typespec (layout->type);      /* skip component */
-
-  return YES;
-}
-
-
-void objc_layout_finish_structure (struct objc_struct_layout *layout,
-                                   unsigned int *size,
-                                   unsigned int *align)
-{
-  if (layout->type && *layout->type == _C_STRUCT_E)
-    {
-      /* Round the size up to be a multiple of the required alignment */
-      layout->record_size = ROUND (layout->record_size, layout->record_align);
-      layout->type = NULL;
-    }
-  if (size)
-    *size = layout->record_size / BITS_PER_UNIT;
-  if (align)
-    *align = layout->record_align / BITS_PER_UNIT;
-}
-
-
-void objc_layout_structure_get_info (struct objc_struct_layout *layout,
-                                     unsigned int *offset,
-                                     unsigned int *align,
-                                     const char **type)
-{
-  if (offset)
-    *offset = layout->record_size / BITS_PER_UNIT;
-  if (align)
-    *align = layout->record_align / BITS_PER_UNIT;
-  if (type)
-    *type = layout->prev_type;
-}
-
-/* A small, portable NSConstantString implementation for use with the NeXT
-   runtime.
-   
-   On full-fledged Mac OS X systems, NSConstantString is provided
-   as part of the Foundation framework.  However, on bare Darwin systems,
-   Foundation is not included, and hence there is no NSConstantString 
-   implementation to link against.
-
-   This code is derived from the GNU runtime's NXConstantString implementation.
-*/
-
-struct objc_class _NSConstantStringClassReference;
-
-@interface NSConstantString : Object
-{
-  char *c_string;
-  unsigned int len;
-}
-
--(const char *) cString;
--(unsigned int) length;
-
-@end
-
-@implementation NSConstantString
-
--(const char *) cString
-{
-  return (c_string);
-}
-
--(unsigned int) length
-{
-  return (len);
-}
-
-@end
-
-/* The NSConstantString metaclass will need to be initialized before we can
-   send messages to strings.  */
-
-void objc_constant_string_init (void) __attribute__((constructor));
-void objc_constant_string_init (void) {
-  memcpy (&_NSConstantStringClassReference,
-	  objc_getClass ("NSConstantString"),
-	  sizeof (_NSConstantStringClassReference));
-}
-
-#endif  /* #ifdef __NEXT_RUNTIME__ */
Index: objc/execute/no_clash.m
===================================================================
--- objc/execute/no_clash.m	(revision 174696)
+++ objc/execute/no_clash.m	(working copy)
@@ -1,11 +1,11 @@
 /* Contributed by Nicola Pero - Fri Mar  9 19:39:15 CET 2001 */
-#import "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 #import <objc/objc.h>
 
 /* Test that using the same name for different things makes no 
    problem */
 
-@interface TestClass : Object
+@interface TestClass : TestsuiteObject
 {
   int test;
 }
@@ -39,4 +39,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/object_is_meta_class.m
===================================================================
--- objc/execute/object_is_meta_class.m	(revision 174696)
+++ objc/execute/object_is_meta_class.m	(working copy)
@@ -1,14 +1,11 @@
 /* Contributed by Nicola Pero - Tue Jul  3 10:55:21 BST 2001 */
-#ifdef __NEXT_RUNTIME__
-#  include "../../objc-obj-c++-shared/next-mapping.h"
-#else
-#  include <objc/objc-api.h>
-#endif
-#include "../../objc-obj-c++-shared/Object1.h"
 
+#include "../../objc-obj-c++-shared/runtime.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
+
 /* This test demonstrate a failure in object_is_meta_class which was fixed */
 
-@interface EvilClass : Object
+@interface EvilClass : TestsuiteObject
 {
   Class super_class;
   const char* name;
@@ -33,7 +30,8 @@ int main (void)
   EvilClass *evilObject = [EvilClass new];
   
   /* Now check that the object is not a meta class object */
-  if (object_is_meta_class (evilObject))
+  if (class_isMetaClass (object_getClass (evilObject))
+      && class_isMetaClass (evilObject))
     {
       printf ("object_is_meta_class failed\n");
       abort ();
@@ -41,4 +39,4 @@ int main (void)
 
   return 0;
 }
-#include "../../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc/execute/class-tests-2.h
===================================================================
--- objc/execute/class-tests-2.h	(revision 174696)
+++ objc/execute/class-tests-2.h	(working copy)
@@ -1,8 +1,7 @@
 /* Contributed by Nicola Pero on Tue Mar  6 23:05:53 CET 2001 */
-#include <objc/objc.h>
-#include <objc/objc-api.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include "../../objc-obj-c++-shared/runtime.h"
 
 /*
  * Standard Tests For Methods of Classes and Objects - abort upon
@@ -13,9 +12,9 @@
 void test_that_class_has_instance_method (const char *class_name, 
 					  SEL selector)
 {
-  Class class = objc_lookup_class (class_name);
+  Class class = objc_getClass (class_name);
 
-  if (class_get_instance_method (class, selector) == NULL)
+  if (class_getInstanceMethod (class, selector) == NULL)
     {
       printf ("test_class_has_instance_method failed\n");
       abort ();
@@ -26,9 +25,9 @@ void test_that_class_has_instance_method (const ch
 void test_that_class_has_class_method (const char *class_name, 
 				       SEL selector)
 {
-  Class meta_class = objc_get_meta_class (class_name);
+  Class class = objc_getClass (class_name);
 
-  if (class_get_class_method (meta_class, selector) == NULL)
+  if (class_getClassMethod (class, selector) == NULL)
     {
       printf ("test_class_has_class_method failed\n");
       abort ();
Index: objc/execute/protocol-isEqual-2.m
===================================================================
--- objc/execute/protocol-isEqual-2.m	(revision 174696)
+++ objc/execute/protocol-isEqual-2.m	(working copy)
@@ -1,8 +1,8 @@
 /* Contributed by Nicola Pero - Fri Jun  4 03:16:17 BST 2004 */
 /* Test that protocols with different names are different.  */
+#include "../../objc-obj-c++-shared/runtime.h"
+#include <objc/Protocol.h>
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
-
 @protocol Foo1
 - (void)foo1;
 @end
@@ -13,11 +13,7 @@
 
 int main (void)
 {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   if (protocol_isEqual (@protocol(Foo1), @protocol(Foo2)))
-#else
-  if ([@protocol(Foo1) isEqual: @protocol(Foo2)])
-#endif
     {
       abort ();
     }
Index: objc/execute/protocol-isEqual-4.m
===================================================================
--- objc/execute/protocol-isEqual-4.m	(revision 174696)
+++ objc/execute/protocol-isEqual-4.m	(working copy)
@@ -1,8 +1,8 @@
 /* Contributed by David Ayers - Fri Jun  4 03:16:17 BST 2004 */
 /* Test that a protocol is not equal to something which is not a protocol.  */
+#include "../../objc-obj-c++-shared/runtime.h"
+#include <objc/Protocol.h>
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
-
 @protocol Foo
 - (void)foo;
 @end
@@ -10,11 +10,7 @@
 int main (void)
 {
   /* A Protocol object should not be equal to a Class object.  */
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  if (protocol_isEqual (@protocol(Foo), objc_getClass("Protocol")))
-#else
-  if ([@protocol(Foo) isEqual: [Protocol class]])
-#endif
+  if (protocol_isEqual (@protocol(Foo), (id)objc_getClass("Protocol")))
     {
       abort ();
     }
Index: objc/execute/va_method.m
===================================================================
--- objc/execute/va_method.m	(revision 174696)
+++ objc/execute/va_method.m	(working copy)
@@ -1,6 +1,5 @@
 /* Contributed by Nicola Pero - Thu Mar  8 16:27:46 CET 2001 */
 #include <objc/objc.h>
-#include <objc/objc-api.h>
 #include <stdarg.h>
 
 /* Test method with variable number of arguments */
@@ -32,9 +31,7 @@
 
   return sum;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 int main (void)
Index: objc/execute/cascading-1.m
===================================================================
--- objc/execute/cascading-1.m	(revision 174696)
+++ objc/execute/cascading-1.m	(working copy)
@@ -1,7 +1,7 @@
 #include <stdlib.h>
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface Foo : Object
+@interface Foo : TestsuiteObject
 + foo;
 + bar;
 @end
Index: objc/execute/trivial.m
===================================================================
--- objc/execute/trivial.m	(revision 174696)
+++ objc/execute/trivial.m	(working copy)
@@ -1,9 +1,8 @@
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 int main(void)
 {
-  [Object class];
+  [TestsuiteObject class];
   return 0;
 }
 
-#import "../../objc-obj-c++-shared/Object1-implementation.h"
Index: objc/execute/np-1.m
===================================================================
--- objc/execute/np-1.m	(revision 174696)
+++ objc/execute/np-1.m	(working copy)
@@ -3,7 +3,6 @@
  * Tue Sep 19 4:29AM
  */
 
-#include "../../objc-obj-c++-shared/Protocol1.h"
 #include <objc/objc.h>
 
 @protocol MyProtocol
@@ -25,7 +24,7 @@ int main (void)
 
   [object methodA];
 
-   exit (0);
+  return 0;
 }
 
 
Index: objc/execute/class_self-2.m
===================================================================
--- objc/execute/class_self-2.m	(revision 174696)
+++ objc/execute/class_self-2.m	(working copy)
@@ -33,9 +33,7 @@ struct d
   
   return u;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 /* The second class */
@@ -58,9 +56,7 @@ struct d
     }
 }
 
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 
Index: objc/execute/nil_method-1.m
===================================================================
--- objc/execute/nil_method-1.m	(revision 174696)
+++ objc/execute/nil_method-1.m	(working copy)
@@ -1,12 +1,12 @@
 /* Contributed by Nicola Pero - Fri Aug 30 12:55:37 2002 */ 
 #include <objc/objc.h>
-#include <objc/Object.h>
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 /* Test that calling a method of a nil object results in
    nothing to happen (but not a crash), and nil to be
    returned.  */
 
-@interface TestClass : Object
+@interface TestClass : TestsuiteObject
 
 - (void) testVoid;
 - (id) testId;
Index: objc/compile/trivial.m
===================================================================
--- objc/compile/trivial.m	(revision 174696)
+++ objc/compile/trivial.m	(working copy)
@@ -1,6 +1,6 @@
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.h"
 
 int main(void)
 {
-  [Object class];
+  [TestsuiteObject class];
 }
Index: objc.dg/desig-init-1.m
===================================================================
--- objc.dg/desig-init-1.m	(revision 174696)
+++ objc.dg/desig-init-1.m	(working copy)
@@ -5,11 +5,11 @@
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdio.h> 
 #include <stdlib.h>
 
-@interface Cls : Object
+@interface Cls : TestsuiteObject
 + (int) meth1;
 + (int) meth2;
 + (void) doTests;
@@ -48,4 +48,4 @@ int main(void) {
 /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 0 } */
 /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 0 } */
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc.dg/try-catch-6.m
===================================================================
--- objc.dg/try-catch-6.m	(revision 174696)
+++ objc.dg/try-catch-6.m	(working copy)
@@ -1,10 +1,10 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 int main (int argc, const char * argv[]) {
-  Object * pool = [Object new];
+  TestsuiteObject * pool = [TestsuiteObject new];
   int a;
 
   if ( 1 ) {
@@ -12,7 +12,7 @@ int main (int argc, const char * argv[]) {
     @try {
       a = 1;
     }
-    @catch (Object *e) {
+    @catch (TestsuiteObject *e) {
       a = 2;
     }
     @finally {
Index: objc.dg/super-class-4.m
===================================================================
--- objc.dg/super-class-4.m	(revision 174696)
+++ objc.dg/super-class-4.m	(working copy)
@@ -3,11 +3,11 @@
    should be traversed to find the @interface.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class MyWpModule;
 
-@compatibility_alias MyObject Object;
+@compatibility_alias MyObject TestsuiteObject;
 @compatibility_alias FictitiousModule MyWpModule;
 
 @protocol MySelTarget
Index: objc.dg/foreach-1.m
===================================================================
--- objc.dg/foreach-1.m	(revision 174696)
+++ objc.dg/foreach-1.m	(working copy)
@@ -4,10 +4,9 @@
 /* { dg-do run } */
 /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
 /* { dg-options "-Wall" } */
 
-#import "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort (void);
 /*
@@ -19,7 +18,7 @@ struct __objcFastEnumerationState
   unsigned long extra[5];
 };
 */
-@interface Object (NSFastEnumeration)
+@interface TestsuiteObject (NSFastEnumeration)
 - (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
                                      objects:(id *)stackbuf 
                                        count:(unsigned int)len;
@@ -44,7 +43,7 @@ int main (void)
     abort ();
 
   /* Test that if nothing is done, object is set to nil.  */
-  object = [Object new];
+  object = [TestsuiteObject new];
 
   for (object in array)
     ;
Index: objc.dg/comp-types-8.m
===================================================================
--- objc.dg/comp-types-8.m	(revision 174696)
+++ objc.dg/comp-types-8.m	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 /* Another gimplifier ICE... */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface MyView: Object {
+@interface MyView: TestsuiteObject {
   int _frame;
 }
 - (void)_finalize;
Index: objc.dg/call-super-2.m
===================================================================
--- objc.dg/call-super-2.m	(revision 174696)
+++ objc.dg/call-super-2.m	(working copy)
@@ -2,16 +2,24 @@
 /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include "../objc-obj-c++-shared/runtime.h"
 #include <stddef.h>
 
+/* FIXME: This is temporary.  At the moment, the compiler, when
+   compiling for the GNU runtime and doing method checks, only
+   recognizes objc_get_class(), and not objc_getClass().  So
+   temporarily force objc_get_class() to be used.  */
+#ifndef __NEXT_RUNTIME__
+# define objc_getClass(C) objc_get_class(C)
+#endif
+
 @protocol Func
 + (int) class_func0;
 - (int) instance_func0;
 @end
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 + (int) class_func1;
 + (int) class_func2;
 + (int) class_func3;
@@ -39,7 +47,7 @@
 + (int) class_func1
 {
    int i = (size_t)[self class_func0];       /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
-   return i + (size_t)[super class_func0];   /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+   return i + (size_t)[super class_func0];   /* { dg-warning ".TestsuiteObject. may not respond to .\\+class_func0." } */
 }
 + (int) class_func2
 {
@@ -50,7 +58,7 @@
 }
 + (int) class_func3
 {
-   return [(Object <Func> *)super class_func0];
+   return [(TestsuiteObject <Func> *)super class_func0];
 }
 + (int) class_func4
 {
@@ -59,20 +67,20 @@
 + (int) class_func5
 {
    int i = (size_t)[Derived class_func0];    /* { dg-warning ".Derived. may not respond to .\\+class_func0." } */
-   return i + (size_t)[Object class_func0];  /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+   return i + (size_t)[TestsuiteObject class_func0];  /* { dg-warning ".TestsuiteObject. may not respond to .\\+class_func0." } */
 }
 + (int) class_func6
 {
-   return (size_t)[objc_get_class("Object") class_func1];  /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+   return (size_t)[objc_getClass("TestsuiteObject") class_func1];  /* { dg-warning ".TestsuiteObject. may not respond to .\\+class_func1." } */
 }
 + (int) class_func7
 {
-   return [objc_get_class("Derived") class_func1];
+   return [objc_getClass("Derived") class_func1];
 }
 - (int) instance_func1
 {
    int i = (size_t)[self instance_func0];     /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
-   return i + (size_t)[super instance_func0]; /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
+   return i + (size_t)[super instance_func0]; /* { dg-warning ".TestsuiteObject. may not respond to .\\-instance_func0." } */
 }
 - (int) instance_func2
 {
@@ -80,7 +88,7 @@
 }
 - (int) instance_func3
 {
-   return [(Object <Func> *)super instance_func0];
+   return [(TestsuiteObject <Func> *)super instance_func0];
 }
 - (int) instance_func4
 {
@@ -89,15 +97,15 @@
 - (int) instance_func5
 {
    int i = (size_t)[Derived instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+instance_func1." } */
-   return i + (size_t)[Object instance_func1]; /* { dg-warning ".Object. may not respond to .\\+instance_func1." } */
+   return i + (size_t)[TestsuiteObject instance_func1]; /* { dg-warning ".TestsuiteObject. may not respond to .\\+instance_func1." } */
 }
 - (int) instance_func6
 {
-   return (size_t)[objc_get_class("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+   return (size_t)[objc_getClass("TestsuiteObject") class_func1]; /* { dg-warning ".TestsuiteObject. may not respond to .\\+class_func1." } */
 }
 - (int) instance_func7
 {
-   return [objc_get_class("Derived") class_func1];
+   return [objc_getClass("Derived") class_func1];
 }
 @end
 
@@ -108,7 +116,7 @@
    i += [self class_func1];
    i += [self categ_class_func2];
    i += (size_t)[self categ_instance_func1]; /* { dg-warning ".Derived. may not respond to .\\+categ_instance_func1." } */
-   return i + (size_t)[super class_func0];   /* { dg-warning ".Object. may not respond to .\\+class_func0." } */
+   return i + (size_t)[super class_func0];   /* { dg-warning ".TestsuiteObject. may not respond to .\\+class_func0." } */
 }
 + (int) categ_class_func2
 {
@@ -121,11 +129,11 @@
 {
    int i = (size_t)[self instance_func0];    /* { dg-warning ".Derived. may not respond to .\\-instance_func0." } */
    i += [(Derived <Func> *)self categ_instance_func2];
-   i += (size_t)[(Object <Func> *)self categ_instance_func2]; /* { dg-warning ".Object. may not respond to .\\-categ_instance_func2." } */
-   /* { dg-warning ".\\-categ_instance_func2. not found in protocol" "" { target *-*-* } 124 } */
+   i += (size_t)[(TestsuiteObject <Func> *)self categ_instance_func2]; /* { dg-warning ".TestsuiteObject. may not respond to .\\-categ_instance_func2." } */
+   /* { dg-warning ".\\-categ_instance_func2. not found in protocol" "" { target *-*-* } 132 } */
    i += (size_t)[(id <Func>)self categ_instance_func2];  /* { dg-warning ".\\-categ_instance_func2. not found in protocol" } */
    i += [(id)self categ_instance_func2];
-   return i + (size_t)[super instance_func0];   /* { dg-warning ".Object. may not respond to .\\-instance_func0." } */
+   return i + (size_t)[super instance_func0];   /* { dg-warning ".TestsuiteObject. may not respond to .\\-instance_func0." } */
 }
 - (int) categ_instance_func2
 {
Index: objc.dg/objc-fast-4.m
===================================================================
--- objc.dg/objc-fast-4.m	(revision 174696)
+++ objc.dg/objc-fast-4.m	(working copy)
@@ -3,10 +3,10 @@
 /* { dg-options "-O0" } */
 /* Radar 4015820 */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 void foo(void) {
-  Object *o;
+  TestsuiteObject *o;
   [o++ free];
 }
 /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */
Index: objc.dg/method-6.m
===================================================================
--- objc.dg/method-6.m	(revision 174696)
+++ objc.dg/method-6.m	(working copy)
@@ -4,7 +4,7 @@
 /* { dg-do compile } */
 /* { dg-options "-Wstrict-selector-match" } */
 
-#include "../objc-obj-c++-shared/Protocol1.h"
+#include <objc/Protocol.h>
 
 @interface Base
 - (unsigned)port;
Index: objc.dg/set-not-used-1.m
===================================================================
--- objc.dg/set-not-used-1.m	(revision 174696)
+++ objc.dg/set-not-used-1.m	(working copy)
@@ -2,10 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-Wunused-but-set-variable" } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#include <objc/objc-api.h>
+#import "../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface obj : Object
+@interface obj : TestsuiteObject
 {
   int value;
 }
@@ -13,7 +12,7 @@
 - (void) setValue: (int)number;
 @end
 
-@implementation obj : Object
+@implementation obj : TestsuiteObject
 
 - (int) value { return value; }
 - (void) setValue: (int)number { value = number; }
Index: objc.dg/method-20b.m
===================================================================
--- objc.dg/method-20b.m	(revision 174696)
+++ objc.dg/method-20b.m	(working copy)
@@ -2,10 +2,9 @@
    they should.  */
 /* { dg-do run } */
 /* { dg-options "-O2" } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <string.h>
 #include <stdlib.h>
 
@@ -19,7 +18,7 @@ char *strcpy_like_callee(const char *s) {
 typedef char io_string_t[512];
 typedef char *(func_type)(const char *);
 
-@interface DeviceObject: Object
+@interface DeviceObject: TestsuiteObject
 - (void) func:(func_type)func stucPathInIORegistry:(io_string_t)ioRegPath;
 @end
 @implementation DeviceObject
Index: objc.dg/method-15.m
===================================================================
--- objc.dg/method-15.m	(revision 174696)
+++ objc.dg/method-15.m	(working copy)
@@ -4,7 +4,9 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
 @class NSString;
 
@@ -13,19 +15,19 @@
 + (BOOL)usesUserKeyEquivalents;
 @end
 
-@interface NSMenuItem : Object <NSMenuItem> {
+@interface NSMenuItem : TestsuiteObject <NSMenuItem> {
   @private
   id _menu;
 }
 @end
 
-@interface NSResponder : Object <NSMenuItem>
+@interface NSResponder : TestsuiteObject <NSMenuItem>
 {
   id _nextResponder;
 }
 @end
 
-@interface Object(NSMenuValidation)
+@interface TestsuiteObject(NSMenuValidation)
 - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
 @end
 
Index: objc.dg/gnu-runtime-3.m
===================================================================
--- objc.dg/gnu-runtime-3.m	(revision 174696)
+++ objc.dg/gnu-runtime-3.m	(working copy)
@@ -3,12 +3,12 @@
 /* { dg-do run } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <string.h>
 #include <stdlib.h>
 
 int main(int argc, void **args)
 {
-  [Object new];
+  [TestsuiteObject new];
   return 0;
 }
Index: objc.dg/exceptions-2.m
===================================================================
--- objc.dg/exceptions-2.m	(revision 174696)
+++ objc.dg/exceptions-2.m	(working copy)
@@ -2,15 +2,14 @@
 /* { dg-do run } */
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
 
 /* This test checks the syntax @catch (...) which catches any
    exceptions.  Check that code using it runs correctly.  */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
-@interface MyObject : Object
+@interface MyObject : TestsuiteObject
 @end
 
 @implementation MyObject
@@ -45,7 +44,7 @@ int main (void)
   if (test ([MyObject new]) != 5)
     abort ();
 
-  if (test ([Object new]) != 6)
+  if (test ([TestsuiteObject new]) != 6)
     abort ();
 
   return 0;
Index: objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
===================================================================
--- objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c	(revision 174696)
+++ objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c	(working copy)
@@ -261,7 +261,7 @@ switchfiles (int fields)
 /* { dg-do run } */\n\
 /* { dg-options \"-w -I%s -fgnu-runtime\" } */\n", srcdir);
     }
-  fprintf(outfile, "#include <objc/encoding.h> \n\
+  fprintf(outfile, "#include <objc/runtime.h> \n\
 #include \"struct-layout-1.h\"\n\
 \n\
 int fails; \n\
Index: objc.dg/encode-7.m
===================================================================
--- objc.dg/encode-7.m	(revision 174696)
+++ objc.dg/encode-7.m	(working copy)
@@ -1,7 +1,7 @@
 /* { dg-do run } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/encoding.h>
+#include <objc/runtime.h>
 #include <stdlib.h>
 
 struct f
Index: objc.dg/try-catch-7.m
===================================================================
--- objc.dg/try-catch-7.m	(revision 174696)
+++ objc.dg/try-catch-7.m	(working copy)
@@ -3,9 +3,9 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 - (id) meth;
 @end
 
Index: objc.dg/foreach-2.m
===================================================================
--- objc.dg/foreach-2.m	(revision 174696)
+++ objc.dg/foreach-2.m	(working copy)
@@ -5,10 +5,9 @@
 /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m ../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
+/* { dg-additional-sources "../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #else
@@ -32,7 +31,7 @@ struct __objcFastEnumerationState
     enumeration.  You create the array with some objects; you can
     mutate the array, and you can fast-enumerate it.
  */
-@interface MyArray : Object
+@interface MyArray : TestsuiteObject
 {
   unsigned int length;
   id *objects;
@@ -45,7 +44,7 @@ struct __objcFastEnumerationState
                                        count:(unsigned long)len;
 @end
 
-@implementation MyArray : Object
+@implementation MyArray : TestsuiteObject
 - (id) initWithLength: (unsigned int)l
 	      objects: (id *)o
 {
@@ -90,7 +89,7 @@ struct __objcFastEnumerationState
 int main (void)
 {
   MyArray *array;
-  Object *object;
+  TestsuiteObject *object;
   int test_variable, counter, i;
   id *objects;
 
Index: objc.dg/call-super-3.m
===================================================================
--- objc.dg/call-super-3.m	(revision 174696)
+++ objc.dg/call-super-3.m	(working copy)
@@ -5,12 +5,12 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Base: Object
+@interface Base: TestsuiteObject
 + (int) class_func1;
 - (int) instance_func1;
 @end
@@ -54,4 +54,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/comp-types-10.m
===================================================================
--- objc.dg/comp-types-10.m	(revision 174696)
+++ objc.dg/comp-types-10.m	(working copy)
@@ -1,22 +1,22 @@
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol Foo
 - (id)meth1;
 - (id)meth2:(int)arg;
 @end
 
-@interface Derived1: Object
+@interface Derived1: TestsuiteObject
 @end
 
-@interface Derived2: Object
+@interface Derived2: TestsuiteObject
 + (Derived1 *)new;
 @end
 
 id<Foo> func(void) {
-  Object *o = [Object new];
-  return o;  /* { dg-warning "class .Object. does not implement the .Foo. protocol" } */
+  TestsuiteObject *o = [TestsuiteObject new];
+  return o;  /* { dg-warning "class .TestsuiteObject. does not implement the .Foo. protocol" } */
 }
 
 @implementation Derived2
Index: objc.dg/selector-2.m
===================================================================
--- objc.dg/selector-2.m	(revision 174696)
+++ objc.dg/selector-2.m	(working copy)
@@ -2,7 +2,7 @@
 /* { dg-options "-Wselector" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/objc.h>
 
 @interface Foo
 @end
Index: objc.dg/method-7.m
===================================================================
--- objc.dg/method-7.m	(revision 174696)
+++ objc.dg/method-7.m	(working copy)
@@ -3,11 +3,11 @@
 /* { dg-do compile } */
 /* { dg-options "-Wstrict-selector-match" } */
 
+#include <objc/objc.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-#include "../objc-obj-c++-shared/Object1.h"
-
 @interface Class1
-- (void)setWindow:(Object *)wdw;
+- (void)setWindow:(TestsuiteObject *)wdw;
 @end
 
 @interface Class2
@@ -15,14 +15,14 @@
 @end
 
 id foo(void) {
-  Object *obj = [[Object alloc] init];
+  TestsuiteObject *obj = [[TestsuiteObject alloc] init];
   id obj2 = obj;
-  [obj setWindow:nil];  /* { dg-warning ".Object. may not respond to .\\-setWindow:." } */
+  [obj setWindow:nil];  /* { dg-warning ".TestsuiteObject. may not respond to .\\-setWindow:." } */
   /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 20 } */
   /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 20 } */
   /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 20 } */
   [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
-  /* { dg-message "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 10 } */
+  /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } 10 } */
   /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 14 } */
 
   return obj;
Index: objc.dg/objc-gc-4.m
===================================================================
--- objc.dg/objc-gc-4.m	(revision 174696)
+++ objc.dg/objc-gc-4.m	(working copy)
@@ -6,11 +6,12 @@
 /* { dg-options "-fobjc-gc" } */
 /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
 
 @class MyWindow;
 
-@interface MyDocument : Object {
+@interface MyDocument : TestsuiteObject {
     MyWindow *_window;
 }
 @end
@@ -29,7 +30,7 @@
 @end
 
 @interface MyTextFileDocument : MyFileDocument {
-    Object *_textStorage;
+    TestsuiteObject *_textStorage;
     struct __tfdFlags {
         unsigned int immutable:1;
         unsigned int lineEnding:2;
Index: objc.dg/encode-7-next.m
===================================================================
--- objc.dg/encode-7-next.m	(revision 174696)
+++ objc.dg/encode-7-next.m	(working copy)
@@ -6,8 +6,8 @@
 /* { dg-options "-Wno-deprecated-declarations" } */
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 #include <stdbool.h>
 #include <string.h>
 #include <stdlib.h>
@@ -99,10 +99,10 @@ typedef struct {
   unsigned int parameterMask;
 } NSErrorUserInfoFormatter;
 
-typedef Object MyObj;
-typedef Object *MyPtr;
+typedef TestsuiteObject MyObj;
+typedef TestsuiteObject *MyPtr;
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   NSATSGlyphStorageRun r;
 }
 - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2
@@ -114,7 +114,7 @@ typedef struct {
 - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4;
 - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4;
 - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1;
-- (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3;
+- (inout id)obj1:(const MyPtr)obj1 obj2:(TestsuiteObject *const)obj2 obj3:(MyObj *const)obj3;
 + (ComponentInstance)_defaultScriptingComponent;
 - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters 
   applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters;
@@ -156,7 +156,7 @@ NSRange globalRange;
 - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1 {
   return "Hello";
 }  
-- (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3 {
+- (inout id)obj1:(const MyPtr)obj1 obj2:(TestsuiteObject *const)obj2 obj3:(MyObj *const)obj3 {
   return self;
 }
 + (ComponentInstance)_defaultScriptingComponent {
@@ -222,7 +222,7 @@ int main(void) {
   CHECK_IF (!strcmp (meth->method_types, "rn*16@0:4r:8r@12"));
 
   meth = class_getInstanceMethod (fooClass, @selector(obj1:obj2:obj3:));
-  CHECK_IF (!strcmp (meth->method_types, "N@20@0:4r@8@12^{Object=#}16"));
+  CHECK_IF (!strcmp (meth->method_types, "N@20@0:4r@8@12^{TestsuiteObject=#}16"));
 
   meth = class_getClassMethod (fooClass, @selector(_defaultScriptingComponent));
   CHECK_IF (!strcmp (meth->method_types, "^{ComponentInstanceRecord=[1l]}8@0:4"));
Index: objc.dg/attributes/method-attribute-1.m
===================================================================
--- objc.dg/attributes/method-attribute-1.m	(revision 174696)
+++ objc.dg/attributes/method-attribute-1.m	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var; 
 } 
Index: objc.dg/attributes/method-attribute-2.m
===================================================================
--- objc.dg/attributes/method-attribute-2.m	(revision 174696)
+++ objc.dg/attributes/method-attribute-2.m	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var; 
 } 
Index: objc.dg/attributes/method-attribute-3.m
===================================================================
--- objc.dg/attributes/method-attribute-3.m	(revision 174696)
+++ objc.dg/attributes/method-attribute-3.m	(working copy)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */
 
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var;
 }
Index: objc.dg/attributes/categ-attribute-1.m
===================================================================
--- objc.dg/attributes/categ-attribute-1.m	(revision 174696)
+++ objc.dg/attributes/categ-attribute-1.m	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object { 
+@interface obj : TestsuiteObject { 
 @public 
   int var; 
 } 
Index: objc.dg/attributes/categ-attribute-2.m
===================================================================
--- objc.dg/attributes/categ-attribute-2.m	(revision 174696)
+++ objc.dg/attributes/categ-attribute-2.m	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object { 
+@interface obj : TestsuiteObject { 
 @public 
   int var; 
 } 
Index: objc.dg/strings/strings-1.m
===================================================================
--- objc.dg/strings/strings-1.m	(revision 174696)
+++ objc.dg/strings/strings-1.m	(working copy)
@@ -1,8 +1,7 @@
 /* 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/runtime.h"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #endif
@@ -30,4 +29,4 @@ id test_invalid7          = @"te" @"s" @@"t";    /
 id test_invalid8          = @"te" @@"s" @"t";    /* { dg-error "repeated .@. before Objective-C string" } */
 id test_invalid9          = @"te" @"s" @"t" @;   /* { dg-error "stray .@. in program" } */
 id test_invalidA          = @"te" @ st;          /* { dg-error "stray .@. in program" } */
-                                                 /* { dg-error "expected" "" { target *-*-* } 32 } */
+                                                 /* { dg-error "expected" "" { target *-*-* } 31 } */
Index: objc.dg/encode-8.m
===================================================================
--- objc.dg/encode-8.m	(revision 174696)
+++ objc.dg/encode-8.m	(working copy)
@@ -1,7 +1,7 @@
 /* { dg-do run } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/encoding.h>
+#include <objc/runtime.h>
 #include <stdlib.h>
 
 union f
Index: objc.dg/encode-7-next-64bit.m
===================================================================
--- objc.dg/encode-7-next-64bit.m	(revision 174696)
+++ objc.dg/encode-7-next-64bit.m	(working copy)
@@ -9,7 +9,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <objc/Object.h>
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/runtime.h"
 
 #define CHECK_IF(E) if (!(E)) abort ()
 
Index: objc.dg/fix-and-continue-1.m
===================================================================
--- objc.dg/fix-and-continue-1.m	(revision 174696)
+++ objc.dg/fix-and-continue-1.m	(working copy)
@@ -6,14 +6,14 @@
 /* { dg-options "-mfix-and-continue" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 @class MyTarget, MySet;
 
 int global_value = 0;
 
-@interface MyTargetBuildContext : Object
+@interface MyTargetBuildContext : TestsuiteObject
 {
   MyTarget * _target;
   unsigned _cacheInvalDisableCount;
@@ -31,7 +31,7 @@ int global_value = 0;
 + (MySet *)_headerFileExtensions;
 @end
 
-@interface MyCountedSet: Object {
+@interface MyCountedSet: TestsuiteObject {
 @public
   int cardinality;
 }
@@ -52,7 +52,7 @@ int global_value = 0;
 }  
 @end
 
-@implementation MyTargetBuildContext : Object
+@implementation MyTargetBuildContext : TestsuiteObject
 - (id)initWithTarget:(MyTarget *)target
 {
   self = [super init];
@@ -90,4 +90,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/foreach-3.m
===================================================================
--- objc.dg/foreach-3.m	(revision 174696)
+++ objc.dg/foreach-3.m	(working copy)
@@ -7,8 +7,7 @@
    works, but how do we tell the testsuite to test for it ?
 */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#import "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #endif
@@ -30,7 +29,7 @@ struct __objcFastEnumerationState
     enumeration.  You create the array with some objects; you can
     mutate the array, and you can fast-enumerate it.
  */
-@interface MyArray : Object
+@interface MyArray : TestsuiteObject
 {
   unsigned int length;
   id *objects;
@@ -43,7 +42,7 @@ struct __objcFastEnumerationState
                                        count:(unsigned long)len;
 @end
 
-@implementation MyArray : Object
+@implementation MyArray : TestsuiteObject
 - (id) initWithLength: (unsigned int)l
 	      objects: (id *)o
 {
@@ -90,7 +89,7 @@ struct __objcFastEnumerationState
 int main (void)
 {
   MyArray *array;
-  Object *object;
+  TestsuiteObject *object;
   int counter, i;
   id *objects;
 
Index: objc.dg/try-catch-10.m
===================================================================
--- objc.dg/try-catch-10.m	(revision 174696)
+++ objc.dg/try-catch-10.m	(working copy)
@@ -4,7 +4,7 @@
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol Proto1
 - (int)meth1;
@@ -14,11 +14,11 @@
 - (int)meth2;
 @end
 
-@interface MyClass: Object <Proto2> {
+@interface MyClass: TestsuiteObject <Proto2> {
   int a;
 }
 - (int)meth2;
-- (Object *)parm1: (id)p1 parm2: (id<Proto1>)p2;
+- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2;
 @end
 
 MyClass *mc1, *mc2;
@@ -27,7 +27,7 @@ MyClass *mc1, *mc2;
 - (int)meth2 {
   return a;
 }
-- (Object *)parm1: (id)p1 parm2: (id<Proto1>)p2 {
+- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2 {
   @try {
     mc2 = p2;   /* { dg-warning "type .id <Proto1>. does not conform to the .Proto2. protocol" } */
   }
Index: objc.dg/comp-types-11.m
===================================================================
--- objc.dg/comp-types-11.m	(revision 174696)
+++ objc.dg/comp-types-11.m	(working copy)
@@ -1,10 +1,10 @@
 /* { dg-do compile } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 @end
 
-extern Object* foo(void);
+extern TestsuiteObject* foo(void);
 static Derived *test(void)
 {
    Derived *m = foo();   /* { dg-warning "initialization from distinct Objective\\-C type" } */
Index: objc.dg/method-17.m
===================================================================
--- objc.dg/method-17.m	(revision 174696)
+++ objc.dg/method-17.m	(working copy)
@@ -3,9 +3,9 @@
 /* { dg-do compile } */
 /* { dg-options "-Wreturn-type -Wextra" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 - (id) meth1;
 - (void) meth2;
 @end
@@ -15,7 +15,7 @@ extern int bar;
 @implementation Foo
 - (id) meth1 {
   if (bar)
-    return [Object new];
+    return [TestsuiteObject new];
   return; /* { dg-warning "'return' with no value, in function returning non-void" } */
 } 
 - (void) meth2 {
Index: objc.dg/bitfield-1.m
===================================================================
--- objc.dg/bitfield-1.m	(revision 174696)
+++ objc.dg/bitfield-1.m	(working copy)
@@ -4,14 +4,14 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 
 extern void abort(void);
 
 #define CHECK_IF(expr) if(!(expr)) abort();
 
-@interface Base: Object 
+@interface Base: TestsuiteObject 
 {
     int full;
     int full2: 32;
@@ -80,4 +80,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/try-catch-1.m
===================================================================
--- objc.dg/try-catch-1.m	(revision 174696)
+++ objc.dg/try-catch-1.m	(working copy)
@@ -3,14 +3,14 @@
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 #include <stdio.h>
 #include <setjmp.h>
 
-@interface Frob: Object
+@interface Frob: TestsuiteObject
 @end
 
-@implementation Frob: Object
+@implementation Frob: TestsuiteObject
 @end
 
 static int exc_control = 0;
Index: objc.dg/pr45878.m
===================================================================
--- objc.dg/pr45878.m	(revision 174696)
+++ objc.dg/pr45878.m	(working copy)
@@ -8,9 +8,19 @@ typedef unsigned char  BOOL;
 {
   Class isa;
 }
-- (BOOL)isEqual:anObject;
 @end
 
+@interface Object (Test)
+- (BOOL)testIsEqual:anObject;
+@end
+
+@implementation Object (Test)
+- (BOOL)testIsEqual:anObject
+{
+  return self == anObject;
+}
+@end
+
 #ifdef __NEXT_RUNTIME__
 @interface NSConstantString: Object
 {
@@ -30,7 +40,7 @@ extern void *_NSConstantStringClassReference;
 
 void function (void)
 {
-  if ([@"strings" isEqual: (id)0])
+  if ([@"strings" testIsEqual: (id)0])
     {
       ;
     }
Index: objc.dg/fix-and-continue-2.m
===================================================================
--- objc.dg/fix-and-continue-2.m	(revision 174696)
+++ objc.dg/fix-and-continue-2.m	(working copy)
@@ -6,18 +6,18 @@
 /* { dg-do assemble { target *-*-darwin* } } */
 /* { dg-options "-mfix-and-continue" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Foo: Object
-+ (Object *)indexableFileTypes;
+@interface Foo: TestsuiteObject
++ (TestsuiteObject *)indexableFileTypes;
 @end
 
 @implementation Foo
-+ (Object *)indexableFileTypes
++ (TestsuiteObject *)indexableFileTypes
 {
-  static Object *fileTypes = 0;
+  static TestsuiteObject *fileTypes = 0;
   if(!fileTypes) {
-    fileTypes = [Object new];
+    fileTypes = [TestsuiteObject new];
   }
   return fileTypes;
 }
Index: objc.dg/foreach-4.m
===================================================================
--- objc.dg/foreach-4.m	(revision 174696)
+++ objc.dg/foreach-4.m	(working copy)
@@ -5,10 +5,9 @@
 /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m ../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
+/* { dg-additional-sources "../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#import "../objc-obj-c++-shared/next-mapping.h"
+#import "../objc-obj-c++-shared/TestsuiteObject.m"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #else
@@ -32,7 +31,7 @@ struct __objcFastEnumerationState
     enumeration.  You create the array with some objects; you can
     mutate the array, and you can fast-enumerate it.
  */
-@interface MyArray : Object
+@interface MyArray : TestsuiteObject
 {
   unsigned int length;
   id *objects;
@@ -45,7 +44,7 @@ struct __objcFastEnumerationState
                                        count:(unsigned long)len;
 @end
 
-@implementation MyArray : Object
+@implementation MyArray : TestsuiteObject
 - (id) initWithLength: (unsigned int)l
 	      objects: (id *)o
 {
Index: objc.dg/headers.m
===================================================================
--- objc.dg/headers.m	(revision 174696)
+++ objc.dg/headers.m	(working copy)
@@ -12,11 +12,11 @@
 #include <objc/Protocol.h>
 #ifdef __NEXT_RUNTIME__
 #include <objc/objc-runtime.h>
+#include <objc/objc-api.h>
 #else
-#include <objc/encoding.h>
+#include <objc/runtime.h>
 #endif
 
-#include <objc/objc-api.h>
 #include <objc/objc.h>
 
 #ifndef __NEXT_RUNTIME__
Index: objc.dg/comp-types-12.m
===================================================================
--- objc.dg/comp-types-12.m	(revision 174696)
+++ objc.dg/comp-types-12.m	(working copy)
@@ -1,14 +1,14 @@
 /* When assigning function pointers, allow for covariant return types
    and contravariant argument types.  */
 /* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class Derived;
 
-Object *ExternFunc (Object *filePath, Object *key);
-typedef id FuncSignature (Object *arg1, Derived *arg2);
+TestsuiteObject *ExternFunc (TestsuiteObject *filePath, TestsuiteObject *key);
+typedef id FuncSignature (TestsuiteObject *arg1, Derived *arg2);
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 + (void)registerFunc:(FuncSignature *)function;
 @end
 
Index: objc.dg/method-9.m
===================================================================
--- objc.dg/method-9.m	(revision 174696)
+++ objc.dg/method-9.m	(working copy)
@@ -5,10 +5,10 @@
 /* { dg-options "-Wstrict-selector-match" } */
 
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol MyObject
-- (id)initWithData:(Object *)data;
+- (id)initWithData:(TestsuiteObject *)data;
 @end
 
 @protocol SomeOther
@@ -19,9 +19,9 @@
 - (id)initWithData:(id<MyObject, MyCoding>)data;
 @end
 
-@interface NTGridDataObject: Object <MyCoding>
+@interface NTGridDataObject: TestsuiteObject <MyCoding>
 {
-    Object<MyCoding> *_data;
+    TestsuiteObject<MyCoding> *_data;
 }
 + (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data;
 @end
@@ -34,7 +34,7 @@
 {
     NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data];
     /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 35 } */
-    /* { dg-message "using .\\-\\(id\\)initWithData:\\(Object \\*\\)data." "" { target *-*-* } 11 } */
+    /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } 11 } */
     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 19 } */
     /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 15 } */
 
Index: objc.dg/type-size-2.m
===================================================================
--- objc.dg/type-size-2.m	(revision 174696)
+++ objc.dg/type-size-2.m	(working copy)
@@ -4,20 +4,10 @@
 /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { 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/runtime.h"
 #include <stdio.h>
 #include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-#include <objc/objc-runtime.h>
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
 
 extern int sscanf(const char *str, const char *format, ...);
 extern void abort(void);
@@ -36,21 +26,21 @@ enum Enum { one, two, three, four };
 @end
 
 Class cls;
-METHOD meth ;
+Method meth ;
 
 unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
 
 static void scan_initial(const char *pattern) {
   totsize = offs0 = offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = offs7 = (unsigned)-1;
-  sscanf(method_get_types(meth), pattern, &totsize, &offs0, &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), pattern, &totsize, &offs0, &offs1, &offs2, &offs3,
       &offs4, &offs5, &offs6, &offs7);
   CHECK_IF(!offs0 && offs1 == sizeof(id) && offs2 == offs1 + sizeof(SEL) && totsize >= offs2);
 }
 
 int main(void) {
-  cls = objc_get_class("ArrayTest");
+  cls = objc_getClass("ArrayTest");
 
-  meth = class_get_instance_method(cls, @selector(str:with:and:));
+  meth = class_getInstanceMethod(cls, @selector(str:with:and:));
 
   /* Here we have the complication that 'enum Enum' could be encoded
      as 'i' on __NEXT_RUNTIME_, and (most likely) as 'I' on the GNU
@@ -67,7 +57,7 @@ int main(void) {
 
   CHECK_IF(offs3 == offs2 + sizeof(signed char *) && offs4 == offs3 + sizeof(unsigned char *));
   CHECK_IF(totsize == offs4 + sizeof(enum Enum *));
-  meth = class_get_instance_method(cls, @selector(meth1:with:with:));
+  meth = class_getInstanceMethod(cls, @selector(meth1:with:with:));
   scan_initial("i%u@%u:%u^i%u[0i]%u[2i]%u");
   CHECK_IF(offs3 == offs2 + sizeof(int *) && offs4 == offs3 + sizeof(int *));
   CHECK_IF(totsize == offs4 + sizeof(int *));                                           
Index: objc.dg/local-decl-2.m
===================================================================
--- objc.dg/local-decl-2.m	(revision 174696)
+++ objc.dg/local-decl-2.m	(working copy)
@@ -3,9 +3,9 @@
 /* Author: Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Sprite: Object {
+@interface Sprite: TestsuiteObject {
   int sprite, spree;
 }
 + (void)setFoo:(int)foo;
Index: objc.dg/method-10.m
===================================================================
--- objc.dg/method-10.m	(revision 174696)
+++ objc.dg/method-10.m	(working copy)
@@ -5,14 +5,14 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort()
 
 static double d = 4.5920234e2;
 
-@interface Foo : Object
+@interface Foo : TestsuiteObject
 -(void) brokenType: (int)x floatingPoint: (double)y;
 @end
 
@@ -32,4 +32,3 @@ int main(void)
 	return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/encode-2.m
===================================================================
--- objc.dg/encode-2.m	(revision 174696)
+++ objc.dg/encode-2.m	(working copy)
@@ -17,22 +17,14 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 
-#ifdef __NEXT_RUNTIME__
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
-
 extern int sscanf(const char *str, const char *format, ...);
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 typedef struct { float x, y; } XXPoint;
 typedef struct { float width, height; } XXSize;
 typedef struct _XXRect { XXPoint origin; XXSize size; } XXRect;
@@ -74,31 +66,29 @@ unsigned offs1, offs2, offs3, offs4, offs5, offs6,
 
 int main(void) {
   Foo *foo = [[Foo alloc] init];
-  Class fooClass = objc_get_class("Foo");
-  METHOD meth;
+  Class fooClass = objc_getClass("Foo");
+  Method meth;
   const char *string;
 
-  meth = class_get_instance_method(fooClass, @selector(setRect:withInt:));
+  meth = class_getInstanceMethod(fooClass, @selector(setRect:withInt:));
   offs2 = 9999;
 
-  sscanf(method_get_types(meth), "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
       &offs4, &offs5);
    
   CHECK_IF(!offs2);
   [foo setRect:my_rect withInt:123];
 
-  meth = class_get_instance_method(fooClass, @selector(char:float:double:long:));
+  meth = class_getInstanceMethod(fooClass, @selector(char:float:double:long:));
   offs2 = 9999;
   if (sizeof (long) == 8)
     string = "v%u@%u:%uc%uf%ud%uq%u";
   else
     string = "v%u@%u:%uc%uf%ud%ul%u";
-  sscanf(method_get_types(meth), string, &offs1, &offs2, &offs3,  
+  sscanf(method_getTypeEncoding(meth), string, &offs1, &offs2, &offs3,  
 	 &offs4, &offs5, &offs6, &offs7);
   CHECK_IF(!offs2);
   [foo char:'c' float:2.3 double:3.5 long:2345L];
 
   return 0;
 }  
-
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/threedotthree-abi-1.m
===================================================================
--- objc.dg/threedotthree-abi-1.m	(revision 174696)
+++ objc.dg/threedotthree-abi-1.m	(working copy)
@@ -4,9 +4,10 @@
 /* { dg-require-effective-target ilp32 } */
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Protocol1.h"
 #include <stdio.h>
 #include <string.h>
+#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
 extern void abort();
 
Index: objc.dg/foreach-5.m
===================================================================
--- objc.dg/foreach-5.m	(revision 174696)
+++ objc.dg/foreach-5.m	(working copy)
@@ -5,10 +5,9 @@
 /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m ../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
+/* { dg-additional-sources "../objc-obj-c++-shared/nsconstantstring-class-impl.m" } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#import "../objc-obj-c++-shared/next-mapping.h"
+#import "../objc-obj-c++-shared/TestsuiteObject.m"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #else
@@ -30,7 +29,7 @@ typedef struct
    enumeration.  You create the array with some objects; you can
    mutate the array, and you can fast-enumerate it.
 */
-@interface MyArray : Object
+@interface MyArray : TestsuiteObject
 {
   unsigned int length;
   id *objects;
@@ -43,7 +42,7 @@ typedef struct
                                        count:(unsigned long)len;
 @end
 
-@implementation MyArray : Object
+@implementation MyArray : TestsuiteObject
 - (id) initWithLength: (unsigned int)l
 	      objects: (id *)o
 {
Index: objc.dg/special/unclaimed-category-1.h
===================================================================
--- objc.dg/special/unclaimed-category-1.h	(revision 174696)
+++ objc.dg/special/unclaimed-category-1.h	(working copy)
@@ -5,11 +5,7 @@
 
 @interface TestClass
 {
-#ifdef __OBJC2__
   Class isa;
-#else
-  id isa;
-#endif
 }
 - (int)D;
 @end
Index: objc.dg/special/unclaimed-category-1.m
===================================================================
--- objc.dg/special/unclaimed-category-1.m	(revision 174696)
+++ objc.dg/special/unclaimed-category-1.m	(working copy)
@@ -3,10 +3,7 @@
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
 #include <objc/objc.h>
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
-#include "../../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/runtime.h"
 
 extern void abort (void);
 
@@ -27,9 +24,7 @@ extern void abort (void);
 {
   return 4;
 }
-#ifdef __NEXT_RUNTIME__                                   
 + initialize { return self; }
-#endif
 @end
 
 
@@ -38,13 +33,13 @@ int main (void)
   TestClass *test;
   Class testClass;
 
-  testClass = objc_get_class ("TestClass");
+  testClass = objc_getClass ("TestClass");
   if (testClass == Nil)
     {
       abort ();
     }
   
-  test = (TestClass *)(class_create_instance (testClass));
+  test = (TestClass *)(class_createInstance (testClass, 0));
   if (test == nil)
     {
       abort ();
Index: objc.dg/func-ptr-1.m
===================================================================
--- objc.dg/func-ptr-1.m	(revision 174696)
+++ objc.dg/func-ptr-1.m	(working copy)
@@ -2,7 +2,7 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern int strcmp(const char *, const char *);
 extern void abort(void);
@@ -10,7 +10,7 @@ extern void abort(void);
 
 typedef float (*floatfunc)(float, float);
 
-@interface MyObject : Object
+@interface MyObject : TestsuiteObject
 {
 @public
   int (*ivar)(int, int, int);
@@ -47,5 +47,3 @@ int main ()
   return(0);
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
-
Index: objc.dg/stret-1.m
===================================================================
--- objc.dg/stret-1.m	(revision 174696)
+++ objc.dg/stret-1.m	(working copy)
@@ -3,7 +3,7 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort()
@@ -16,12 +16,12 @@ struct bstruct {
   float a, b, c, d, e, f;
 } globb = { 1, 2, 3, 4, 5, 6 };
 
-@interface foo : Object
+@interface foo : TestsuiteObject
 - (struct astruct) stret;
 - (struct bstruct) stretb;
 @end
 
-@implementation foo : Object
+@implementation foo : TestsuiteObject
 - (struct astruct) stret { return globa; }
 - (struct bstruct) stretb { return globb; }
 @end
@@ -62,4 +62,3 @@ int main(void)
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/method-19.m
===================================================================
--- objc.dg/method-19.m	(revision 174696)
+++ objc.dg/method-19.m	(working copy)
@@ -3,7 +3,7 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class NotKnown;
 
Index: objc.dg/zero-link-1.m
===================================================================
--- objc.dg/zero-link-1.m	(revision 174696)
+++ objc.dg/zero-link-1.m	(working copy)
@@ -5,7 +5,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-options "-fzero-link" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 #include <objc/objc.h>
 
 extern void abort(void);
Index: objc.dg/sync-1.m
===================================================================
--- objc.dg/sync-1.m	(revision 174696)
+++ objc.dg/sync-1.m	(working copy)
@@ -2,7 +2,7 @@
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/objc.h>
 
 void foo(id sem)
 {
Index: objc.dg/category-1.m
===================================================================
--- objc.dg/category-1.m	(revision 174696)
+++ objc.dg/category-1.m	(working copy)
@@ -4,24 +4,18 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "need OBJC2 ABI" { *-*-darwin* && { lp64 &&  { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 extern int strcmp(const char *s1, const char *s2);
 extern void abort(void);
 
-#ifdef __NEXT_RUNTIME__
-#define SUPERCLASS superclass
-#else
-#define SUPERCLASS superClass
-#endif
-
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface MyObject: Object
+@interface MyObject: TestsuiteObject
 + (Class)whatever1;
 @end
 
 @implementation MyObject
-+ (Class)whatever1 { return [super SUPERCLASS]; }
++ (Class)whatever1 { return [super superclass]; }
 @end
 
 @interface MyObject (ThisWontCompile)
@@ -29,7 +23,7 @@ extern void abort(void);
 @end
  
 @implementation MyObject (ThisWontCompile)
-+(Class)whatever2 { return [super SUPERCLASS]; }
++(Class)whatever2 { return [super superclass]; }
 @end
 
 int main (int argc, const char * argv[])
@@ -37,15 +31,9 @@ int main (int argc, const char * argv[])
   Class w1 = [MyObject whatever1];
   Class w2 = [MyObject whatever2];
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  CHECK_IF(!strcmp( object_getClassName( w1 ), "Object"));
-  CHECK_IF(!strcmp( object_getClassName( w2 ), "Object"));
-#else
-  CHECK_IF(!strcmp(w1->name, "Object"));
-  CHECK_IF(!strcmp(w2->name, "Object"));
-#endif
+  CHECK_IF(!strcmp( object_getClassName( w1 ), "TestsuiteObject"));
+  CHECK_IF(!strcmp( object_getClassName( w2 ), "TestsuiteObject"));
 
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/layout-1.m
===================================================================
--- objc.dg/layout-1.m	(revision 174696)
+++ objc.dg/layout-1.m	(working copy)
@@ -3,13 +3,13 @@
 /* { dg-do compile } */
 /* { dg-options "-Wpadded -Wpacked" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived1: Object
+@interface Derived1: TestsuiteObject
 { }
 @end
 
-@interface Derived2: Object
+@interface Derived2: TestsuiteObject
 - (id) foo;
 @end
 
Index: objc.dg/bitfield-3.m
===================================================================
--- objc.dg/bitfield-3.m	(revision 174696)
+++ objc.dg/bitfield-3.m	(working copy)
@@ -4,7 +4,7 @@
 /* { dg-options "-Wpadded" } */
 /* { dg-do run } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 extern int strcmp(const char *str1, const char *str2);
@@ -12,7 +12,7 @@ extern int strcmp(const char *str1, const char *st
 
 enum Enum { one, two, three, four };
 
-@interface Base: Object {
+@interface Base: TestsuiteObject {
   unsigned a: 2;
   int b: 3;
   enum Enum c: 4;
Index: objc.dg/property/property-1.m
===================================================================
--- objc.dg/property/property-1.m	(revision 174696)
+++ objc.dg/property/property-1.m	(working copy)
@@ -1,12 +1,11 @@
 /* This program tests use of property provided setter/getter functions. */
 /* { dg-options "-std=c99" } */
 /* { dg-do run } */
-/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.m" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface Bar : Object
+@interface Bar : TestsuiteObject
 {
   int iVar;
 }
Index: objc.dg/encode-3.m
===================================================================
--- objc.dg/encode-3.m	(revision 174696)
+++ objc.dg/encode-3.m	(working copy)
@@ -6,12 +6,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#ifndef __NEXT_RUNTIME__
-#  include <objc/objc-api.h>
+#include "../objc-obj-c++-shared/runtime.h"
+
+#ifdef __cplusplus
+#define ProtoBool bool
+#else
+#define ProtoBool _Bool
 #endif
-#include "../objc-obj-c++-shared/objc-test-suite-types.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
-#include <objc/Protocol.h>
 
 extern int sscanf(const char *str, const char *format, ...);
 extern void abort(void);
@@ -36,9 +37,7 @@ typedef struct _XXRect { XXPoint origin; XXSize si
 
 Protocol *proto;
 struct objc_method_description *meth;
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
 struct objc_method_description meth_object;
-#endif
 unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
 
 static void scan_initial(const char *pattern) {
@@ -51,13 +50,9 @@ static void scan_initial(const char *pattern) {
 int main(void) {
   const char *string;
   proto = @protocol(Proto);
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   meth_object = protocol_getMethodDescription (proto,
 		   @selector(char:float:double:unsigned:short:long:), YES, YES);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForInstanceMethod: @selector(char:float:double:unsigned:short:long:)];
-#endif
   if (sizeof (long) == 8)
     string = "v%u@%u:%uc%uf%ud%uI%us%uq%u";
   else
@@ -66,23 +61,15 @@ int main(void) {
   CHECK_IF(offs3 == offs2 + sizeof(int) && offs4 == offs3 + sizeof(float));
   CHECK_IF(offs5 == offs4 + sizeof(double) && offs6 == offs5 + sizeof(unsigned));
   CHECK_IF(offs7 == offs6 + sizeof(int) && totsize == offs7 + sizeof(long));
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   meth_object = protocol_getMethodDescription (proto,
 		  @selector(setRect:withBool:withInt:), YES, YES);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForInstanceMethod: @selector(setRect:withBool:withInt:)];
-#endif
   scan_initial("^v%u@%u:%u{_XXRect={?=ff(__XXAngle=II)}{?=dd}^{_XXRect}}%uB%ui%u");
   CHECK_IF(offs3 == offs2 + sizeof(XXRect) && offs4 == offs3 + sizeof(int));
   CHECK_IF(totsize == offs4 + sizeof(int));
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   meth_object = protocol_getMethodDescription (proto,
 		  @selector(getEnum:enum:bool:), YES, NO);
   meth = &meth_object; 
-#else
-  meth = [proto descriptionForClassMethod: @selector(getEnum:enum:bool:)];
-#endif
 
   /* Here we have the complication that 'enum Enum' could be encoded
      as 'i' on __NEXT_RUNTIME_, and (most likely) as 'I' on the GNU
@@ -100,13 +87,9 @@ int main(void) {
 
   CHECK_IF(offs3 == offs2 + sizeof(XXPoint *) && offs4 == offs3 + sizeof(enum Enum));
   CHECK_IF(totsize == offs4 + sizeof(int));  /* 'ObjCBool' is really 'char' */
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
   meth_object = protocol_getMethodDescription (proto,
 		  @selector(getBool:), YES, NO);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForClassMethod: @selector(getBool:)];         
-#endif
   scan_initial("^^B%u@%u:%u^*%u");
   CHECK_IF(totsize == offs2 + sizeof(ObjCBool **));
   return 0;
Index: objc.dg/try-catch-3.m
===================================================================
--- objc.dg/try-catch-3.m	(revision 174696)
+++ objc.dg/try-catch-3.m	(working copy)
@@ -5,14 +5,14 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 const char *foo(void)
 {
     @try {
         return "foo";
     }
-    @catch (Object* theException) {
+    @catch (TestsuiteObject* theException) {
           return [theException name];
     }
 }
Index: objc.dg/foreach-6.m
===================================================================
--- objc.dg/foreach-6.m	(revision 174696)
+++ objc.dg/foreach-6.m	(working copy)
@@ -1,8 +1,10 @@
 /* Test basic Objective-C foreach syntax.  This tests warnings and errors.  */
 /* { dg-do compile } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#import "../objc-obj-c++-shared/next-mapping.h"
+#import "../objc-obj-c++-shared/TestsuiteObject.h"
+#import <objc/objc.h>
+#undef  nil
+#define nil ((id)0)
 
 /*
 struct __objcFastEnumerationState
@@ -13,7 +15,7 @@ struct __objcFastEnumerationState
   unsigned long extra[5];
 };
 */
-@interface Object (NSFastEnumeration)
+@interface TestsuiteObject (NSFastEnumeration)
 - (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
                                      objects:(id *)stackbuf 
                                        count:(unsigned int)len;
@@ -46,7 +48,7 @@ int main (void)
     ;
 
   for (12 in array) /* { dg-error "invalid iterating variable in fast enumeration" } */
-    ;               /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 48 } */
+    ;               /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 50 } */
 
   for (object in 12) /* { dg-error "collection in fast enumeration is not an object" } */
     ;
Index: objc.dg/method-3.m
===================================================================
--- objc.dg/method-3.m	(revision 174696)
+++ objc.dg/method-3.m	(working copy)
@@ -4,17 +4,17 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Int1: Object
+@interface Int1: TestsuiteObject
 + (int) classMeth;
 - (int) instanceMeth;
 @end
 
-@interface Int2: Object
+@interface Int2: TestsuiteObject
 + (int) classMeth;      
 - (int) instanceMeth;
 @end
@@ -45,4 +45,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/typedef-alias-1.m
===================================================================
--- objc.dg/typedef-alias-1.m	(revision 174696)
+++ objc.dg/typedef-alias-1.m	(working copy)
@@ -1,15 +1,16 @@
 /* Typedefs of ObjC types should work without any bogus warnings. */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
 
-typedef Object MyObject;
+typedef TestsuiteObject MyObject;
 
 int main (int argc, const char * argv[])
 {
-    Object* a = nil;
+    TestsuiteObject* a = nil;
     MyObject* b = a;
-    Object* c = b;
+    TestsuiteObject* c = b;
 
     return 0;
 }
Index: objc.dg/proto-lossage-2.m
===================================================================
--- objc.dg/proto-lossage-2.m	(revision 174696)
+++ objc.dg/proto-lossage-2.m	(working copy)
@@ -2,13 +2,14 @@
    provide a suitable method.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
 
 @protocol Zot
 -(void) zot;
 @end
 
-@interface Foo : Object <Zot>
+@interface Foo : TestsuiteObject <Zot>
 @end
 
 int foo()
Index: objc.dg/func-ptr-2.m
===================================================================
--- objc.dg/func-ptr-2.m	(revision 174696)
+++ objc.dg/func-ptr-2.m	(working copy)
@@ -5,10 +5,9 @@
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
 #include <stdlib.h>
-/* provide an Object class for NeXT runtimes 10.5 and above */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface Func: Object
+@interface Func: TestsuiteObject
 + (int) processNumber:(int)a and:(int)b usingFunction:(int(int,int))func;
 @end
 
@@ -38,4 +37,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/stret-2.m
===================================================================
--- objc.dg/stret-2.m	(revision 174696)
+++ objc.dg/stret-2.m	(working copy)
@@ -6,7 +6,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-require-effective-target ilp32 } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 struct astruct {
   float a, b;
@@ -17,12 +17,12 @@ struct bstruct {
   float a, b, c, d, e, f;
 } globb = { 1, 2, 3, 4, 5, 6 };
 
-@interface foo : Object
+@interface foo : TestsuiteObject
 - (struct astruct) stret;
 - (struct bstruct) stretb;
 @end
 
-@implementation foo : Object
+@implementation foo : TestsuiteObject
 - (struct astruct) stret { return glob; }
 - (struct bstruct) stretb { return globb; }
 @end
Index: objc.dg/fsf-package-0.m
===================================================================
--- objc.dg/fsf-package-0.m	(revision 174696)
+++ objc.dg/fsf-package-0.m	(working copy)
@@ -1,9 +1,8 @@
 /* { dg-do compile } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#include <objc/objc-api.h>
+#import "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object
+@interface obj : TestsuiteObject
 {
 @public
   int v1;
@@ -18,7 +17,7 @@
 - (void) setValue: (int)number;
 @end
 
-@implementation obj : Object
+@implementation obj : TestsuiteObject
 
 - (int) value { return v1; }
 - (void) setValue: (int)number { v1 = number; }
@@ -33,5 +32,5 @@ void foo (void)
   a->v2 = 1;
   a->v3 = [a value] - a->v2;	/* { dg-warning ".v3. is @protected" } */
   a->v4 = a->v3 - 1;		/* { dg-warning ".v4. is @private" } */
-  				/* { dg-warning ".v3. is @protected" "" { target *-*-* } 35 } */
+  				/* { dg-warning ".v3. is @protected" "" { target *-*-* } 34 } */
 }
Index: objc.dg/lookup-1.m
===================================================================
--- objc.dg/lookup-1.m	(revision 174696)
+++ objc.dg/lookup-1.m	(working copy)
@@ -1,9 +1,8 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
 
 #include <stdlib.h>
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 typedef struct MyWidget {
   int a;
@@ -15,13 +14,13 @@ MyWidget gWidget = { 17 };
 - (MyWidget *)widget;
 @end
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 @end
 
 @interface Bar: Foo <MyProto>
 @end
 
-@interface Container: Object
+@interface Container: TestsuiteObject
 + (MyWidget *)elementForView:(Foo *)view;
 @end
 
@@ -38,7 +37,8 @@ MyWidget gWidget = { 17 };
 + (MyWidget *)elementForView:(Foo *)view
 {
   MyWidget *widget = (MyWidget *) nil;
-  if ([view conformsTo:@protocol(MyProto)]) {
+  if (class_conformsToProtocol (object_getClass (view),
+				@protocol(MyProto))) {
     widget = [(Foo <MyProto> *)view widget];
   }
   return widget;
Index: objc.dg/torture/tls/thr-init-3.m
===================================================================
--- objc.dg/torture/tls/thr-init-3.m	(revision 174696)
+++ objc.dg/torture/tls/thr-init-3.m	(working copy)
@@ -2,12 +2,11 @@
 /* { dg-require-effective-target tls_runtime } */
 /* { dg-add-options tls } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.m" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 extern void _exit(int);
 
-@interface tsObj: Object {
+@interface tsObj: TestsuiteObject {
   int ai ;
 }
 
Index: objc.dg/torture/trivial.m
===================================================================
--- objc.dg/torture/trivial.m	(revision 174696)
+++ objc.dg/torture/trivial.m	(working copy)
@@ -1,11 +1,10 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.m" } */
 
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 int main(void)
 {
-  [Object class];
+  [TestsuiteObject class];
   return 0;
 }
Index: objc.dg/torture/strings/const-str-7.m
===================================================================
--- objc.dg/torture/strings/const-str-7.m	(revision 174696)
+++ objc.dg/torture/strings/const-str-7.m	(working copy)
@@ -3,27 +3,28 @@
 /* { dg-do run } */
 /* { dg-options "-fconstant-string-class=Foo " } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.m" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   char *cString;
   unsigned int len;
 }
 - (char *)customString;
 @end
 
+#ifdef __NEXT_RUNTIME__
 #ifdef NEXT_OBJC_USE_NEW_INTERFACE
 Class _FooClassReference;
 #else
 struct objc_class _FooClassReference;
 #endif
+#endif
 
-@implementation Foo : Object
+@implementation Foo : TestsuiteObject
 - (char *)customString {
   return cString;
 }
Index: objc.dg/torture/strings/const-str-8.m
===================================================================
--- objc.dg/torture/strings/const-str-8.m	(revision 174696)
+++ objc.dg/torture/strings/const-str-8.m	(working copy)
@@ -3,24 +3,25 @@
 /* { dg-do run } */
 /* { dg-options "-fconstant-string-class=Foo" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.m" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   char *cString;
   unsigned int len;
 }
 @end
 
+#ifdef __NEXT_RUNTIME__
 #ifdef NEXT_OBJC_USE_NEW_INTERFACE
 Class _FooClassReference;
 #else
 struct objc_class _FooClassReference;
 #endif
+#endif
 
-@implementation Foo : Object
+@implementation Foo : TestsuiteObject
 - (char *)customString {
   return cString;
 }
Index: objc.dg/torture/strings/const-str-9.m
===================================================================
--- objc.dg/torture/strings/const-str-9.m	(revision 174696)
+++ objc.dg/torture/strings/const-str-9.m	(working copy)
@@ -5,7 +5,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface NSConstantString: Object {
   char *cString;
Index: objc.dg/torture/strings/const-str-10.m
===================================================================
--- objc.dg/torture/strings/const-str-10.m	(revision 174696)
+++ objc.dg/torture/strings/const-str-10.m	(working copy)
@@ -6,7 +6,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface NSString: Object
 @end
Index: objc.dg/torture/strings/const-str-11.m
===================================================================
--- objc.dg/torture/strings/const-str-11.m	(revision 174696)
+++ objc.dg/torture/strings/const-str-11.m	(working copy)
@@ -7,7 +7,7 @@
 /* { dg-options "-fconstant-string-class=XStr" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface XString: Object {
 @protected
Index: objc.dg/torture/forward-1.m
===================================================================
--- objc.dg/torture/forward-1.m	(revision 174696)
+++ objc.dg/torture/forward-1.m	(working copy)
@@ -1,24 +1,18 @@
 /* { dg-do run } */
-/* See if -forward::/-performv:: is able to work. */
+/* See if -forward:: is able to work. */
 /* { dg-xfail-run-if "PR36610" { ! { { i?86-*-* x86_64-*-* } && ilp32 } } { "-fgnu-runtime" } { "" } } */
 /* { dg-skip-if "Needs OBJC2 Implementation" { *-*-darwin* && { lp64 } } { "-fnext-runtime" } { "" } } */
-/* There is no implementation of forward: in the NeXT m64 libobjc/Object
-   neither have we implemented this in our extensions - so we have to skip it
-   for now.  */
 
 #include <stdio.h>
 #include <stdlib.h>
 
-#ifndef __NEXT_RUNTIME__
-#  include <objc/objc-api.h>
-#endif
-#include <objc/Object.h>
+#include "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 #define VALUETOUSE 1234567890
 
 id forwarder, receiver;
 
-@interface Forwarder: Object
+@interface Forwarder: TestsuiteObject
 {
     id receiver;
 }
@@ -27,7 +21,7 @@ id forwarder, receiver;
 
 @end
 
-@interface Receiver:Object
+@interface Receiver:TestsuiteObject
 {
     int foo;
 }
@@ -44,6 +38,7 @@ id forwarder, receiver;
 
 -display
 {
+  printf ("Executing display\n");
     /* Check to see if we are really the reciever. */
     if (self != receiver)
         abort ();
@@ -62,18 +57,24 @@ id forwarder, receiver;
     receiver = theReceiver;
     return self;
 }
-#ifdef __NEXT_RUNTIME__
-- forward: (SEL)theSel: (marg_list)theArgFrame
-#else
--(retval_t) forward: (SEL)theSel: (arglist_t)theArgFrame
-#endif
+-(void *) forward: (SEL)theSel: (void *)theArgFrame
 {
   /* If we have a reciever try to perform on that object */
     if (receiver)
-        return [receiver performv: theSel: theArgFrame];
+      {
+	/* Simple forward that works for methods with no
+	   arguments.  */
+	typedef id (*method_with_no_args) (id receiver, SEL _cmd);
+	Method method = class_getInstanceMethod (object_getClass (receiver),
+						 theSel);
+	method_with_no_args imp = (method_with_no_args)(method_getImplementation
+							(method));
+	return (*imp)(receiver, theSel);
+      }
 
     /* Normally you'd emit an error here.  */
     printf ("Unrecognized selector\n");
+    return NULL;
 }
 @end
 int main()
Index: objc.dg/sync-2.m
===================================================================
--- objc.dg/sync-2.m	(revision 174696)
+++ objc.dg/sync-2.m	(working copy)
@@ -1,13 +1,13 @@
 /* Make sure that @synchronized parses and a very basic test runs.  */
 /* { dg-options "-fobjc-exceptions -fgnu-runtime" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 int main (void)
 {
-  Object *a = [Object new];
-  Object *b = [Object new];
-  Object *c = [Object new];
+  TestsuiteObject *a = [TestsuiteObject new];
+  TestsuiteObject *b = [TestsuiteObject new];
+  TestsuiteObject *c = [TestsuiteObject new];
 
   /* This single-threaded test just checks that @synchronized() uses a
      recursive mutex, and that the runtime at least doesn't crash
Index: objc.dg/layout-2.m
===================================================================
--- objc.dg/layout-2.m	(revision 174696)
+++ objc.dg/layout-2.m	(working copy)
@@ -4,10 +4,10 @@
 /* { dg-do compile } */
 /* { dg-options "-Wpadded" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 /* Implement a class, so that the metadata generation happens.  */
-@interface MyClass : Object
+@interface MyClass : TestsuiteObject
 @end
 
 @implementation MyClass
Index: objc.dg/encode-4.m
===================================================================
--- objc.dg/encode-4.m	(revision 174696)
+++ objc.dg/encode-4.m	(working copy)
@@ -4,13 +4,8 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
-#ifdef __NEXT_RUNTIME__
-#include <objc/objc-class.h>
-#else
-#include <objc/objc-api.h>
-#endif
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 
 extern void abort(void);
 extern int strcmp(const char *s1, const char *s2);
@@ -31,7 +26,7 @@ struct Nested {
   struct Innermost innermost;
 };
 
-@interface Int1: Object {
+@interface Int1: TestsuiteObject {
   signed char a, b;
   Int2 *int2;
   struct Nested nested;
@@ -50,28 +45,28 @@ struct Nested {
 @implementation Int2
 @end
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-Ivar *ivar;
-#else
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
 struct objc_ivar *ivar;
+#else
+Ivar *ivar;
 #endif
 
 static void check_ivar(const char *name, const char *type) {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  CHECK_IF(!strcmp(ivar_getName(*ivar), name));
-  CHECK_IF(!strcmp(ivar_getTypeEncoding(*ivar), type));
-#else
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
   CHECK_IF(!strcmp(ivar->ivar_name, name));
   CHECK_IF(!strcmp(ivar->ivar_type, type));
+#else
+  CHECK_IF(!strcmp(ivar_getName(*ivar), name));
+  CHECK_IF(!strcmp(ivar_getTypeEncoding(*ivar), type));
 #endif
   ivar++;
 }
 
 int main(void) {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  ivar = class_copyIvarList ((Class)objc_get_class("Int1"), NULL);
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
+  ivar = ((Class)objc_getClass("Int1"))->ivars->ivar_list;
 #else
-  ivar = ((Class)objc_get_class("Int1"))->ivars->ivar_list;
+  ivar = class_copyIvarList ((Class)objc_getClass("Int1"), NULL);
 #endif
   check_ivar("a", "c");
   check_ivar("b", "c");
@@ -79,10 +74,10 @@ int main(void) {
   check_ivar("nested", 
     "{Nested=\"a\"f\"b\"f\"next\"@\"Int1\"\"innermost\"{Innermost=\"a\"C\"b\"C\"encl\"^{Nested}}}");
     
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  ivar = class_copyIvarList ((Class)objc_get_class("Int2"), NULL);
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
+  ivar = ((Class)objc_getClass("Int2"))->ivars->ivar_list;
 #else
-  ivar = ((Class)objc_get_class("Int2"))->ivars->ivar_list;
+  ivar = class_copyIvarList ((Class)objc_getClass("Int2"), NULL);
 #endif
   check_ivar("innermost", "^{Innermost=CC^{Nested}}");
   check_ivar("base", "@\"Int1\"");
@@ -90,4 +85,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/class-protocol-1.m
===================================================================
--- objc.dg/class-protocol-1.m	(revision 174696)
+++ objc.dg/class-protocol-1.m	(working copy)
@@ -3,7 +3,7 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include <objc/objc-api.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
 @protocol MyProto1
 +(void)doItClass1;
Index: objc.dg/foreach-7.m
===================================================================
--- objc.dg/foreach-7.m	(revision 174696)
+++ objc.dg/foreach-7.m	(working copy)
@@ -1,9 +1,10 @@
 /* Test basic Objective-C foreach syntax.  This tests warnings and errors.  */
 /* { dg-do compile } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#import "../objc-obj-c++-shared/next-mapping.h"
-
+#import "../objc-obj-c++-shared/TestsuiteObject.h"
+#import <objc/objc.h>
+#undef  nil
+#define nil ((id)0)
 /*
 struct __objcFastEnumerationState
 {
@@ -13,7 +14,7 @@ struct __objcFastEnumerationState
   unsigned long extra[5];
 };
 */
-@interface Object (NSFastEnumeration)
+@interface TestsuiteObject (NSFastEnumeration)
 - (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
                                      objects:(id *)stackbuf 
                                        count:(unsigned int)len;
@@ -36,10 +37,10 @@ int main (void)
   id object = nil;
 
   for (typedef int my_typedef in array) /* { dg-error "declaration of non-variable" } */
-    ;                                   /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 38 } */
+    ;                                   /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 39 } */
 
   for (function () in nil) /* { dg-error "invalid iterating variable in fast enumeration" } */
-    ;                      /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 41 } */
+    ;                      /* { dg-error "iterating variable in fast enumeration is not an object" "" { target *-*-* } 42 } */
 
   for (object_function () in nil) /* { dg-error "invalid iterating variable in fast enumeration" } */
     ;
Index: objc.dg/method-4.m
===================================================================
--- objc.dg/method-4.m	(revision 174696)
+++ objc.dg/method-4.m	(working copy)
@@ -5,16 +5,16 @@
 /* { dg-do compile { target { *-*-darwin* && { ! lp64 } } } } */
 /* { dg-skip-if "" { *-*-darwin* } { "-fgnu-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-typedef Object ObjectTypedef1;
+typedef TestsuiteObject ObjectTypedef1;
 typedef ObjectTypedef1 ObjectTypedef2;
 @compatibility_alias ObjectAlias1 ObjectTypedef2;
 @compatibility_alias ObjectAlias2 ObjectAlias1;
 typedef ObjectAlias2 ObjectTypedef3;
 
 void foo(void) {
-  id obj = [Object new];
+  id obj = [TestsuiteObject new];
   obj = [ObjectTypedef1 new];
   obj = [ObjectTypedef2 new];
   obj = [ObjectTypedef3 new];
Index: objc.dg/sizeof-1.m
===================================================================
--- objc.dg/sizeof-1.m	(revision 174696)
+++ objc.dg/sizeof-1.m	(working copy)
@@ -3,13 +3,13 @@
 /* { dg-options "" } */
 /* { dg-do run } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort();
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   int a, b;
   float c, d;
 }
@@ -18,17 +18,16 @@ extern void abort(void);
 @implementation Foo
 @end
 
-typedef Object MyObject;
+typedef TestsuiteObject MyObject;
 typedef struct Foo Foo_type;
 
-@compatibility_alias AliasObject Object;
+@compatibility_alias AliasObject TestsuiteObject;
 
 int main(void) {
-  CHECK_IF(sizeof(Foo) > sizeof(Object) && sizeof(Object) > 0);
+  CHECK_IF(sizeof(Foo) > sizeof(TestsuiteObject) && sizeof(TestsuiteObject) > 0);
   CHECK_IF(sizeof(Foo) == sizeof(Foo_type));
-  CHECK_IF(sizeof(Object) == sizeof(MyObject));
-  CHECK_IF(sizeof(Object) == sizeof(AliasObject));
+  CHECK_IF(sizeof(TestsuiteObject) == sizeof(MyObject));
+  CHECK_IF(sizeof(TestsuiteObject) == sizeof(AliasObject));
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/proto-lossage-3.m
===================================================================
--- objc.dg/proto-lossage-3.m	(revision 174696)
+++ objc.dg/proto-lossage-3.m	(working copy)
@@ -3,10 +3,13 @@
    Problem report and original fix by richard@brainstorm.co.uk.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Protocol1.h"
-#include "../objc-obj-c++-shared/Object1.h"
 #include <objc/objc.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
+@interface MyClass
+- name;
+@end
+
 @protocol NoInstanceMethods
 + testMethod;
 @end
@@ -18,9 +21,9 @@
 int
 main()
 {
-[@protocol(NoInstanceMethods) descriptionForInstanceMethod: @selector(name)];
-[@protocol(NoInstanceMethods) descriptionForClassMethod: @selector(name)];
-[@protocol(NoClassMethods) descriptionForInstanceMethod: @selector(name)];
-[@protocol(NoClassMethods) descriptionForClassMethod: @selector(name)];
+protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, YES);
+protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, NO);
+protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, YES);
+protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, NO);
 return 0;
 }
Index: objc.dg/proto-qual-1.m
===================================================================
--- objc.dg/proto-qual-1.m	(revision 174696)
+++ objc.dg/proto-qual-1.m	(working copy)
@@ -4,11 +4,8 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
+#include "../objc-obj-c++-shared/runtime.h"
 #include <objc/Protocol.h>
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
-#include "../objc-obj-c++-shared/next-mapping.h"
 
 /* The encoded parameter sizes will be rounded up to match pointer alignment.  */
 #define ROUND(s,a) (a * ((s + a - 1) / a))
@@ -34,9 +31,7 @@ extern void abort(void);
 
 Protocol *proto;
 struct objc_method_description *meth;
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
 struct objc_method_description meth_object;
-#endif
 unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
 
 static void scan_initial(const char *pattern) {
@@ -48,22 +43,18 @@ static void scan_initial(const char *pattern) {
 
 int main(void) {
   proto = @protocol(Retain);
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+
   meth_object = protocol_getMethodDescription (proto,
 		  @selector(address:with:), YES, YES);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForInstanceMethod: @selector(address:with:)];
-#endif
+
   scan_initial("O@%u@%u:%uNR@%uo^^S%u");
   CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(unsigned));
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+
   meth_object = protocol_getMethodDescription (proto,
 		  @selector(retainArgument:with:), YES, NO);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForClassMethod: @selector(retainArgument:with:)];
-#endif
+
   scan_initial("Vv%u@%u:%uOo@%un^*%u");
   CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(char **));
   return 0;
Index: objc.dg/method-13.m
===================================================================
--- objc.dg/method-13.m	(revision 174696)
+++ objc.dg/method-13.m	(working copy)
@@ -6,13 +6,8 @@
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
 #include <objc/objc.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
-#ifdef __NEXT_RUNTIME__
-#define OBJC_GETCLASS objc_getClass
-#else
-#define OBJC_GETCLASS objc_get_class
-#endif
-
 extern void abort(void);
 extern int strcmp(const char *, const char *);
 #define CHECK_IF(expr) if(!(expr)) abort()
@@ -48,16 +43,14 @@ extern int strcmp(const char *, const char *);
 @end
 
 @implementation Root
-#ifdef __NEXT_RUNTIME__
 + initialize { return self; }
-#endif
 - (const char *) method1 { return "Root::-method1"; }
 + (const char *) method2 { return "Root::+method2"; }
 @end
 
 int main(void)
 {
-  Class obj = OBJC_GETCLASS("Derived");
+  Class obj = objc_getClass("Derived");
 
   /* None of the following should elicit compiler-time warnings.  */
 
Index: objc.dg/gnu-runtime-1.m
===================================================================
--- objc.dg/gnu-runtime-1.m	(revision 174696)
+++ objc.dg/gnu-runtime-1.m	(working copy)
@@ -4,9 +4,9 @@
 /* { dg-do compile } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface FooBar: Object
+@interface FooBar: TestsuiteObject
 - (void)boo;
 @end
 
Index: objc.dg/zero-link-3.m
===================================================================
--- objc.dg/zero-link-3.m	(revision 174696)
+++ objc.dg/zero-link-3.m	(working copy)
@@ -5,8 +5,7 @@
 /* { dg-options "-fzero-link" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-//#import <objc/objc.h>
+#include <objc/Object.h>
 
 extern void abort(void);
 #define CHECK_IF(expr) if(!(expr)) abort();
@@ -25,4 +24,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/pr23214.m
===================================================================
--- objc.dg/pr23214.m	(revision 174696)
+++ objc.dg/pr23214.m	(working copy)
@@ -6,16 +6,13 @@
 
 #include <objc/Protocol.h>
  
-#ifdef __OBJC2__
-/* The ObjC V2 "Object" does not provide -class.  */
 @interface Object (TS_CAT)
-- class;
+- test;
 @end
 
 @implementation Object (TS_CAT)
-- class { return isa; }
+- test { return self; }
 @end
-#endif
 
 @protocol A
 @end
@@ -28,8 +25,8 @@
 
 int main ()
 {
-  [@protocol(A) class];
-  [@protocol(B) class];
+  [@protocol(A) test];
+  [@protocol(B) test];
 
   return 0;
 }
Index: objc.dg/bitfield-5.m
===================================================================
--- objc.dg/bitfield-5.m	(revision 174696)
+++ objc.dg/bitfield-5.m	(working copy)
@@ -7,7 +7,7 @@
 /* { dg-options "-Wpadded" } */
 /* { dg-do run } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 #include <stdlib.h>
 
@@ -15,7 +15,7 @@
 
 enum Enum { zero, one, two, three, four };
 
-@interface Base: Object {
+@interface Base: TestsuiteObject {
 @public
   unsigned a: 2;
   int b: 3;
Index: objc.dg/va-meth-1.m
===================================================================
--- objc.dg/va-meth-1.m	(revision 174696)
+++ objc.dg/va-meth-1.m	(working copy)
@@ -2,14 +2,14 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 #include <stdarg.h>
 #include <stdlib.h>
 
 /* Test methods with "C-style" trailing arguments, with or without ellipsis. */
 
-@interface MathClass: Object
+@interface MathClass: TestsuiteObject
 /* sum positive numbers; -1 ends the list */
 + (int) sum: (int)firstNumber, int secondNumber, ...;
 + (int) prod: (int) firstNumber, int secondNumber, int thirdNumber;
@@ -70,4 +70,3 @@ int main (void)
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/encode-5.m
===================================================================
--- objc.dg/encode-5.m	(revision 174696)
+++ objc.dg/encode-5.m	(working copy)
@@ -9,21 +9,13 @@
 
 /* Contributed by Alexander Malmberg <alexander@malmberg.org>  */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 #include <stdlib.h>
 #include <stdio.h>
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-#ifdef __NEXT_RUNTIME__
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
-
-@interface Test : Object
+@interface Test : TestsuiteObject
 { float j; }
 -(void) test2: (int [5])a with: (int [])b;
 -(id) test3: (Test **)b; /* { dg-message "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */
@@ -47,8 +39,8 @@ int offs1, offs2, offs3, offs4, offs5, offs6;
 
 int main(int argc, char **argv)
 {
-  Class testClass = objc_get_class("Test");
-  METHOD meth;
+  Class testClass = objc_getClass("Test");
+  Method meth;
 
   cc[0] = [Test new];
   CHECK_IF (bb[3] == 3);
@@ -58,16 +50,16 @@ int main(int argc, char **argv)
   [*c test2: bb with: bb + 5];
   CHECK_IF (bb[3] == 5);
 
-  meth = class_get_instance_method(testClass, @selector(test2:with:));
+  meth = class_getInstanceMethod(testClass, @selector(test2:with:));
   offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
-  sscanf(method_get_types(meth), "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
       &offs4, &offs5, &offs6);
   CHECK_IF (!offs2 && offs4 == 5 && offs3 > 0);
   CHECK_IF (offs5 == 2 * offs3 && offs6 == 3 * offs3 && offs1 == 4 * offs3);
   
-  meth = class_get_instance_method(testClass, @selector(test3:));
+  meth = class_getInstanceMethod(testClass, @selector(test3:));
   offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
-  sscanf(method_get_types(meth), "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
       &offs4, &offs5, &offs6);
   CHECK_IF (!offs2 && offs4 == 3 && offs5 == 4 && offs3 > 0);
   CHECK_IF (offs6 == 2 * offs3 && offs1 == 3 * offs3);
Index: objc.dg/super-class-3.m
===================================================================
--- objc.dg/super-class-3.m	(revision 174696)
+++ objc.dg/super-class-3.m	(working copy)
@@ -4,12 +4,12 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 #include <stdlib.h>
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface _Child: Object
+@interface _Child: TestsuiteObject
 + (int) flashCache;
 @end
 
@@ -21,10 +21,10 @@
 + (int) flushCache2;
 @end
 
-int _Object = 23;  /* Should not conflict with @interface Object.  */
+int _TestsuiteObject = 23;  /* Should not conflict with @interface TestsuiteObject.  */
 
 @implementation _Child
-+ (int) flashCache { return 12 + _Object; }
++ (int) flashCache { return 12 + _TestsuiteObject; }
 @end
 
 @implementation Child
@@ -43,4 +43,3 @@ int main(void) {
   return 0; 
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: objc.dg/call-super-1.m
===================================================================
--- objc.dg/call-super-1.m	(revision 174696)
+++ objc.dg/call-super-1.m	(working copy)
@@ -5,7 +5,7 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 extern void abort(void);
 
@@ -23,7 +23,7 @@ Point MakePoint ( float x , float y ) {
   return p; 
 } 
 
-@interface Base: Object 
+@interface Base: TestsuiteObject 
 - ( void ) translateOriginToPoint : ( Point ) translation ; 
 @end
 
@@ -75,4 +75,4 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: objc.dg/pr18255.m
===================================================================
--- objc.dg/pr18255.m	(revision 174696)
+++ objc.dg/pr18255.m	(working copy)
@@ -2,6 +2,7 @@
 /* { dg-do run } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
+#include <objc/runtime.h>
 #include <objc/Protocol.h>
 #include <stdlib.h>
 
@@ -17,8 +18,16 @@
 
 int main (int argc, char **argv)
 {
-  if ([@protocol(b) descriptionForInstanceMethod: @selector(aMethod)] == NULL)
+  struct objc_method_description m;
+  m = protocol_getMethodDescription (@protocol(b), @selector(aMethod), YES, YES);
+
+  if (m.name != NULL)
     abort ();
 
+  m = protocol_getMethodDescription (@protocol(a), @selector(aMethod), YES, YES);
+
+  if (m.name == NULL)
+    abort ();
+
   return 0;
 }
Index: objc.dg/isa-field-1.m
===================================================================
--- objc.dg/isa-field-1.m	(revision 174696)
+++ objc.dg/isa-field-1.m	(working copy)
@@ -1,17 +1,18 @@
 /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include "../objc-obj-c++-shared/runtime.h"
 
-@interface Object (Test)
+@interface TestsuiteObject (Test)
 - (Class) test1: (id)object;
 @end
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 - (Class) test2: (id)object;
 @end
 
-@implementation Object (Test)
+@implementation TestsuiteObject (Test)
 
 Class test1(id object) {
 #ifdef __NEXT_RUNTIME__
Index: objc.dg/defs.m
===================================================================
--- objc.dg/defs.m	(revision 174696)
+++ objc.dg/defs.m	(working copy)
@@ -5,14 +5,14 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 //#include <objc/objc.h>
 
 extern void abort(void);
 
 #define CHECK_IF(expr) if(!(expr)) abort();
 
-@interface Base: Object {
+@interface Base: TestsuiteObject {
 @public
   int a;
   float b;
@@ -67,4 +67,4 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/method-19.mm
===================================================================
--- obj-c++.dg/method-19.mm	(revision 174696)
+++ obj-c++.dg/method-19.mm	(working copy)
@@ -4,13 +4,9 @@
 /* Author: Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/next-mapping.h"
 #include <objc/objc.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
-
 #include <stdlib.h>
 #include <string.h>
 
@@ -47,16 +43,14 @@
 @end
 
 @implementation Root
-#ifdef __NEXT_RUNTIME__
 + initialize { return self; }
-#endif
 - (const char *) method1 { return "Root::-method1"; }
 + (const char *) method2 { return "Root::+method2"; }
 @end
 
 int main(void)
 {
-  Class obj = objc_get_class("Derived");
+  Class obj = objc_getClass("Derived");
 
   /* None of the following should elicit compiler-time warnings.  */
 
@@ -75,4 +69,4 @@ int main(void)
 
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/template-4.mm
===================================================================
--- obj-c++.dg/template-4.mm	(revision 174696)
+++ obj-c++.dg/template-4.mm	(working copy)
@@ -3,7 +3,7 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.mm ../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */
+/* { dg-additional-sources "../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */
 
 #include <stdarg.h>
 #include <stdlib.h>
@@ -15,8 +15,8 @@
 #include "../objc-obj-c++-shared/nsconstantstring-class.h"
 #endif
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
@@ -42,7 +42,7 @@ int abc(TYPE *xyz, Array *array) {
   return [xyz count] + [array count];
 }
 
-@interface Array: Object {
+@interface Array: TestsuiteObject {
   id *arr;
   int count;
 }
@@ -72,7 +72,7 @@ int abc(TYPE *xyz, Array *array) {
 @end
 
 int main(void) {
-  CHECK_IF(!strcmp ([@"Object" cString], getDesc<Object>()));
+  CHECK_IF(!strcmp ([@"TestsuiteObject" cString], getDesc<TestsuiteObject>()));
   CHECK_IF(!strcmp ([@"Array" cString], getDesc<Array>()));
 
   Array* a1 = [Array arrayWithObjects:@"One", @"Two", @"Three", nil];
Index: obj-c++.dg/defs.mm
===================================================================
--- obj-c++.dg/defs.mm	(revision 174696)
+++ obj-c++.dg/defs.mm	(working copy)
@@ -3,13 +3,13 @@
 /* { dg-options "" } */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 #include <objc/objc.h>
 
 extern "C" void abort(void);
 
-@interface A : Object
+@interface A : TestsuiteObject
 {
   @public
     int a;
@@ -40,4 +40,4 @@ int main()
   
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/bitfield-2.mm
===================================================================
--- obj-c++.dg/bitfield-2.mm	(revision 174696)
+++ obj-c++.dg/bitfield-2.mm	(working copy)
@@ -4,12 +4,12 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort();
 
-@interface Base: Object 
+@interface Base: TestsuiteObject 
 {
     int full;
     int full2: 32;
@@ -77,4 +77,4 @@ int main(void) {
 
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/except-1.mm
===================================================================
--- obj-c++.dg/except-1.mm	(revision 174696)
+++ obj-c++.dg/except-1.mm	(working copy)
@@ -9,10 +9,10 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 // ObjectiveC class header
-@interface ObjCclass : Object {
+@interface ObjCclass : TestsuiteObject {
 }
 -(void)method1;
 -(void)method2;
@@ -64,4 +64,3 @@ void CPPclass::function1()
 	abort ();
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: obj-c++.dg/ivar-list-semi.mm
===================================================================
--- obj-c++.dg/ivar-list-semi.mm	(revision 174696)
+++ obj-c++.dg/ivar-list-semi.mm	(working copy)
@@ -1,9 +1,9 @@
 /* Allow for an optional semicolon following the ivar block.  */
 /* Contributed by: Ziemowit Laski <zlaski@apple.com>.  */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Tink : Object {
+@interface Tink : TestsuiteObject {
 @private
  unsigned long mCode[4];
 };
Index: obj-c++.dg/cxx-scope-2.mm
===================================================================
--- obj-c++.dg/cxx-scope-2.mm	(revision 174696)
+++ obj-c++.dg/cxx-scope-2.mm	(working copy)
@@ -3,11 +3,11 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 #include <iostream>
 #include <string>
 
-@interface iostream: Object
+@interface iostream: TestsuiteObject
 @end
 
 int main(void) {
Index: obj-c++.dg/selector-2.mm
===================================================================
--- obj-c++.dg/selector-2.mm	(revision 174696)
+++ obj-c++.dg/selector-2.mm	(working copy)
@@ -2,7 +2,7 @@
 /* { dg-options "-Wselector" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/objc.h>
 
 @interface Foo
 @end
Index: obj-c++.dg/exceptions-2.mm
===================================================================
--- obj-c++.dg/exceptions-2.mm	(revision 174696)
+++ obj-c++.dg/exceptions-2.mm	(working copy)
@@ -9,10 +9,10 @@
 /* This test checks the syntax @catch (...) which catches any
    exceptions.  Check that code using it runs correctly.  */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
-@interface MyObject : Object
+@interface MyObject : TestsuiteObject
 @end
 
 @implementation MyObject
@@ -47,7 +47,7 @@ int main (void)
   if (test ([MyObject new]) != 5)
     abort ();
 
-  if (test ([Object new]) != 6)
+  if (test ([TestsuiteObject new]) != 6)
     abort ();
 
   return 0;
Index: obj-c++.dg/comp-types-13.mm
===================================================================
--- obj-c++.dg/comp-types-13.mm	(revision 174696)
+++ obj-c++.dg/comp-types-13.mm	(working copy)
@@ -1,14 +1,14 @@
 /* When assigning function pointers, allow for covariant return types
    and contravariant argument types.  */
 /* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class Derived;
 
-Object *ExternFunc (Object *filePath, Object *key);
-typedef id FuncSignature (Object *arg1, Derived *arg2);
+TestsuiteObject *ExternFunc (TestsuiteObject *filePath, TestsuiteObject *key);
+typedef id FuncSignature (TestsuiteObject *arg1, Derived *arg2);
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 + (void)registerFunc:(FuncSignature *)function;
 @end
 
Index: obj-c++.dg/basic.mm
===================================================================
--- obj-c++.dg/basic.mm	(revision 174696)
+++ obj-c++.dg/basic.mm	(working copy)
@@ -2,27 +2,10 @@
 // { dg-do run }
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-//#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <iostream>
 
-#include <objc/Object.h>
-
-#ifdef __OBJC2__
-@interface Object (ADDITIONS)
-+ initialize;
-- init;
-+ alloc;
-+ new;
-@end
-@implementation Object (ADDITIONS)
-+ initialize  { return self; }
-- init  { return self; }
-+ alloc { return class_createInstance (self, 0); }
-+ new  { return [[self alloc] init]; }
-@end
-#endif
-
-@interface Greeter : Object
+@interface Greeter : TestsuiteObject
 - (void) greet: (const char *)msg;
 @end
 
@@ -38,4 +21,4 @@ main ()
   Greeter *obj = [Greeter new];
   [obj greet: "Hello from Objective-C++"];
 }
-//#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/isa-field-1.mm
===================================================================
--- obj-c++.dg/isa-field-1.mm	(revision 174696)
+++ obj-c++.dg/isa-field-1.mm	(working copy)
@@ -1,28 +1,34 @@
-/* Ensure there are no bizarre difficulties with accessing the 'isa' field of
-  objects.  This field is named differently between GNU and NeXT runtimes so
-  accessed via the CLASSPTRFIELD() macro defined in next-mapping.h */
+/* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include "../objc-obj-c++-shared/runtime.h"
 
-@interface Object (Test)
+@interface TestsuiteObject (Test)
 - (Class) test1: (id)object;
 @end
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 - (Class) test2: (id)object;
 @end
 
-@implementation Object (Test)
+@implementation TestsuiteObject (Test)
 
 Class test1(id object) {
-  Class cls = CLASSPTRFIELD(object);
-  return cls;
+#ifdef __NEXT_RUNTIME__
+    Class cls = object->isa;
+#else
+    Class cls = object->class_pointer;
+#endif
+    return cls;
 }
 - (Class) test1: (id)object {
-  Class cls = CLASSPTRFIELD(object);
-  return cls;
+#ifdef __NEXT_RUNTIME__
+    Class cls = object->isa;
+#else
+    Class cls = object->class_pointer;
+#endif
+    return cls;
 }
 
 @end
@@ -30,18 +36,29 @@ Class test1(id object) {
 @implementation Derived
 
 Class test2(id object) {
-  Class cls = CLASSPTRFIELD(object);
-  return cls;
+#ifdef __NEXT_RUNTIME__
+    Class cls = object->isa;
+#else
+    Class cls = object->class_pointer;
+#endif
+    return cls;
 }
 - (Class) test2: (id)object {
-  Class cls = CLASSPTRFIELD(object);
-  return cls;
+#ifdef __NEXT_RUNTIME__
+    Class cls = object->isa;
+#else
+    Class cls = object->class_pointer;
+#endif
+    return cls;
 }
 
 @end
 
 Class test3(id object) {
-  Class cls = CLASSPTRFIELD(object);
-  return cls;
+#ifdef __NEXT_RUNTIME__
+    Class cls = object->isa;
+#else
+    Class cls = object->class_pointer;
+#endif
+    return cls;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: obj-c++.dg/try-catch-1.mm
===================================================================
--- obj-c++.dg/try-catch-1.mm	(revision 174696)
+++ obj-c++.dg/try-catch-1.mm	(working copy)
@@ -4,14 +4,14 @@
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 #include <stdio.h>
 #include <setjmp.h>
 
-@interface Frob: Object
+@interface Frob: TestsuiteObject
 @end
 
-@implementation Frob: Object
+@implementation Frob: TestsuiteObject
 @end
 
 static int exc_control = 0;
Index: obj-c++.dg/local-decl-1.mm
===================================================================
--- obj-c++.dg/local-decl-1.mm	(revision 174696)
+++ obj-c++.dg/local-decl-1.mm	(working copy)
@@ -5,9 +5,9 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Sprite: Object {
+@interface Sprite: TestsuiteObject {
   int sprite, spree;
 }
 + (void)setFoo:(int)foo;
Index: obj-c++.dg/encode-4.mm
===================================================================
--- obj-c++.dg/encode-4.mm	(revision 174696)
+++ obj-c++.dg/encode-4.mm	(working copy)
@@ -16,23 +16,15 @@
 /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 
-#ifdef __NEXT_RUNTIME__
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
-
 #include <stdio.h>
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 typedef struct { float x, y; } XXPoint;
 typedef struct { float width, height; } XXSize;
 typedef struct _XXRect { XXPoint origin; XXSize size; } XXRect;
@@ -74,28 +66,28 @@ unsigned offs1, offs2, offs3, offs4, offs5, offs6,
 
 int main(void) {
   Foo *foo = [[Foo alloc] init];
-  Class fooClass = objc_get_class("Foo");
-  METHOD meth;
+  Class fooClass = objc_getClass("Foo");
+  Method meth;
   const char *string;
 
-  meth = class_get_instance_method(fooClass, @selector(setRect:withInt:));
+  meth = class_getInstanceMethod(fooClass, @selector(setRect:withInt:));
   offs2 = 9999;
-  sscanf(method_get_types(meth), "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
       &offs4, &offs5);
   CHECK_IF(!offs2);
   [foo setRect:my_rect withInt:123];
 
-  meth = class_get_instance_method(fooClass, @selector(char:float:double:long:));
+  meth = class_getInstanceMethod(fooClass, @selector(char:float:double:long:));
   offs2 = 9999;
   if (sizeof (long) == 8)
     string = "v%u@%u:%uc%uf%ud%uq%u";
   else
     string = "v%u@%u:%uc%uf%ud%ul%u";
-  sscanf(method_get_types(meth), string, &offs1, &offs2, &offs3,  
+  sscanf(method_getTypeEncoding(meth), string, &offs1, &offs2, &offs3,  
 	 &offs4, &offs5, &offs6, &offs7);
   CHECK_IF(!offs2);
   [foo char:'c' float:2.3 double:3.5 long:2345L];
 
   return 0;
 }  
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/method-23.mm
===================================================================
--- obj-c++.dg/method-23.mm	(revision 174696)
+++ obj-c++.dg/method-23.mm	(working copy)
@@ -2,10 +2,9 @@
    they should.  */
 /* { dg-do run } */
 /* { dg-options "-O2" } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.mm" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <string.h>
 #include <stdlib.h>
 
@@ -19,7 +18,7 @@ char *strcpy_like_callee(const char *s) {
 typedef char io_string_t[512];
 typedef char *(func_type)(const char *);
 
-@interface DeviceObject: Object
+@interface DeviceObject: TestsuiteObject
 - (void) func:(func_type)func stucPathInIORegistry:(io_string_t)ioRegPath;
 @end
 @implementation DeviceObject
Index: obj-c++.dg/try-catch-9.mm
===================================================================
--- obj-c++.dg/try-catch-9.mm	(revision 174696)
+++ obj-c++.dg/try-catch-9.mm	(working copy)
@@ -8,7 +8,7 @@
 /* { dg-prune-output ".*internal compiler error.*" } */
 /* { dg-options "-fobjc-exceptions -O2" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 #include <stdio.h>
 
@@ -35,13 +35,13 @@ void foo (int arg1, float *arg2)
     local6 = 18.0;
     pi = &gi2;
     pf = &gf2;
-    obj2 = obj1 = [Object new];
+    obj2 = obj1 = [TestsuiteObject new];
     arg1 = 17;
     arg2 = &gf2;
     
-    @throw [Object new];
+    @throw [TestsuiteObject new];
   }
-  @catch (Object *obj) {
+  @catch (TestsuiteObject *obj) {
    if (local1 != 123 || local2 != 345 || local3 != 5.0
        || local4 != 6.0 || local5 != 17 || local6 != 18.0) {
      printf("Abort 1\n");
@@ -66,4 +66,4 @@ int main(void) {
   foo(15, &gf1);
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/method-17.mm
===================================================================
--- obj-c++.dg/method-17.mm	(revision 174696)
+++ obj-c++.dg/method-17.mm	(working copy)
@@ -4,14 +4,14 @@
    take place).  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
 static double d = 4.5920234e2;
 
-@interface Foo : Object
+@interface Foo : TestsuiteObject
 -(void) brokenType: (int)x floatingPoint: (double)y;
 @end
 
@@ -30,4 +30,4 @@ int main(void)
 	[foo brokenType: (int)d floatingPoint: d];
 	return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/no-extra-load.mm
===================================================================
--- obj-c++.dg/no-extra-load.mm	(revision 174696)
+++ obj-c++.dg/no-extra-load.mm	(working copy)
@@ -2,10 +2,10 @@
 
 // { dg-do compile }
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 #include <iostream>
 
-@interface Greeter : Object
+@interface Greeter : TestsuiteObject
 - (void) greet: (const char *)msg;
 @end
 
Index: obj-c++.dg/property/property-1.mm
===================================================================
--- obj-c++.dg/property/property-1.mm	(revision 174696)
+++ obj-c++.dg/property/property-1.mm	(working copy)
@@ -1,11 +1,10 @@
 /* This program tests use of property provided setter/getter functions. */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.mm" } */
 
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface Bar : Object
+@interface Bar : TestsuiteObject
 {
   int iVar;
 }
Index: obj-c++.dg/selector-5.mm
===================================================================
--- obj-c++.dg/selector-5.mm	(revision 174696)
+++ obj-c++.dg/selector-5.mm	(working copy)
@@ -1,7 +1,7 @@
 /* { dg-options "" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/objc.h>
 
 int main()
 {
Index: obj-c++.dg/proto-lossage-3.mm
===================================================================
--- obj-c++.dg/proto-lossage-3.mm	(revision 174696)
+++ obj-c++.dg/proto-lossage-3.mm	(working copy)
@@ -3,10 +3,12 @@
    Problem report and original fix by richard@brainstorm.co.uk.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.mm" } */
+#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
-#include "../objc-obj-c++-shared/next-mapping.h"
-#include "../objc-obj-c++-shared/Protocol1.h"
+@interface MyClass
+- name;
+@end
 
 @protocol NoInstanceMethods
 + testMethod;
@@ -19,16 +21,9 @@
 int
 main()
 {
-#ifdef __OBJC2__
-protocol_getMethodDescription(@protocol(NoInstanceMethods), @selector(name), NO, YES);
-protocol_getMethodDescription(@protocol(NoInstanceMethods), @selector(name), NO, NO);
-protocol_getMethodDescription(@protocol(NoClassMethods), @selector(name), NO, YES);
-protocol_getMethodDescription(@protocol(NoClassMethods), @selector(name), NO, NO);
-#else
-[@protocol(NoInstanceMethods) descriptionForInstanceMethod: @selector(name)];
-[@protocol(NoInstanceMethods) descriptionForClassMethod: @selector(name)];
-[@protocol(NoClassMethods) descriptionForInstanceMethod: @selector(name)];
-[@protocol(NoClassMethods) descriptionForClassMethod: @selector(name)];
-#endif
+protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, YES);
+protocol_getMethodDescription (@protocol(NoInstanceMethods), @selector(name), YES, NO);
+protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, YES);
+protocol_getMethodDescription (@protocol(NoClassMethods), @selector(name), YES, NO);
 return 0;
 }
Index: obj-c++.dg/method-12.mm
===================================================================
--- obj-c++.dg/method-12.mm	(revision 174696)
+++ obj-c++.dg/method-12.mm	(working copy)
@@ -3,7 +3,7 @@
 /* { dg-options "-Wstrict-selector-match" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Protocol1.h"
+#include <objc/Protocol.h>
 
 @interface Base
 - (unsigned)port;
Index: obj-c++.dg/encode-7.mm
===================================================================
--- obj-c++.dg/encode-7.mm	(revision 174696)
+++ obj-c++.dg/encode-7.mm	(working copy)
@@ -9,21 +9,13 @@
 
 /* Contributed by Alexander Malmberg <alexander@malmberg.org>  */
 
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 #include <stdlib.h>
 #include <stdio.h>
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-#ifdef __NEXT_RUNTIME__
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
-
-@interface Test : Object
+@interface Test : TestsuiteObject
 { float j; }
 -(void) test2: (int [5])a with: (int [])b;
 -(id) test3: (Test **)b; /* { dg-message "previous declaration of .\\-\\(id\\)test3:\\(Test \\*\\*\\)b." } */
@@ -47,8 +39,8 @@ int offs1, offs2, offs3, offs4, offs5, offs6;
 
 int main(int argc, char **argv)
 {
-  Class testClass = objc_get_class("Test");
-  METHOD meth;
+  Class testClass = objc_getClass("Test");
+  Method meth;
 
   cc[0] = [Test new];
   CHECK_IF (bb[3] == 3);
@@ -58,16 +50,16 @@ int main(int argc, char **argv)
   [*c test2: bb with: bb + 5];
   CHECK_IF (bb[3] == 5);
 
-  meth = class_get_instance_method(testClass, @selector(test2:with:));
+  meth = class_getInstanceMethod(testClass, @selector(test2:with:));
   offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
-  sscanf(method_get_types(meth), "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
       &offs4, &offs5, &offs6);
   CHECK_IF (!offs2 && offs4 == 5 && offs3 > 0);
   CHECK_IF (offs5 == 2 * offs3 && offs6 == 3 * offs3 && offs1 == 4 * offs3);
   
-  meth = class_get_instance_method(testClass, @selector(test3:));
+  meth = class_getInstanceMethod(testClass, @selector(test3:));
   offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
-  sscanf(method_get_types(meth), "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
+  sscanf(method_getTypeEncoding(meth), "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
       &offs4, &offs5, &offs6);
   CHECK_IF (!offs2 && offs4 == 3 && offs5 == 4 && offs3 > 0);
   CHECK_IF (offs6 == 2 * offs3 && offs1 == 3 * offs3);
Index: obj-c++.dg/gnu-runtime-3.mm
===================================================================
--- obj-c++.dg/gnu-runtime-3.mm	(revision 174696)
+++ obj-c++.dg/gnu-runtime-3.mm	(working copy)
@@ -4,10 +4,10 @@
 /* { dg-do run } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
-@interface FooBar: Object
+@interface FooBar: TestsuiteObject
 - (void)boo;
 @end
 
Index: obj-c++.dg/try-catch-11.mm
===================================================================
--- obj-c++.dg/try-catch-11.mm	(revision 174696)
+++ obj-c++.dg/try-catch-11.mm	(working copy)
@@ -4,7 +4,7 @@
 /* { dg-options "-fobjc-exceptions" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol Proto1
 - (int)meth1;
@@ -14,11 +14,11 @@
 - (int)meth2;
 @end
 
-@interface MyClass: Object <Proto2> {
+@interface MyClass: TestsuiteObject <Proto2> {
   int a;
 }
 - (int)meth2;
-- (Object *)parm1: (id)p1 parm2: (id<Proto1>)p2;
+- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2;
 @end
 
 MyClass *mc1, *mc2;
@@ -27,7 +27,7 @@ MyClass *mc1, *mc2;
 - (int)meth2 {
   return a;
 }
-- (Object *)parm1: (id)p1 parm2: (id<Proto1>)p2 {
+- (TestsuiteObject *)parm1: (id)p1 parm2: (id<Proto1>)p2 {
   @try {
     mc2 = p2;   /* { dg-warning "type .id <Proto1>. does not conform to the .Proto2. protocol" } */
   }
Index: obj-c++.dg/comp-types-11.mm
===================================================================
--- obj-c++.dg/comp-types-11.mm	(revision 174696)
+++ obj-c++.dg/comp-types-11.mm	(working copy)
@@ -1,22 +1,22 @@
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol Foo
 - (id)meth1;
 - (id)meth2:(int)arg;
 @end
 
-@interface Derived1: Object
+@interface Derived1: TestsuiteObject
 @end
 
-@interface Derived2: Object
+@interface Derived2: TestsuiteObject
 + (Derived1 *)new;
 @end
 
 id<Foo> func(void) {
-  Object *o = [Object new];
-  return o;  /* { dg-warning "class .Object. does not implement the .Foo. protocol" } */
+  TestsuiteObject *o = [TestsuiteObject new];
+  return o;  /* { dg-warning "class .TestsuiteObject. does not implement the .Foo. protocol" } */
 }
 
 @implementation Derived2
Index: obj-c++.dg/method-6.mm
===================================================================
--- obj-c++.dg/method-6.mm	(revision 174696)
+++ obj-c++.dg/method-6.mm	(working copy)
@@ -3,7 +3,7 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class NotKnown;
 
Index: obj-c++.dg/fsf-package-0.m
===================================================================
--- obj-c++.dg/fsf-package-0.m	(revision 174696)
+++ obj-c++.dg/fsf-package-0.m	(working copy)
@@ -1,9 +1,8 @@
 /* { dg-do compile } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#include <objc/objc-api.h>
+#import "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object
+@interface obj : TestsuiteObject
 {
 @public
   int v1;
Index: obj-c++.dg/torture/tls/thr-init-3.mm
===================================================================
--- obj-c++.dg/torture/tls/thr-init-3.mm	(revision 174696)
+++ obj-c++.dg/torture/tls/thr-init-3.mm	(working copy)
@@ -2,14 +2,13 @@
 /* { dg-require-effective-target tls } */
 /* { dg-add-options tls } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.mm" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 extern "C" {
 extern void abort ();
 }
 
-@interface tsObj: Object {
+@interface tsObj: TestsuiteObject {
   int ai ;
 }
 
Index: obj-c++.dg/torture/trivial.mm
===================================================================
--- obj-c++.dg/torture/trivial.mm	(revision 174696)
+++ obj-c++.dg/torture/trivial.mm	(working copy)
@@ -1,12 +1,11 @@
 // { dg-do run }
 
 // { dg-xfail-run-if "OBJC2 runtime" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime"  } { "-fgnu-runtime" } }
-// { dg-additional-sources "../../objc-obj-c++-shared/Object1.mm" }
 
-#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/TestsuiteObject.m"
 
 int main(void)
 {
-  [Object class];
+  [TestsuiteObject class];
   return 0;
 }
Index: obj-c++.dg/torture/strings/string1.mm
===================================================================
--- obj-c++.dg/torture/strings/string1.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/string1.mm	(working copy)
@@ -3,11 +3,8 @@
 /* { dg-do run } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.mm ../../../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */
+/* { dg-additional-sources "../../../objc-obj-c++-shared/nsconstantstring-class-impl.mm" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
-#include "../../../objc-obj-c++-shared/next-mapping.h"
-
 #include <string.h>
 #include <stdlib.h>
 
Index: obj-c++.dg/torture/strings/const-str-10.mm
===================================================================
--- obj-c++.dg/torture/strings/const-str-10.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/const-str-10.mm	(working copy)
@@ -6,7 +6,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface NSString: Object
 @end
Index: obj-c++.dg/torture/strings/const-str-11.mm
===================================================================
--- obj-c++.dg/torture/strings/const-str-11.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/const-str-11.mm	(working copy)
@@ -7,7 +7,7 @@
 /* { dg-options "-fconstant-string-class=XStr" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface XString: Object {
 @protected
Index: obj-c++.dg/torture/strings/const-str-7.mm
===================================================================
--- obj-c++.dg/torture/strings/const-str-7.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/const-str-7.mm	(working copy)
@@ -5,28 +5,29 @@
 /* { dg-do run } */
 /* { dg-options "-fconstant-string-class=Foo" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.mm" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <objc/objc.h>
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   char *cString;
   unsigned int len;
 }
 - (char *)customString;
 @end
 
+#ifdef __NEXT_RUNTIME__
 #ifdef NEXT_OBJC_USE_NEW_INTERFACE
 Class  _FooClassReference;
 #else
 struct objc_class _FooClassReference;
 #endif
+#endif
 
-@implementation Foo : Object
+@implementation Foo : TestsuiteObject
 - (char *)customString {
   return cString;
 }
Index: obj-c++.dg/torture/strings/const-str-8.mm
===================================================================
--- obj-c++.dg/torture/strings/const-str-8.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/const-str-8.mm	(working copy)
@@ -4,24 +4,25 @@
 /* { dg-do run { target *-*-darwin* } } */
 /* { dg-options "-fconstant-string-class=Foo" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
-/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.mm" } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
-@interface Foo: Object {
+@interface Foo: TestsuiteObject {
   char *cString;
   unsigned int len;
 }
 @end
 
+#ifdef __NEXT_RUNTIME__
 #ifdef NEXT_OBJC_USE_NEW_INTERFACE
 Class _FooClassReference;
 #else
 struct objc_class _FooClassReference;
 #endif
+#endif
 
-@implementation Foo : Object
+@implementation Foo : TestsuiteObject
 - (char *)customString {
   return cString;
 }
Index: obj-c++.dg/torture/strings/const-str-9.mm
===================================================================
--- obj-c++.dg/torture/strings/const-str-9.mm	(revision 174696)
+++ obj-c++.dg/torture/strings/const-str-9.mm	(working copy)
@@ -5,7 +5,7 @@
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */
 
-#include "../../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
 
 @interface NSConstantString: Object {
   char *cString;
Index: obj-c++.dg/method-21.mm
===================================================================
--- obj-c++.dg/method-21.mm	(revision 174696)
+++ obj-c++.dg/method-21.mm	(working copy)
@@ -2,9 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-Wreturn-type -Wextra" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 - (id) meth1;
 - (void) meth2;
 @end
@@ -14,7 +14,7 @@ extern int bar;
 @implementation Foo
 - (id) meth1 {
   if (bar)
-    return [Object new];
+    return [TestsuiteObject new];
   return; /* { dg-error "return.statement with no value" } */
 }
 - (void) meth2 {
Index: obj-c++.dg/super-class-2.mm
===================================================================
--- obj-c++.dg/super-class-2.mm	(revision 174696)
+++ obj-c++.dg/super-class-2.mm	(working copy)
@@ -4,11 +4,11 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @class MyWpModule;
 
-@compatibility_alias MyObject Object;
+@compatibility_alias MyObject TestsuiteObject;
 @compatibility_alias FictitiousModule MyWpModule;
 
 @protocol MySelTarget
Index: obj-c++.dg/try-catch-7.mm
===================================================================
--- obj-c++.dg/try-catch-7.mm	(revision 174696)
+++ obj-c++.dg/try-catch-7.mm	(working copy)
@@ -1,17 +1,17 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 int main (int argc, const char * argv[]) {
-  Object * pool = [Object new];
+  TestsuiteObject * pool = [TestsuiteObject new];
   int a;
 
   if ( 1 ) {
     @try {
       a = 1;
     }
-    @catch (Object *e) {
+    @catch (TestsuiteObject *e) {
       a = 2;
     }
     @finally {
Index: obj-c++.dg/method-15.mm
===================================================================
--- obj-c++.dg/method-15.mm	(revision 174696)
+++ obj-c++.dg/method-15.mm	(working copy)
@@ -3,10 +3,10 @@
 /* { dg-options "-Wstrict-selector-match" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 @protocol MyObject
-- (id)initWithData:(Object *)data;
+- (id)initWithData:(TestsuiteObject *)data;
 @end
 
 @protocol SomeOther
@@ -17,9 +17,9 @@
 - (id)initWithData:(id<MyObject, MyCoding>)data;
 @end
 
-@interface NTGridDataObject: Object <MyCoding>
+@interface NTGridDataObject: TestsuiteObject <MyCoding>
 {
-    Object<MyCoding> *_data;
+    TestsuiteObject<MyCoding> *_data;
 }
 + (NTGridDataObject*)dataObject:(id<MyObject, MyCoding>)data;
 @end
@@ -32,7 +32,7 @@
 {
     NTGridDataObject *result = [[NTGridDataObject alloc] initWithData:data];
      /* { dg-warning "multiple methods named .\\-initWithData:. found" "" { target *-*-* } 33 } */
-     /* { dg-message "using .\\-\\(id\\)initWithData:\\(Object \\*\\)data." "" { target *-*-* } 9 } */
+     /* { dg-message "using .\\-\\(id\\)initWithData:\\(TestsuiteObject \\*\\)data." "" { target *-*-* } 9 } */
      /* { dg-message "also found .\\-\\(id\\)initWithData:\\(id <MyObject, MyCoding>\\)data." "" { target *-*-* } 17 } */
      /* { dg-message "also found .\\-\\(id\\)initWithData:\\(int\\)data." "" { target *-*-* } 13 } */
 
Index: obj-c++.dg/layout-1.mm
===================================================================
--- obj-c++.dg/layout-1.mm	(revision 174696)
+++ obj-c++.dg/layout-1.mm	(working copy)
@@ -3,13 +3,13 @@
 /* { dg-do compile } */
 /* { dg-options "-Wpadded -Wpacked -Wabi" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived1: Object
+@interface Derived1: TestsuiteObject
 { }
 @end
 
-@interface Derived2: Object
+@interface Derived2: TestsuiteObject
 - (id) foo;
 @end
 
Index: obj-c++.dg/attributes/method-attribute-1.mm
===================================================================
--- obj-c++.dg/attributes/method-attribute-1.mm	(revision 174696)
+++ obj-c++.dg/attributes/method-attribute-1.mm	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var; 
 } 
Index: obj-c++.dg/attributes/method-attribute-2.mm
===================================================================
--- obj-c++.dg/attributes/method-attribute-2.mm	(revision 174696)
+++ obj-c++.dg/attributes/method-attribute-2.mm	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var; 
 } 
Index: obj-c++.dg/attributes/method-attribute-3.mm
===================================================================
--- obj-c++.dg/attributes/method-attribute-3.mm	(revision 174696)
+++ obj-c++.dg/attributes/method-attribute-3.mm	(working copy)
@@ -1,8 +1,8 @@
 /* { dg-do compile } */
 
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object {
+@interface obj : TestsuiteObject {
 @public 
   int var;
 }
Index: obj-c++.dg/attributes/categ-attribute-1.mm
===================================================================
--- obj-c++.dg/attributes/categ-attribute-1.mm	(revision 174696)
+++ obj-c++.dg/attributes/categ-attribute-1.mm	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object { 
+@interface obj : TestsuiteObject { 
 @public 
   int var; 
 } 
Index: obj-c++.dg/attributes/categ-attribute-2.mm
===================================================================
--- obj-c++.dg/attributes/categ-attribute-2.mm	(revision 174696)
+++ obj-c++.dg/attributes/categ-attribute-2.mm	(working copy)
@@ -1,9 +1,9 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include "../../objc-obj-c++-shared/Object1.h"
+#include "../../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface obj : Object { 
+@interface obj : TestsuiteObject { 
 @public 
   int var; 
 } 
Index: obj-c++.dg/strings/strings-1.mm
===================================================================
--- obj-c++.dg/strings/strings-1.mm	(revision 174696)
+++ obj-c++.dg/strings/strings-1.mm	(working copy)
@@ -1,8 +1,7 @@
 /* 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/runtime.h"
 #ifndef __NEXT_RUNTIME__
 #include <objc/NXConstStr.h>
 #endif
@@ -30,4 +29,4 @@ id test_invalid7          = @"te" @"s" @@"t";    /
 id test_invalid8          = @"te" @@"s" @"t";    /* { dg-error "repeated .@. before Objective-C string" } */
 id test_invalid9          = @"te" @"s" @"t" @;   /* { dg-error "stray .@. in program" } */
 id test_invalidA          = @"te" @ st;          /* { dg-error "stray .@. in program" } */
-                                                 /* { dg-error "expected" "" { target *-*-* } 32 } */
+                                                 /* { dg-error "expected" "" { target *-*-* } 31 } */
Index: obj-c++.dg/strings/const-str-12.mm
===================================================================
--- obj-c++.dg/strings/const-str-12.mm	(revision 174696)
+++ obj-c++.dg/strings/const-str-12.mm	(working copy)
@@ -5,7 +5,8 @@
 /* { dg-options "-fconstant-string-class=Foo" } */
 /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
 
-#include "../../objc-obj-c++-shared/Object1.h"
+#include <objc/Object.h>
+#include "../../objc-obj-c++-shared/objc-test-suite-types.h"
 
 @interface Foo: Object {
   char *cString;
@@ -18,11 +19,7 @@
 + (Foo *) getString: (int) which;
 @end
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-Class _FooClassReference;
-#else
-struct objc_class _FooClassReference;
-#endif
+TNS_STRING_REF_T _FooClassReference;  /* Only used by NeXT.  */
 
 @implementation Bar
 + (Foo *) getString: (int) which {
Index: obj-c++.dg/cxx-ivars-1.mm
===================================================================
--- obj-c++.dg/cxx-ivars-1.mm	(revision 174696)
+++ obj-c++.dg/cxx-ivars-1.mm	(working copy)
@@ -3,7 +3,7 @@
 // { dg-options "-fno-objc-call-cxx-cdtors" }
 // { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } 
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 #define CHECK_IF(expr) if(!(expr)) abort()
 
@@ -17,7 +17,7 @@ struct cxx_struct {
   }
 };
 
-@interface Manip : Object {
+@interface Manip : TestsuiteObject {
   int c;
   cxx_struct s;   // { dg-warning "user-defined destructor" }
                   // { dg-warning "constructors and destructors will not be invoked" "" { target *-*-* } 22 }
@@ -40,4 +40,4 @@ int main (void)
   [obj manipulate_ivars];
   [obj free];
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/threedotthree-abi-1.mm
===================================================================
--- obj-c++.dg/threedotthree-abi-1.mm	(revision 174696)
+++ obj-c++.dg/threedotthree-abi-1.mm	(working copy)
@@ -6,14 +6,11 @@
 
 #include <stdio.h>
 #include <string.h>
-#include "../objc-obj-c++-shared/Protocol1.h"
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
+#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
 extern "C" void abort();
 
-
 @protocol CommonProtocol
 
 -(oneway void)methodCall_On:(in bycopy id)someValue_On;
Index: obj-c++.dg/try-catch-2.mm
===================================================================
--- obj-c++.dg/try-catch-2.mm	(revision 174696)
+++ obj-c++.dg/try-catch-2.mm	(working copy)
@@ -4,10 +4,10 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "PR23616" { *-*-* } { "-fgnu-runtime" } { "-fnext-runtime" } } */
-/* { dg-xfail-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" "-fgnu-runtime" } { "" } } 
+/* { dg-xfail-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" "-fgnu-runtime" } { "" } } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -18,10 +18,10 @@
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Frob: Object
+@interface Frob: TestsuiteObject
 @end
 
-@implementation Frob: Object
+@implementation Frob: TestsuiteObject
 @end
 
 static Frob* _connection = nil;
@@ -29,7 +29,7 @@ static Frob* _connection = nil;
 //--------------------------------------------------------------------
 
 
-void test (Object* sendPort)
+void test (TestsuiteObject* sendPort)
 {
   int cleanupPorts = 1;
   Frob* receivePort = nil;
@@ -56,7 +56,7 @@ static Frob* _connection = nil;
     printf ("cleanupPorts = %d\n", cleanupPorts);
     printf ("---\n");		
 		
-    @throw [Object new];
+    @throw [TestsuiteObject new];
   }
   @catch(Frob *obj) {
     printf ("Exception caught by incorrect handler!\n");
@@ -75,7 +75,7 @@ static Frob* _connection = nil;
 }
 
 int main (void) {
-  test((Object *)-1);
+  test((TestsuiteObject *)-1);
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/method-10.mm
===================================================================
--- obj-c++.dg/method-10.mm	(revision 174696)
+++ obj-c++.dg/method-10.mm	(working copy)
@@ -3,17 +3,17 @@
 /* { dg-options "" } */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Int1: Object
+@interface Int1: TestsuiteObject
 + (int) classMeth;
 - (int) instanceMeth;
 @end
 
-@interface Int2: Object
+@interface Int2: TestsuiteObject
 + (int) classMeth;      
 - (int) instanceMeth;
 @end
@@ -43,4 +43,4 @@ int main(void) {
   CHECK_IF([(Int1Alias *)int2typedef instanceMeth] == 1697);
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/encode-5.mm
===================================================================
--- obj-c++.dg/encode-5.mm	(revision 174696)
+++ obj-c++.dg/encode-5.mm	(working copy)
@@ -2,26 +2,19 @@
 /* Contributed by Ziemowit Laski <zlaski@apple.com>.  */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
-#include "../objc-obj-c++-shared/Protocol1.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "../objc-obj-c++-shared/runtime.h"
+#include <objc/Protocol.h>
+
 #ifdef __cplusplus
 #define ProtoBool bool
 #else
 #define ProtoBool _Bool
 #endif
 
-#ifdef __NEXT_RUNTIME__
-#define METHOD Method
-#else
-#include <objc/objc-api.h>
-#define METHOD Method_t
-#define method_get_types(M) (M)->method_types
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-
 #define CHECK_IF(expr) if(!(expr)) abort()
 
 enum Enum {
@@ -43,7 +36,7 @@ typedef struct _XXRect { XXPoint origin; XXSize si
 
 Protocol *proto = @protocol(Proto);
 struct objc_method_description *meth;
-
+struct objc_method_description meth_object;
 unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
 
 static void scan_initial(const char *pattern) {
@@ -56,7 +49,9 @@ static void scan_initial(const char *pattern) {
 int main(void) {
   const char *string;
 
-  meth = [proto descriptionForInstanceMethod: @selector(char:float:double:unsigned:short:long:)];
+  meth_object = protocol_getMethodDescription (proto,
+		   @selector(char:float:double:unsigned:short:long:), YES, YES);
+  meth = &meth_object;
   if (sizeof (long) == 8)
     string = "v%u@%u:%uc%uf%ud%uI%us%uq%u";
   else
@@ -65,11 +60,16 @@ int main(void) {
   CHECK_IF(offs3 == offs2 + sizeof(int) && offs4 == offs3 + sizeof(float));
   CHECK_IF(offs5 == offs4 + sizeof(double) && offs6 == offs5 + sizeof(unsigned));
   CHECK_IF(offs7 == offs6 + sizeof(int) && totsize == offs7 + sizeof(long));
-  meth = [proto descriptionForInstanceMethod: @selector(setRect:withBool:withInt:)];
+  meth_object = protocol_getMethodDescription (proto,
+		  @selector(setRect:withBool:withInt:), YES, YES);
+  meth = &meth_object;
   scan_initial("^v%u@%u:%u{_XXRect={?=ff(__XXAngle=II)}{?=dd}^{_XXRect}}%uB%ui%u");
   CHECK_IF(offs3 == offs2 + sizeof(XXRect) && offs4 == offs3 + sizeof(int));
   CHECK_IF(totsize == offs4 + sizeof(int));
-  meth = [proto descriptionForClassMethod: @selector(getEnum:enum:bool:)];
+  meth_object = protocol_getMethodDescription (proto,
+		  @selector(getEnum:enum:bool:), YES, NO);
+  meth = &meth_object; 
+
   /* Here we have the complication that 'enum Enum' could be encoded
      as 'i' on __NEXT_RUNTIME_, and (most likely) as 'I' on the GNU
      runtime.  So we get the @encode(enum Enum), then put it into the
@@ -80,16 +80,17 @@ int main(void) {
     char pattern[1024];
 
     sprintf (pattern, "^%s%%u@%%u:%%u^{?=ff(__XXAngle=II)}%%u%s%%uc%%u",
-            @encode(enum Enum), @encode(enum Enum));
+	     @encode(enum Enum), @encode(enum Enum));
     scan_initial(pattern);
   }
 
-
   CHECK_IF(offs3 == offs2 + sizeof(XXPoint *) && offs4 == offs3 + sizeof(enum Enum));
   CHECK_IF(totsize == offs4 + sizeof(int));  /* 'ObjCBool' is really 'char' */
-  meth = [proto descriptionForClassMethod: @selector(getBool:)];         
+  meth_object = protocol_getMethodDescription (proto,
+		  @selector(getBool:), YES, NO);
+  meth = &meth_object;
   scan_initial("^^B%u@%u:%u^*%u");
   CHECK_IF(totsize == offs2 + sizeof(ObjCBool **));
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/va-meth-1.mm
===================================================================
--- obj-c++.dg/va-meth-1.mm	(revision 174696)
+++ obj-c++.dg/va-meth-1.mm	(working copy)
@@ -2,13 +2,13 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdarg.h>
 #include <stdlib.h>
 
 /* Test methods with "C-style" trailing arguments, with or without ellipsis. */
 
-@interface MathClass: Object
+@interface MathClass: TestsuiteObject
 /* sum positive numbers; -1 ends the list */
 + (int) sum: (int) firstNumber, int secondNumber, ...;
 + (int) prod: (int) firstNumber, int secondNumber, int thirdNumber;
@@ -72,4 +72,4 @@ int main (void)
   
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/objc-gc-3.mm
===================================================================
--- obj-c++.dg/objc-gc-3.mm	(revision 174696)
+++ obj-c++.dg/objc-gc-3.mm	(working copy)
@@ -6,11 +6,12 @@
 /* { dg-options "-fobjc-gc" } */
 /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include "../objc-obj-c++-shared/runtime.h"
 
 @class MyWindow;
 
-@interface MyDocument : Object {
+@interface MyDocument : TestsuiteObject {
     MyWindow *_window;
 }
 @end
@@ -29,7 +30,7 @@
 @end
 
 @interface MyTextFileDocument : MyFileDocument {
-    Object *_textStorage;
+    TestsuiteObject *_textStorage;
     struct __tfdFlags {
         unsigned int immutable:1;
         unsigned int lineEnding:2;
Index: obj-c++.dg/fix-and-continue-2.mm
===================================================================
--- obj-c++.dg/fix-and-continue-2.mm	(revision 174696)
+++ obj-c++.dg/fix-and-continue-2.mm	(working copy)
@@ -6,18 +6,18 @@
 /* { dg-do assemble { target *-*-darwin* } } */
 /* { dg-options "-mfix-and-continue" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Foo: Object
-+ (Object *)indexableFileTypes;
+@interface Foo: TestsuiteObject
++ (TestsuiteObject *)indexableFileTypes;
 @end
 
 @implementation Foo
-+ (Object *)indexableFileTypes
++ (TestsuiteObject *)indexableFileTypes
 {
-  static Object *fileTypes = 0;
+  static TestsuiteObject *fileTypes = 0;
   if(!fileTypes) {
-    fileTypes = [Object new];
+    fileTypes = [TestsuiteObject new];
   }
   return fileTypes;
 }
Index: obj-c++.dg/lookup-2.mm
===================================================================
--- obj-c++.dg/lookup-2.mm	(revision 174696)
+++ obj-c++.dg/lookup-2.mm	(working copy)
@@ -1,6 +1,6 @@
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 class MyWidget {
@@ -15,13 +15,13 @@ MyWidget gWidget;
 - (MyWidget *)widget;
 @end
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 @end
 
 @interface Bar: Foo <MyProto>
 @end
 
-@interface Container: Object
+@interface Container: TestsuiteObject
 + (MyWidget *)elementForView:(Foo *)view;
 @end
 
@@ -38,7 +38,8 @@ MyWidget gWidget;
 + (MyWidget *)elementForView:(Foo *)view
 {
     MyWidget *widget = 0;
-    if ([view conformsTo:@protocol(MyProto)]) {
+    if (class_conformsToProtocol (object_getClass (view),
+				  @protocol(MyProto))) {
         widget = [(Foo <MyProto> *)view widget];
     }
     return widget;
@@ -55,4 +56,3 @@ int main(void) {
   return 0;
 }
 
-#include "../objc-obj-c++-shared/Object1-implementation.h"
Index: obj-c++.dg/gnu-runtime-1.mm
===================================================================
--- obj-c++.dg/gnu-runtime-1.mm	(revision 174696)
+++ obj-c++.dg/gnu-runtime-1.mm	(working copy)
@@ -4,9 +4,9 @@
 /* { dg-do compile } */
 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
 
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface FooBar: Object
+@interface FooBar: TestsuiteObject
 - (void)boo;
 @end
 
Index: obj-c++.dg/template-3.mm
===================================================================
--- obj-c++.dg/template-3.mm	(revision 174696)
+++ obj-c++.dg/template-3.mm	(working copy)
@@ -4,12 +4,12 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface ObjCClass : Object
+@interface ObjCClass : TestsuiteObject
 {
 @public
   int info;
@@ -78,4 +78,4 @@ int main(void) {
   
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/bitfield-1.mm
===================================================================
--- obj-c++.dg/bitfield-1.mm	(revision 174696)
+++ obj-c++.dg/bitfield-1.mm	(working copy)
@@ -9,7 +9,7 @@
 
 /* Leave blank lines here to keep warnings on the same lines.  */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <objc/objc.h>
 #include <stdlib.h>
 
@@ -17,7 +17,7 @@
 
 enum Enum { zero, one, two, three, four };
 
-@interface Base: Object {
+@interface Base: TestsuiteObject {
 @public
   unsigned a: 2;
   int b: 3;
Index: obj-c++.dg/selector-6.mm
===================================================================
--- obj-c++.dg/selector-6.mm	(revision 174696)
+++ obj-c++.dg/selector-6.mm	(working copy)
@@ -1,7 +1,7 @@
 /* { dg-options "" } */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include <objc/objc.h>
 
 int main()
 {
Index: obj-c++.dg/set-not-used-1.mm
===================================================================
--- obj-c++.dg/set-not-used-1.mm	(revision 174696)
+++ obj-c++.dg/set-not-used-1.mm	(working copy)
@@ -2,10 +2,9 @@
 /* { dg-do compile } */
 /* { dg-options "-Wunused-but-set-variable" } */
 
-#import "../objc-obj-c++-shared/Object1.h"
-#include <objc/objc-api.h>
+#import "../objc-obj-c++-shared/TestsuiteObject.m"
 
-@interface obj : Object
+@interface obj : TestsuiteObject
 {
   int value;
 }
@@ -13,7 +12,7 @@
 - (void) setValue: (int)number;
 @end
 
-@implementation obj : Object
+@implementation obj : TestsuiteObject
 
 - (int) value { return value; }
 - (void) setValue: (int)number { value = number; }
Index: obj-c++.dg/method-13.mm
===================================================================
--- obj-c++.dg/method-13.mm	(revision 174696)
+++ obj-c++.dg/method-13.mm	(working copy)
@@ -1,11 +1,11 @@
 /* Check if finding multiple signatures for a method is handled gracefully.  Author:  Ziemowit Laski <zlaski@apple.com>  */
 /* { dg-options "-Wstrict-selector-match" } */
 /* { dg-do compile } */
+#include <objc/objc.h>
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-#include "../objc-obj-c++-shared/Object1.h"
-
 @interface Class1
-- (void)setWindow:(Object *)wdw;
+- (void)setWindow:(TestsuiteObject *)wdw;
 @end
 
 @interface Class2
@@ -13,14 +13,14 @@
 @end
 
 id foo(void) {
-  Object *obj = [[Object alloc] init];
+  TestsuiteObject *obj = [[TestsuiteObject alloc] init];
   id obj2 = obj;
-  [obj setWindow:nil];  /* { dg-warning ".Object. may not respond to .\\-setWindow:." } */
+  [obj setWindow:nil];  /* { dg-warning ".TestsuiteObject. may not respond to .\\-setWindow:." } */
        /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 18 } */
        /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 18 } */
        /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 18 } */
   [obj2 setWindow:nil]; /* { dg-warning "multiple methods named .\\-setWindow:. found" } */
-       /* { dg-message "using .\\-\\(void\\)setWindow:\\(Object \\*\\)wdw." "" { target *-*-* } 8 } */
+       /* { dg-message "using .\\-\\(void\\)setWindow:\\(TestsuiteObject \\*\\)wdw." "" { target *-*-* } 8 } */
        /* { dg-message "also found .\\-\\(void\\)setWindow:\\(Class1 \\*\\)window." "" { target *-*-* } 12 } */
 
   return obj;
Index: obj-c++.dg/proto-qual-1.mm
===================================================================
--- obj-c++.dg/proto-qual-1.mm	(revision 174696)
+++ obj-c++.dg/proto-qual-1.mm	(working copy)
@@ -6,10 +6,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
-#include "../objc-obj-c++-shared/next-mapping.h"
+#include "../objc-obj-c++-shared/runtime.h"
 #include <objc/Protocol.h>
 
 /* The encoded parameter sizes will be rounded up to match pointer alignment.  */
@@ -34,9 +31,7 @@
 
 Protocol *proto;
 struct objc_method_description *meth;
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
 struct objc_method_description meth_object;
-#endif
 unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
 
 static void scan_initial(const char *pattern) {
@@ -48,22 +43,18 @@ static void scan_initial(const char *pattern) {
 
 int main(void) {
   proto = @protocol(Retain);
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  meth_object = protocol_getMethodDescription (proto, @selector(address:with:),
-						YES, YES);
+
+  meth_object = protocol_getMethodDescription (proto,
+		  @selector(address:with:), YES, YES);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForInstanceMethod: @selector(address:with:)];
-#endif
+
   scan_initial("O@%u@%u:%uNR@%uo^^S%u");
   CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(unsigned));
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  meth_object = protocol_getMethodDescription (proto,  @selector(retainArgument:with:),
-						YES, NO);
+
+  meth_object = protocol_getMethodDescription (proto,
+		  @selector(retainArgument:with:), YES, NO);
   meth = &meth_object;
-#else
-  meth = [proto descriptionForClassMethod: @selector(retainArgument:with:)];
-#endif
+
   scan_initial("Vv%u@%u:%uOo@%un^*%u");
   CHECK_IF(offs3 == offs2 + aligned_sizeof(id) && totsize == offs3 + aligned_sizeof(char **));
   return 0;
Index: obj-c++.dg/class-protocol-1.mm
===================================================================
--- obj-c++.dg/class-protocol-1.mm	(revision 174696)
+++ obj-c++.dg/class-protocol-1.mm	(working copy)
@@ -3,7 +3,7 @@
 /* { dg-do compile } */
 
 #include <objc/objc.h>
-#include <objc/objc-api.h>
+#include "../objc-obj-c++-shared/runtime.h"
 
 @protocol MyProto1
 +(void)doItClass1;
Index: obj-c++.dg/qual-types-1.mm
===================================================================
--- obj-c++.dg/qual-types-1.mm	(revision 174696)
+++ obj-c++.dg/qual-types-1.mm	(working copy)
@@ -4,7 +4,7 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
@@ -19,7 +19,7 @@
 - init; 
 @end
 
-@interface Foo: Object
+@interface Foo: TestsuiteObject
 { @public int val; }
 - init;
 @end
@@ -37,7 +37,7 @@ template <typename T> struct Holder
   Holder(void) { obj = [[T alloc] init]; }
   ~Holder(void) { [obj free]; --counter; }
   id <Init, Zone> getObjId(void) { return obj; }
-  Object <Zone, Init> *getObj(void) { return obj; }
+  TestsuiteObject <Zone, Init> *getObj(void) { return obj; }
 };
 
 typedef Holder <Foo <Init, Zone> > FooHolder;
@@ -66,4 +66,4 @@ int main (void) {
   CHECK_IF(FooHolder::counter == 0);
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/cxx-scope-1.mm
===================================================================
--- obj-c++.dg/cxx-scope-1.mm	(revision 174696)
+++ obj-c++.dg/cxx-scope-1.mm	(working copy)
@@ -3,7 +3,7 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 @class Derived;
@@ -18,7 +18,7 @@ Derived *CxxClass::get_instance(int offs) {
   return inst[offs];
 }
 
-@interface Derived: Object {
+@interface Derived: TestsuiteObject {
   int value;
 }
 -(id)initWithValue:(int)val;
@@ -51,4 +51,4 @@ int main(void) {
 
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/sync-2.mm
===================================================================
--- obj-c++.dg/sync-2.mm	(revision 174696)
+++ obj-c++.dg/sync-2.mm	(working copy)
@@ -1,13 +1,13 @@
 /* Make sure that @synchronized parses and a very basic test runs.  */
 /* { dg-options "-fobjc-exceptions -fgnu-runtime" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 int main (void)
 {
-  Object *a = [Object new];
-  Object *b = [Object new];
-  Object *c = [Object new];
+  TestsuiteObject *a = [TestsuiteObject new];
+  TestsuiteObject *b = [TestsuiteObject new];
+  TestsuiteObject *c = [TestsuiteObject new];
 
   /* This single-threaded test just checks that @synchronized() uses a
      recursive mutex, and that the runtime at least doesn't crash
Index: obj-c++.dg/comp-types-12.mm
===================================================================
--- obj-c++.dg/comp-types-12.mm	(revision 174696)
+++ obj-c++.dg/comp-types-12.mm	(working copy)
@@ -1,10 +1,10 @@
 /* { dg-do compile } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 @end
 
-extern Object* foo(void);
+extern TestsuiteObject* foo(void);
 static Derived *test(void)
 {
    Derived *m = foo();   /* { dg-warning "initialization from distinct Objective\\-C type" } */
Index: obj-c++.dg/bitfield-4.mm
===================================================================
--- obj-c++.dg/bitfield-4.mm	(revision 174696)
+++ obj-c++.dg/bitfield-4.mm	(working copy)
@@ -4,7 +4,7 @@
 /* { dg-do run } */
 /* { dg-options "-Wpadded" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 
 #include <stdlib.h>
 #include <string.h>
@@ -13,7 +13,7 @@
 
 enum Enum { one, two, three, four };
 
-@interface Base: Object {
+@interface Base: TestsuiteObject {
   unsigned a: 2;
   int b: 3;
   enum Enum c: 4;
Index: obj-c++.dg/method-22.mm
===================================================================
--- obj-c++.dg/method-22.mm	(revision 174696)
+++ obj-c++.dg/method-22.mm	(working copy)
@@ -1,15 +1,14 @@
 /* Ensure that overload resolution does not produce warnings as
    side-effects.  */
 /* { dg-do run } */
-/* { dg-additional-sources "../objc-obj-c++-shared/Object1.mm" } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(E) if(!(E)) abort ()
 
-@interface MyCursor: Object
+@interface MyCursor: TestsuiteObject
 + (MyCursor *)crosshairCursor;
 @end
 
Index: obj-c++.dg/try-catch-8.mm
===================================================================
--- obj-c++.dg/try-catch-8.mm	(revision 174696)
+++ obj-c++.dg/try-catch-8.mm	(working copy)
@@ -3,9 +3,9 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface Derived: Object
+@interface Derived: TestsuiteObject
 - (id) meth;
 @end
 
Index: obj-c++.dg/template-1.mm
===================================================================
--- obj-c++.dg/template-1.mm	(revision 174696)
+++ obj-c++.dg/template-1.mm	(working copy)
@@ -3,12 +3,12 @@
 
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 
 #define CHECK_IF(expr) if(!(expr)) abort()
 
-@interface Base: Object
+@interface Base: TestsuiteObject
 - (int) meth;
 @end
 
@@ -47,4 +47,4 @@ int main (void) {
   CHECK_IF(count == 0);
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/method-2.mm
===================================================================
--- obj-c++.dg/method-2.mm	(revision 174696)
+++ obj-c++.dg/method-2.mm	(working copy)
@@ -4,7 +4,8 @@
 
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include "../objc-obj-c++-shared/runtime.h"
 
 @class NSString;
 
@@ -13,19 +14,19 @@
 + (BOOL)usesUserKeyEquivalents;
 @end
 
-@interface NSMenuItem : Object <NSMenuItem> {
+@interface NSMenuItem : TestsuiteObject <NSMenuItem> {
   @private
   id _menu;
 }
 @end
 
-@interface NSResponder : Object <NSMenuItem>
+@interface NSResponder : TestsuiteObject <NSMenuItem>
 {
   id _nextResponder;
 }
 @end
 
-@interface Object(NSMenuValidation)
+@interface TestsuiteObject(NSMenuValidation)
 - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem;
 @end
 
Index: obj-c++.dg/cxx-ivars-2.mm
===================================================================
--- obj-c++.dg/cxx-ivars-2.mm	(revision 174696)
+++ obj-c++.dg/cxx-ivars-2.mm	(working copy)
@@ -6,7 +6,7 @@
 // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
 // { dg-options "-fobjc-call-cxx-cdtors" }
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
 #include <stdlib.h>
 #define CHECK_IF(expr) if(!(expr)) abort()
 
@@ -31,7 +31,7 @@ struct boo: bar {
   }
 };
 
-@interface Baz: Object {
+@interface Baz: TestsuiteObject {
 @public
   bar aa;
 }
@@ -76,4 +76,4 @@ int main (void)
   [foo free];
   CHECK_IF(!ctor1_called && !ctor2_called && dtor1_called);
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/typedef-alias-1.mm
===================================================================
--- obj-c++.dg/typedef-alias-1.mm	(revision 174696)
+++ obj-c++.dg/typedef-alias-1.mm	(working copy)
@@ -1,15 +1,16 @@
 /* Typedefs of ObjC types should work without any bogus warnings. */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
 
-typedef Object MyObject;
+typedef TestsuiteObject MyObject;
 
 int main (int argc, const char * argv[])
 {
-    Object* a = nil;
+    TestsuiteObject* a = nil;
     MyObject* b = a;
-    Object* c = b;
+    TestsuiteObject* c = b;
 
     return 0;
 }
Index: obj-c++.dg/proto-lossage-2.mm
===================================================================
--- obj-c++.dg/proto-lossage-2.mm	(revision 174696)
+++ obj-c++.dg/proto-lossage-2.mm	(working copy)
@@ -2,13 +2,14 @@
    provide a suitable method.  */
 /* { dg-do compile } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
+#include <objc/objc.h>
 
 @protocol Zot
 -(void) zot;
 @end
 
-@interface Foo : Object <Zot>
+@interface Foo : TestsuiteObject <Zot>
 @end
 
 int foo()
Index: obj-c++.dg/try-catch-3.mm
===================================================================
--- obj-c++.dg/try-catch-3.mm	(revision 174696)
+++ obj-c++.dg/try-catch-3.mm	(working copy)
@@ -5,14 +5,14 @@
 /* { dg-do compile } */
 /* { dg-options "-fobjc-exceptions" } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
 const char *foo(void)
 {
   @try {
     return "foo";
   }
-  @catch (Object* theException) {
+  @catch (TestsuiteObject* theException) {
     return [theException name];
   }
 }
Index: obj-c++.dg/method-11.mm
===================================================================
--- obj-c++.dg/method-11.mm	(revision 174696)
+++ obj-c++.dg/method-11.mm	(working copy)
@@ -5,16 +5,16 @@
 /* { dg-do compile } */
 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-typedef Object ObjectTypedef1;
+typedef TestsuiteObject ObjectTypedef1;
 typedef ObjectTypedef1 ObjectTypedef2;
 @compatibility_alias ObjectAlias1 ObjectTypedef2;
 @compatibility_alias ObjectAlias2 ObjectAlias1;
 typedef ObjectAlias2 ObjectTypedef3;
 
 void foo(void) {
-  id obj = [Object new];
+  id obj = [TestsuiteObject new];
   obj = [ObjectTypedef1 new];
   obj = [ObjectTypedef2 new];
   obj = [ObjectTypedef3 new];
@@ -23,7 +23,7 @@ void foo(void) {
 }
 
 /* { dg-final { scan-assembler "_OBJC_ClassRefs_0"  { target { *-*-darwin* && { ! lp64 } } } } } */
-/* { dg-final { scan-assembler "_OBJC_ClassRef_Object"  { target { *-*-darwin* && { lp64 } } } } } */
+/* { dg-final { scan-assembler "_OBJC_ClassRef_TestsuiteObject"  { target { *-*-darwin* && { lp64 } } } } } */
 /* { dg-final { scan-assembler-not "_OBJC_ClassRefs_1" { target { *-*-darwin* && { ! lp64 } } } } } */
 /* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectTypedef" { target { *-*-darwin* && { lp64 } } } } } */
 /* { dg-final { scan-assembler-not "_OBJC_ClassRef_ObjectAlias" { target { *-*-darwin* && { lp64 } } } } } */
Index: obj-c++.dg/encode-6.mm
===================================================================
--- obj-c++.dg/encode-6.mm	(revision 174696)
+++ obj-c++.dg/encode-6.mm	(working copy)
@@ -3,11 +3,8 @@
 /* { dg-options "" } */
 /* { dg-do run } */
 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include "../objc-obj-c++-shared/Object1.h"
-#include "../objc-obj-c++-shared/next-mapping.h"
-#ifndef __NEXT_RUNTIME__
-#include <objc/objc-api.h>
-#endif
+#include "../objc-obj-c++-shared/TestsuiteObject.m"
+#include "../objc-obj-c++-shared/runtime.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -28,7 +25,7 @@ struct Nested {
   struct Innermost innermost;
 };
 
-@interface Int1: Object {
+@interface Int1: TestsuiteObject {
   signed char a, b;
   Int2 *int2;
   struct Nested nested;
@@ -47,28 +44,28 @@ struct Nested {
 @implementation Int2
 @end
 
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-Ivar *ivar;
-#else
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
 struct objc_ivar *ivar;
+#else
+Ivar *ivar;
 #endif
 
 static void check_ivar(const char *name, const char *type) {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  CHECK_IF(!strcmp(ivar_getName(*ivar), name));
-  CHECK_IF(!strcmp(ivar_getTypeEncoding(*ivar), type));
-#else
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
   CHECK_IF(!strcmp(ivar->ivar_name, name));
   CHECK_IF(!strcmp(ivar->ivar_type, type));
+#else
+  CHECK_IF(!strcmp(ivar_getName(*ivar), name));
+  CHECK_IF(!strcmp(ivar_getTypeEncoding(*ivar), type));
 #endif
   ivar++;
 }
 
 int main(void) {
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  ivar = class_copyIvarList ((Class)objc_get_class("Int1"), NULL);
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
+  ivar = ((Class)objc_getClass("Int1"))->ivars->ivar_list;
 #else
-  ivar = ((Class)objc_get_class("Int1"))->ivars->ivar_list;
+  ivar = class_copyIvarList ((Class)objc_getClass("Int1"), NULL);
 #endif
   check_ivar("a", "c");
   check_ivar("b", "c");
@@ -76,14 +73,14 @@ int main(void) {
   check_ivar("nested", 
     "{Nested=\"a\"f\"b\"f\"next\"@\"Int1\"\"innermost\"{Innermost=\"a\"C\"b\"C\"encl\"^{Nested}}}");
     
-#ifdef NEXT_OBJC_USE_NEW_INTERFACE
-  ivar = class_copyIvarList ((Class)objc_get_class("Int2"), NULL);
+#if defined(__NEXT_RUNTIME__) && !defined(NEXT_OBJC_USE_NEW_INTERFACE)
+  ivar = ((Class)objc_getClass("Int2"))->ivars->ivar_list;
 #else
-  ivar = ((Class)objc_get_class("Int2"))->ivars->ivar_list;
+  ivar = class_copyIvarList ((Class)objc_getClass("Int2"), NULL);
 #endif
   check_ivar("innermost", "^{Innermost=CC^{Nested}}");
   check_ivar("base", "@\"Int1\"");
   
   return 0;
 }
-#include "../objc-obj-c++-shared/Object1-implementation.h"
+
Index: obj-c++.dg/comp-types-9.mm
===================================================================
--- obj-c++.dg/comp-types-9.mm	(revision 174696)
+++ obj-c++.dg/comp-types-9.mm	(working copy)
@@ -2,9 +2,9 @@
 
 /* Another gimplifier ICE... */
 
-#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/TestsuiteObject.h"
 
-@interface MyView: Object {
+@interface MyView: TestsuiteObject {
   int _frame;
 }
 - (void)_finalize;
Index: objc-obj-c++-shared/Object1.m
===================================================================
--- objc-obj-c++-shared/Object1.m	(revision 174696)
+++ objc-obj-c++-shared/Object1.m	(working copy)
@@ -1,4 +0,0 @@
-/* This will generate compatibility code for the test-suite provided as a
-   category on Object.
-*/
-#include "Object1-implementation.h"
Index: objc-obj-c++-shared/next-mapping.h
===================================================================
--- objc-obj-c++-shared/next-mapping.h	(revision 174696)
+++ objc-obj-c++-shared/next-mapping.h	(working copy)
@@ -1,109 +0,0 @@
-/* Compatibility header between runtimes and APIs.
-   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
-
-   Original Authors: Ziemowit Laski <zlaski@apple.com>
-		     David Ayers <d.ayers@inode.at>
-		     
-   re-work for ObjC2 by Iain Sandoe <iains@gcc.gnu.org>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-#ifndef _OBJC_NEXT_MAPPING_H_
-#define _OBJC_NEXT_MAPPING_H_
-
-/* This file provides a two-way mapping of API names for the original 
-   GNU & NeXT APIs. 
-   
-   It is being expanded to provide mapping (where possible) between between the
-   older API and API-2.
-*/
-
-#include "objc-test-suite-types.h"
-
-#ifndef __NEXT_RUNTIME__
-
-# define CLASSFIELD class_pointer
-# define CLASSPTRFIELD(x) (x)->class_pointer
-# define SUPERCLASS superClass
-# define OBJC_GETCLASS objc_get_class
-
-# ifdef __objc_api_INCLUDE_GNU
-#  define class_createInstance(C, S) class_create_instance(C)
-# endif
-# define method_get_types(M) (M)->method_types
-
-#else /* NeXT */
-
-/* Include next-abi.h to set NEXT_OBJC_USE_NEW_INTERFACE etc.*/
-# include "next-abi.h"
-
-# ifdef NEXT_OBJC_USE_NEW_INTERFACE
-   /* API=2. */
-#  include <objc/runtime.h>
-# else
-   /* API=0. */
-#  include <objc/objc-class.h>
-# endif
-
-# define CLASSPTRFIELD(x) (x)->isa
-# define SUPERCLASS superclass
-# define OBJC_GETCLASS objc_getClass
-
-# define objc_get_class(C) objc_getClass(C)
-# define objc_get_meta_class(C) objc_getMetaClass(C)
-# define class_get_class_method(C, S) class_getClassMethod(C, S)
-# define class_get_instance_method(C, S) class_getInstanceMethod(C, S)
-# define sel_get_name(S) sel_getName(S)
-# define class_create_instance(C) class_createInstance(C, 0)
-# define class_get_class_name(C) object_getClassName(C)
-# define objc_lookup_class(N) objc_lookUpClass(N)
-
-# ifdef NEXT_OBJC_USE_NEW_INTERFACE
-
-#  define object_class_name(O) (object_getClassName(O)) 
-#  define object_get_class(O) (object_getClass((id)O))
-#  define object_get_super_class(O) class_get_super_class(object_get_class(O))
-#  define object_is_class(O) class_is_meta_class(object_get_class(O))
-#  define object_is_meta_class(O) (object_is_class(O) && class_is_meta_class(O) \
-						 && class_is_meta_class(object_get_class(O)))
-
-#  define method_get_imp(M) (method_getImplementation((Method)M))
-#  define method_get_types(M) (method_getTypeEncoding((Method)M))
-
-#  define class_get_super_class(C) (class_getSuperclass((Class)C))
-#  define class_is_meta_class(C) (class_isMetaClass((Class)C) ? YES: NO)
-#  define class_is_class(C) (class_is_meta_class(C) == NO)
-
-# else /* OLD API */
-
-#  define object_class_name(O) (O->name) 
-#  define object_get_super_class(O) class_get_super_class(*(struct objc_class **)O)
-#  define object_get_class(O) (*(struct objc_class **)O)
-#  define object_is_class(O) class_is_meta_class(*(struct objc_class **)O)
-#  define object_is_meta_class(O) (class_is_meta_class(O) && class_is_meta_class(*(struct objc_class **)O))
-
-#  define method_get_imp(M) (((Method)M)->method_imp)
-#  define method_get_types(M) (((Method)M)->method_types)
-
-#  define class_get_super_class(C) (((struct objc_class *)C)->super_class)
-#  define class_is_meta_class(C) (CLS_GETINFO((struct objc_class *)C, CLS_META)? YES: NO)
-#  define class_is_class(C) (CLS_GETINFO((struct objc_class *)C, CLS_CLASS)? YES: NO)
-
-# endif /* NEXT_OBJC_USE_NEW_INTERFACE */
-
-# endif  /*__NEXT_RUNTIME__ */
-#endif /* _OBJC_NEXT_MAPPING_H_ */
\ No newline at end of file
Index: objc-obj-c++-shared/Object1.mm
===================================================================
--- objc-obj-c++-shared/Object1.mm	(revision 174696)
+++ objc-obj-c++-shared/Object1.mm	(working copy)
@@ -1,4 +0,0 @@
-/* This will generate compatibility code for the test-suite provided as a
-   category on Object.
-*/
-#import "Object1-implementation.h"
Index: objc-obj-c++-shared/Object1-implementation.h
===================================================================
--- objc-obj-c++-shared/Object1-implementation.h	(revision 174696)
+++ objc-obj-c++-shared/Object1-implementation.h	(working copy)
@@ -1,169 +0,0 @@
-/* Compatibility code between APIs and ABIs for the objc test suite.
-   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
-   Contributed by Iain Sandoe 
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* 
- * Implementation of a compatibility layer for the ObjC* test-suite.
- *
- * Four cases:
- *   GNU 
- *      Uses the 'old' Object with API and ABI = 0.
- *      Compatibility methods are added.
- *   NeXT pre-Darwin9
- *      Uses the 'old' Object with API and ABI = 0.
- *   NeXT Darwin >= 9 with no implementation of ABI 2
- *      Uses API 2 and ABI 0 for m32, uses the 'old' Object'
- *      Uses API 2 for m64 but only compile tests can be expected to work.
- *   NeXT Darwin >= 9 with __OBJC2__
- *      Uses API 2 and ABI 0 for m32, uses the 'old' Object'
- *      Uses API 2 and ABI 2 - the libobjc implementation of Object is very
- *      basic, and we add a category to expand this for test-suite use.
- */
-
-#ifndef _OBJC_OBJECT1_IMPLEMENTATION_H_
-#define _OBJC_OBJECT1_IMPLEMENTATION_H_
-
-#include "Object1.h"
-
-#ifndef __NEXT_RUNTIME__
-
-/* Save us from repeating this.  */
-@implementation Object (TEST_SUITE_ADDITIONS)
-+ initialize 
-{
-  return self;
-}
-@end
-
-#else
-
-/* For NeXT pre-Darwin 9 or m32 we need do nothing.  */
-
-#  if NEXT_OBJC_ABI_VERSION >= 2 
-
-/* Pick up the API=2 header.  */
-#    include <objc/runtime.h>
-
-#    ifndef __OBJC2__
-
-/* On a Darwin system >= 9 when there is no __OBJC2__ compiler, the testcases
-   will not link.  So we provide a dummy Object for this purpose.  */
-
-@implementation Object
-
-+ (Class) class 
-{
-  return self;
-}
-
-- (BOOL)isEqual: (id)anObject
-{
-  return self == anObject;
-}
-
-@end
-#    endif  /* __OBJC2__ */
-
-/* In any case, since the library does not provide a complete (enough) 
-   implementation we need to provide the additions.  */
-
-@implementation Object (TEST_SUITE_ADDITIONS)
-
-+ initialize 
-{
-  return self;
-}
-
-- init 
-{
-  return self;
-}
-
-- (Class) class 
-{
-  return isa;
-}
-
-+ (Class) superclass
-{
-  return class_getSuperclass(object_getClass(self));
-}
-
-+ new 
-{
-  return [[self alloc] init];
-}
-
-+ free 
-{
-  return nil;
-}
-
-- free 
-{
-  return object_dispose(self);
-}
-
-+ alloc 
-{
-  return class_createInstance (self, 0);
-}
-
-- (Class) superclass {
-  return class_getSuperclass([self class]);
-}
-
-- (const char *) name {
-  return class_getName([self class]);
-}
-
--(BOOL)conformsTo:(Protocol *)protocol {
-  Class cls;
-  for (cls = [self class]; cls; cls = [cls superclass]) 
-    {
-      if (class_conformsToProtocol(cls, protocol)) 
-	return YES;
-    }
-  return NO;
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern int printf (const char *, ...);
-extern void abort (void);
-#ifdef __cplusplus
-}
-#endif
-
-/* This is a helper to catch cases where we need to add more functionality
-   to our test-suite category - more informative than fail with 'does not 
-   respond to forward:'  */
-- forward: (SEL)sel : (marg_list)args
-{
-  const char * onam = object_getClassName (self);
-  const char * snam = sel_getName (sel);
-  printf ("%s: tried to forward: %s\n", onam, snam);
-  abort ();
-}
-@end
-
-#   endif /* NEXT_OBJC_ABI_VERSION >= 2  */
-#  endif /* __NEXT_RUNTIME__ */
-#endif /* _OBJC_OBJECT1_IMPLEMENTATION_H_ */
Index: objc-obj-c++-shared/TestsuiteObject.h
===================================================================
--- objc-obj-c++-shared/TestsuiteObject.h	(revision 0)
+++ objc-obj-c++-shared/TestsuiteObject.h	(revision 0)
@@ -0,0 +1,47 @@
+/* Very simple root class for writing testcases.
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   Contributed by Nicola Pero
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef _TESTSUITE_OBJECT_H_
+#define _TESTSUITE_OBJECT_H_
+
+/* We use this root class instead of Object to keep the tests
+   independent of the runtime being used.  Keep it simple.  */
+
+@interface TestsuiteObject
+{
+  Class isa;
+}
+/* Required by the NeXT runtime.  Does nothing.  */
++ (id) initialize;
+
+/* Creating instances.  */
++ (id) new;
++ (id) alloc;
+- (id) init;
+- (void) free;
+
+/* Auxiliary methods.  */
++ (Class) class;
++ (Class) superclass;
++ (const char *)name;
+- (const char *)name;
+@end
+
+#endif /* _TESTSUITE_OBJECT_H_ */
Index: objc-obj-c++-shared/Protocol1.h
===================================================================
--- objc-obj-c++-shared/Protocol1.h	(revision 174696)
+++ objc-obj-c++-shared/Protocol1.h	(working copy)
@@ -1,52 +0,0 @@
-/* 
- * Temporary work-around to avoid the need for method attributes in
- * the NeXT Runtime Protocol header.
- */
-#ifndef _OBJC_PROTOCOL1_H_
-#define _OBJC_PROTOCOL1_H_
-
-#  ifndef __NEXT_RUNTIME__
-#    include <objc/Protocol.h>
-#  else
-#    include "next-abi.h"
-#    ifndef NEXT_OBJC_USE_NEW_INTERFACE
-/* We are on a NeXT version without method __attributes__ */
-#      import <objc/Protocol.h>
-#    else
-/* We make our own interface without the deprecation messages 
- * This is essentially <objc/Protocol.h> without the OBJC2
- * flags.
- * 
- */
-#      ifndef _OBJC_PROTOCOL_H_
-#      define _OBJC_PROTOCOL_H_
-#      import "Object1.h"
-
-@interface Protocol : Object
-{
-@private
-    char *protocol_name ;
-    struct objc_protocol_list *protocol_list ;
-    struct objc_method_description_list *instance_methods ;
-    struct objc_method_description_list *class_methods ;
-}
-
-/* Obtaining attributes intrinsic to the protocol */
-#if (NEXT_OBJC_ABI_VERSION==0)
-- (const char *)name ; /* Not avail in v2, deprecated in prior */
-/* Testing protocol conformance */
-- (BOOL) conformsTo: (Protocol *)aProtocolObject ; /* Not avail in v2 */
-#endif
-
-/* Looking up information specific to a protocol */
-/* Deprecated, but available */
-
-- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel ;
-- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel ;
-
-@end
-
-#      endif /* __NEXT_RUNTIME__ */
-#    endif /* _OBJC_PROTOCOL_H_ */
-#  endif /* NEXT_OBJC_ABI_VERSION */
-#endif /* _OBJC_PROTOCOL1_H_ */
Index: objc-obj-c++-shared/runtime.h
===================================================================
--- objc-obj-c++-shared/runtime.h	(revision 0)
+++ objc-obj-c++-shared/runtime.h	(revision 0)
@@ -0,0 +1,114 @@
+/* Wrapper around <objc/runtime.h>
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   Contributed by Nicola Pero
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef _TESTSUITE_RUNTIME_H_
+#define _TESTSUITE_RUNTIME_H_
+
+/* Include this file where you'd normally include <objc/runtime.h>.
+
+   Older versions of the NeXT runtime do not have <objc/runtime.h> and
+   you need to include <objc/objc-runtime.h> instead.  This file takes
+   care of figuring out if that's the case.  */
+
+#ifndef __NEXT_RUNTIME__
+
+/*
+  GNU Objective-C runtime (libobjc).
+*/
+# include <objc/runtime.h>
+
+#else
+
+/*
+  NeXT Objective-C runtime.
+*/
+
+/* Include next-abi.h to determine which version of the runtime we are
+   dealing with.  TODO: If this is the only place including it, maybe
+   it could be copied here ?  */
+# include "next-abi.h"
+
+# ifdef NEXT_OBJC_USE_NEW_INTERFACE
+
+/* New NeXT runtime, with an API that should be basically identical to
+   the GNU Objective-C one.  */
+#  include <objc/runtime.h>
+
+# else
+
+/* Old NeXT runtime, with an API similar, but not identical to the new
+   one.  To start with, different headers need to be included.  */
+#  include <objc/objc-class.h>
+#  include <objc/objc-runtime.h>
+
+/* Not all functions are available in the old NeXT runtime.  A few
+   that we need are not, and here we provide an implementation on top
+   of the old NeXT API.  */
+
+#  define class_isMetaClass(C) (CLS_GETINFO((struct objc_class *)C, CLS_META)? YES: NO)
+#  define class_getName(C) object_getClassName(C)
+#  define class_getSuperclass(C)  (((struct objc_class *)C)->super_class)
+#  define method_getImplementation(M) (((Method)M)->method_imp)
+#  define method_getTypeEncoding(M) (((Method)M)->method_types)
+#  define object_getClass(O) (*(struct objc_class **)O)
+
+#include <objc/Protocol.h>
+BOOL class_conformsToProtocol (Class class_, Protocol *protocol)
+{
+  struct objc_protocol_list *p;
+  int i;
+  for (p = class_->protocols; p; p = p->next)
+    for (i = 0; i < p->count; i++)
+      if ([p->list[i] conformsTo: protocol])
+	return YES;
+  return NO;
+}
+
+#define protocol_getName(P) [P name]
+#define protocol_isEqual(P,Q) [P isEqual: Q]
+
+struct objc_method_description protocol_getMethodDescription (Protocol *protocol, 
+							      SEL selector,
+							      BOOL requiredMethod,
+							      BOOL instanceMethod)
+{
+  struct objc_method_description *tmp;
+  struct objc_method_description result;
+
+  if (instanceMethod)
+    {
+      tmp = [protocol descriptionForInstanceMethod: selector];
+      result = *tmp;
+    }
+  else
+    {
+      tmp = [protocol descriptionForClassMethod: selector];
+      result = *tmp;      
+    }
+
+  return result;
+}
+
+#  endif /* NEXT_OBJC_USE_NEW_INTERFACE */
+
+# endif /* __NEXT_RUNTIME__ */
+
+#endif /* _TESTSUITE_RUNTIME_H_ */
+
Index: objc-obj-c++-shared/objc-test-suite-types.h
===================================================================
--- objc-obj-c++-shared/objc-test-suite-types.h	(revision 174696)
+++ objc-obj-c++-shared/objc-test-suite-types.h	(working copy)
@@ -21,17 +21,8 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef _OBJC_TEST_SUITE_TYPES_H_
 #define _OBJC_TEST_SUITE_TYPES_H_
 
-#ifdef __cplusplus
-#define ProtoBool bool
-#else
-#define ProtoBool _Bool
-#endif
-
 #ifndef __NEXT_RUNTIME__
 
-#define METHOD Method_t
-#define IVAR_T struct objc_ivar
-
 /* dummy const string class ref. */
 typedef void * TNS_STRING_REF_T;
 
@@ -52,16 +43,12 @@ typedef void * TNS_STRING_REF_T;
 #define NULL 0
 #endif
 
-#define METHOD Method
-
 /* Where there are equivalent interfaces between APIs we substitute
    a macro or typedef.  */
 #ifdef NEXT_OBJC_USE_NEW_INTERFACE
 typedef void * PMETH;
-#define IVAR_T Ivar 
 #else
 typedef struct objc_method * PMETH;
-#define IVAR_T struct objc_ivar 
 #endif
 
 #ifdef __OBJC2__
@@ -77,4 +64,4 @@ typedef struct objc_class TNS_STRING_REF_T;
 #endif
 
 #endif  /*__NEXT_RUNTIME__ */
-#endif /* _OBJC_TEST_SUITE_TYPES_H_ */
\ No newline at end of file
+#endif /* _OBJC_TEST_SUITE_TYPES_H_ */
Index: objc-obj-c++-shared/TestsuiteObject.m
===================================================================
--- objc-obj-c++-shared/TestsuiteObject.m	(revision 0)
+++ objc-obj-c++-shared/TestsuiteObject.m	(revision 0)
@@ -0,0 +1,64 @@
+/* Very simple root class for writing testcases.
+   Copyright (C) 2011 Free Software Foundation, Inc.
+   Contributed by Nicola Pero
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* This is the implementation, but in all simple testcases we
+   recommend simply including it in the testcase.  */
+
+#include "TestsuiteObject.h"
+#include "runtime.h"
+
+@implementation TestsuiteObject
++ (id) initialize
+{
+  return self;
+}
++ (id) new
+{
+  return [[self alloc] init];
+}
++ (id) alloc
+{
+  return class_createInstance (self, 0);
+}
+- (id) init
+{
+  return self;
+}
+- (void) free
+{
+  object_dispose (self);
+}
++ (Class) class
+{
+  return self;
+}
++ (Class) superclass
+{
+  return class_getSuperclass (self);
+}
++ (const char *)name
+{
+  return class_getName (self);
+}
+- (const char *)name
+{
+  return class_getName (isa);
+}
+@end
Index: objc-obj-c++-shared/Object1.h
===================================================================
--- objc-obj-c++-shared/Object1.h	(revision 174696)
+++ objc-obj-c++-shared/Object1.h	(working copy)
@@ -1,175 +0,0 @@
-/* Compatibility code between APIs and ABIs for the objc test suite.
-   Copyright (C) 2010, 2011 Free Software Foundation, Inc.
-   Contributed by Iain Sandoe 
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* 
- * Compatibility header.
- *
- * Four cases:
- *   GNU 
- *      Uses the 'old' Object with API and ABI = 0.
- *      Compatibility methods are added.
- *   NeXT pre-Darwin9
- *      Uses the 'old' Object with API and ABI = 0.
- *   NeXT Darwin >= 9 with no implementation of ABI 2
- *      Uses API 2 and ABI 0 for m32, uses the 'old' Object'
- *      Uses API 2 for m64 but only compile tests can be expected to work.
- *   NeXT Darwin >= 9 with __OBJC2__
- *      Uses API 2 and ABI 0 for m32, uses the 'old' Object'
- *      Uses API 2 and ABI 2 - the libobjc implementation of Object is very
- *      basic, and we add a category to expand this for test-suite use.
- */
-#ifndef _OBJC_OBJECT1_H_
-#define _OBJC_OBJECT1_H_
-
-#ifndef __NEXT_RUNTIME__ 
-/* Case 1 = GNU. */
-#  include <objc/Object.h>
-/* NeXT requires a +initialize (or forward:) method, and it makes testcases more
-   readable if the conditional code can be reduced, so we add one to the GNU tests 
-   too.  This saves us from having to introduce it every time.  */
-@interface Object (TEST_SUITE_ADDITIONS)
-+ initialize;
-@end
-
-#else /* NeXT */
-
-#  include "next-abi.h"
-#  if !defined(NEXT_OBJC_ABI_VERSION) || (NEXT_OBJC_ABI_VERSION < 2)
-/* Cases 2, Case 3/m32 and 4/m32 are handled as default.  */
-#    include <objc/Object.h>
-#  else
-#    include <objc/objc.h>
-
-/* This is a cut-down Object with only the methods currently required
-   by the testsuite declared.  The implementation is provided in 
-   Object1-implementation.h
-*/
-
-/* The m64 libobjc implementation of Object provides only the 'class' and
-   isEqual: methods.  
-   
-   We add the others required as a test-suite category. 
-   
-   Please leave the unimplemented methods as comments - so that they can
-   be inserted as required by future tests.  */
-
-@interface Object
-{
-  Class isa;
-}
-+ (Class) class;
-- (BOOL)isEqual: (id)anObject;
-@end
-
-/* Dummy definition.  */
-typedef void * marg_list;
-
-@interface Object (TEST_SUITE_ADDITIONS)
-
-+ initialize;
-- init;
-
-+ new;
-+ free;
-- free;
-+ alloc;
-//- copy;
-//+ allocFromZone:(void *)zone;
-//- copyFromZone:(void *)zone;
-//- (void *)zone;
-
-- (Class) class;
-+ (Class) superclass;
-//+ (const char *) name;
-//- superclass;
-- (const char *) name;
-
-//- self;
-//- (unsigned int) hash;
-
-/* Testing inheritance relationships */
-
-//- (BOOL) isKindOf: aClassObject;
-//- (BOOL) isMemberOf: aClassObject;
-//- (BOOL) isKindOfClassNamed: (const char *)aClassName;
-//- (BOOL) isMemberOfClassNamed: (const char *)aClassName;
-
-/* Testing class functionality */
-
-//+ (BOOL) instancesRespondTo:(SEL)aSelector;
-//- (BOOL) respondsTo:(SEL)aSelector;
-
-/* Testing protocol conformance */
-
-- (BOOL) conformsTo: (Protocol *)aProtocolObject;
-//+ (BOOL) conformsTo: (Protocol *)aProtocolObject;
-
-/* Obtaining method descriptors from protocols */
-
-//- (struct objc_method_description *) descriptionForMethod:(SEL)aSel;
-//+ (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel;
-
-/* Obtaining method handles */
-
-//- (IMP) methodFor:(SEL)aSelector;
-//+ (IMP) instanceMethodFor:(SEL)aSelector;
-
-/* Sending messages determined at run time */
-
-//- perform:(SEL)aSelector;
-//- perform:(SEL)aSelector with:anObject;
-//- perform:(SEL)aSelector with:object1 with:object2;
-
-/* Posing */
-
-//+ poseAs: aClassObject;
-
-/* Enforcing intentions */
- 
-//- subclassResponsibility:(SEL)aSelector;
-//- notImplemented:(SEL)aSelector;
-
-/* Error handling */
-
-//- doesNotRecognize:(SEL)aSelector;
-//- error:(const char *)aString, ...;
-
-/* Debugging */
-
-//- (void) printForDebugger:(void *)stream;
-
-/* Archiving */
-
-//- awake;
-//- write:(void *)stream;
-//- read:(void *)stream;
-//+ (int) version;
-//+ setVersion: (int) aVersion;
-
-/* Forwarding */
-
-- forward: (SEL)sel : (marg_list)args;
-//- performv: (SEL)sel : (marg_list)args;
-
-@end
-
-#    endif /* NeXT case 3 & 4 m64 */
-#  endif /* NEXT */
-#endif /* _OBJC_OBJECT1_H_ */
