Patchwork objc/objc++: switch all testcases to Modern Objective-C runtime API

login
register
mail settings
Submitter Nicola Pero
Date June 6, 2011, 5:21 p.m.
Message ID <DDE59FB7-B163-4249-B1BC-B902EEFF8717@meta-innovation.com>
Download mbox | patch
Permalink /patch/98962/
State New
Headers show

Comments

Nicola Pero - June 6, 2011, 5:21 p.m.
This patch switches all the testcases in the ObjC/ObjC++ testsuite to use the
Modern Objective-C runtime API when executing with the GNU runtime.  This
will allow me to complete removing the Traditional Objective-C runtime API
from libobjc. :-)
 
There should be no changes in testsuite results, with the exception that during
the reorganization I managed to enable all the objc/execute/bf-*.m testcases
for the recent NeXT runtime, and an update of the forward-1.m testcase makes it
XPASS on Apple (that's not really important though as all the forwarding and
corresponding testing needs a rework).  So, there should be more successes
when executing the testsuite on an Apple. :-)

The patch is large and very tedious (as you'd expect).  The existing runtime
compatibility layer was based upon mapping all APIs to the Traditional Objective-C
runtime API, which is precisely the one that we are removing.  So I wrote a new,
simpler runtime compatibility layer that maps everything to the Modern Objective-C
runtime API, and then proceeded to update all the testcases to use it instead of
the old one, and use the Modern API as the normal API instead of the Traditional
one.  The new layer is much simpler because it's the native API of both the Modern
GNU and NeXT runtimes; the only case that actually needs any mappings now is the
case of older NeXT runtimes (pre-OS X 10.5), and even then most functions are
identical.  The new layer currently includes only functions used in at least a testcase,
which are few.  I don't see the point in spending time writing a full compatibility layer
(also considering that the older NeXT runtime API was dropped by Apple 4 years
ago, and it will be less and less relevant as the years go by).

Another simplification I introduced is a new, very simple root class to use in testcases
instead of Object.  It's called TestsuiteObject.  The problem with Object is that each
runtime provides a different subset of the class, and newer runtimes are making it more
and more minimal possibly with the ultimate aim of dropping it.  Rather than write code
to try figure out which subset of Object is available (if any) in the current runtime, and
keep it up-to-date as runtimes change, it's simpler to just write a minimal root class
for the testsuite and use it; the same code then works with all runtimes, and is independent
of whether Object will stay or disappear in the future.  I hope that this will give us a stable
testcase base for the future, with fewer dependencies on the runtime details. :-)

I left a few testcases using Object, though, to make sure it gets at least some minimal
testing.  I picked a few ones where there is no need for runtime-dependent code or
checks (to keep things simple).

I tested this on GNU/Linux i686, and on Apple 10.6.7 64-bit.  That tests both the GNU
runtime and a recent NeXT runtime.  I'd like to test with an older NeXT runtime, but I
don't have any access to an Apple machine with Mac OS X < 10.5.  If anyone can test that
and supply test results (objc.log / obj-c++.log), I'll be happy to address any problems
(I'd expect some, basing on the fact I couldn't test that at all, but they should be
shallow/easy, such as a typo or a missing prototype).

To my delight, on my local tree I tested purging completely the Traditional Objective-C
runtime API from the GNU runtime, and with this patch the testsuite still runs and passes
all the tests for the GNU runtime (yes!!).  That means that while this patch was a tedious
interminable pain to produce, the road ahead is finally open for the GNU Objective-C runtime
to go fully "Modern". :-)

OK to commit ?

Thanks

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.
IainS - June 6, 2011, 5:41 p.m.
On 6 Jun 2011, at 18:21, Nicola Pero wrote:

> This patch switches all the testcases in the ObjC/ObjC++ testsuite  
> to use the
> Modern Objective-C runtime API when executing with the GNU runtime.   
> This
> will allow me to complete removing the Traditional Objective-C  
> runtime API
> from libobjc. :-)

...

> I tested this on GNU/Linux i686, and on Apple 10.6.7 64-bit.  That  
> tests both the GNU
> runtime and a recent NeXT runtime.  I'd like to test with an older  
> NeXT runtime, but I
> don't have any access to an Apple machine with Mac OS X < 10.5.

testing at m32 should exercise all the post 10.4 stuff - and would be  
a good indicator of any major hassles.

I'll try and do a 10.4 test during the week ... (assuming trunk still  
bootstrap on it).

Iain
Mike Stump - June 6, 2011, 6:18 p.m.
On Jun 6, 2011, at 10:21 AM, Nicola Pero wrote:
> This patch switches all the testcases in the ObjC/ObjC++ testsuite to use the
> Modern Objective-C runtime API when executing with the GNU runtime.
> OK to commit ?

Ok, from me with one possible exception, I'd like Iain or Jack to weigh in on wether it should go in before they have a chance to test it on pre 10.6 systems.  I'm fine with it going in before or after, as we're in stage 1 and I think there is plenty of time to address any pre 10.6 fallout.  If it goes in sooner, we'll get 10.5 coverage with Geoff's tester.

Patch

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_ */