summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-25 22:25:05 +0000
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-25 22:25:05 +0000
commit18f8dbe74b49c291655de89aa2ee8a7d018e22e2 (patch)
treef2c57b88352f30e9bd481510ae4e07680330dffd /gcc/testsuite
parent48317e5a90c6f55ef9e3b75e941df9f99ce75555 (diff)
downloadgcc-18f8dbe74b49c291655de89aa2ee8a7d018e22e2.tar.gz
2010-03-25 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
PR objc/35165 PR testsuite/43512 * objc-obj-c++-shared: New directory. * objc-obj-c++-shared/Object1-implementation.h: New file. * objc-obj-c++-shared/Object1.h: New file. * objc-obj-c++-shared/Protocol1.h: New file. * objc-obj-c++-shared/next-abi.h: New file. * objc-obj-c++-shared/next-mapping.h: New file. * objc/execute/next_mapping.h: Delete. * objc.dg/special/special.exp: For all targets run the tests with -fgnu-runtime, for darwin targets also run the tests with -fnext-runtime. * objc.dg/dg.exp: Ditto. * obj-c++.dg/dg.exp: Ditto. * objc/execute/forward-1.m: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Amend testcase to include use of updated NeXT interface. * objc/execute/formal_protocol-5.m: Ditto. * objc/execute/protocol-isEqual-2.m: Ditto. * objc/execute/protocol-isEqual-4.m: Ditto. * objc/execute/class-11.m: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. * objc/execute/object_is_class.m: Ditto. * objc/execute/enumeration-1.m: Ditto. * objc/execute/class-13.m: Ditto. * objc/execute/formal_protocol-2.m: Ditto. * objc/execute/formal_protocol-4.m: Ditto. * objc/execute/class-1.m: Ditto. * objc/execute/bycopy-1.m: Ditto. * objc/execute/formal_protocol-6.m: Ditto. * objc/execute/bycopy-3.m: Ditto. * objc/execute/class-3.m: Ditto. * objc/execute/bf-11.m: Ditto. * objc/execute/class-5.m: Ditto. * objc/execute/bf-13.m: Ditto. * objc/execute/class-7.m: Ditto. * objc/execute/bf-15.m: Ditto. * objc/execute/class-9.m: Ditto. * objc/execute/bf-17.m: Ditto. * objc/execute/bf-19.m: Ditto. * objc/execute/IMP.m: Ditto. * objc/execute/exceptions/catchall-1.m: Ditto. * objc/execute/exceptions/trivial.m: Ditto. * objc/execute/exceptions/finally-1.m: Ditto. * objc/execute/exceptions/local-variables-1.m: Ditto. * objc/execute/exceptions/foward-1.m: Ditto. * objc/execute/bf-2.m: Ditto. * objc/execute/string1.m: Ditto. * objc/execute/bf-4.m: Ditto. * objc/execute/informal_protocol.m: Ditto. * objc/execute/string3.m: Ditto. * objc/execute/bf-6.m: Ditto. * objc/execute/bf-8.m: Ditto. * objc/execute/class-tests-1.h: Ditto. * objc/execute/protocol-isEqual-1.m: Ditto. * objc/execute/protocol-isEqual-3.m: Ditto. * objc/execute/_cmd.m: Ditto. * objc/execute/function-message-1.m: Ditto. * objc/execute/bf-20.m: Ditto. * objc/execute/bf-common.h: Ditto. * objc/execute/np-2.m: Ditto. * objc/execute/class-10.m: Ditto. * objc/execute/class-12.m: Ditto. * objc/execute/enumeration-2.m: Ditto. * objc/execute/class-14.m: Ditto. * objc/execute/encode-1.m: Ditto. * objc/execute/formal_protocol-1.m: Ditto. * objc/execute/formal_protocol-3.m: Ditto. * objc/execute/accessing_ivars.m: Ditto. * objc/execute/bycopy-2.m: Ditto. * objc/execute/class-2.m: Ditto. * objc/execute/bf-10.m: Ditto. * objc/execute/formal_protocol-7.m: Ditto. * objc/execute/root_methods.m: Ditto. * objc/execute/class-4.m: Ditto. * objc/execute/bf-12.m: Ditto. * objc/execute/class-6.m: Ditto. * objc/execute/bf-14.m: Ditto. * objc/execute/nested-func-1.m: Ditto. * objc/execute/class-8.m: Ditto. * objc/execute/private.m: Ditto. * objc/execute/bf-16.m: Ditto. * objc/execute/bf-18.m: Ditto. * objc/execute/load-3.m: Ditto. * objc/execute/compatibility_alias.m: Ditto. * objc/execute/bf-1.m: Ditto. * objc/execute/no_clash.m: Ditto. * objc/execute/bf-3.m: Ditto. * objc/execute/string2.m: Ditto. * objc/execute/bf-5.m: Ditto. * objc/execute/string4.m: Ditto. * objc/execute/bf-7.m: Ditto. * objc/execute/object_is_meta_class.m: Ditto. * objc/execute/bf-9.m: Ditto. * objc/execute/bf-21.m: Ditto. * objc/execute/cascading-1.m: Ditto. * objc/execute/trivial.m: Ditto. * objc/execute/np-1.m: Ditto. * objc/compile/trivial.m: Ditto. * objc/execute/class_self-2.m: Include <stdlib.h>. * objc/execute/forward-1.x: Do not XFAIL for 32bit powerpc-darwin. * objc.dg/desig-init-1.m: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. XFAIL run if NeXT and 64bit. Use new NeXT interface as required. * objc.dg/special/unclaimed-category-1.m: Ditto. * objc.dg/special/unclaimed-category-1.h: Ditto. * objc.dg/special/unclaimed-category-1a.m: Ditto. * objc.dg/func-ptr-1.m: Ditto. * objc.dg/stret-1.m: Ditto. * objc.dg/encode-2.m: Ditto. * objc.dg/category-1.m: Ditto. * objc.dg/encode-3.m: Ditto. * objc.dg/call-super-3.m: Ditto. * objc.dg/method-3.m: Ditto. * objc.dg/func-ptr-2.m: Ditto. * objc.dg/lookup-1.m: Ditto. * objc.dg/encode-4.m: Ditto. * objc.dg/fix-and-continue-1.m: Ditto. * objc.dg/proto-lossage-3.m: Ditto. * objc.dg/method-13.m: Ditto. * objc.dg/proto-qual-1.m: Ditto. * objc.dg/zero-link-3.m: Ditto. * objc.dg/bitfield-1.m: Ditto. * objc.dg/va-meth-1.m: Ditto. * objc.dg/super-class-3.m: Ditto. * objc.dg/call-super-1.m: Ditto. * objc.dg/type-size-2.m: Ditto. * objc.dg/method-10.m: Ditto. * objc.dg/defs.m: Ditto. * objc.dg/const-str-3.m: Ditto. * objc.dg/try-catch-6.m: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Use new NeXT interface as required. * objc.dg/super-class-4.m: Ditto. * objc.dg/comp-types-8.m: Ditto. * objc.dg/call-super-2.m: Ditto. * objc.dg/objc-fast-4.m: Ditto. * objc.dg/method-6.m: Ditto. * objc.dg/const-str-3.m: Ditto. * objc.dg/const-str-7.m: Ditto. * objc.dg/method-15.m: Ditto. * objc.dg/method-19.m: Ditto. * objc.dg/sync-1.m: Ditto. * objc.dg/layout-1.m: Ditto. * objc.dg/bitfield-3.m: Ditto. * objc.dg/try-catch-3.m: Ditto. * objc.dg/try-catch-7.m: Ditto. * objc.dg/comp-types-10.m: Ditto. * objc.dg/selector-2.: Ditto. * objc.dg/method-7.m: Ditto. * objc.dg/typedef-alias-1.m: Ditto. * objc.dg/proto-lossage-2.m: Ditto. * objc.dg/comp-types-11.m: Ditto. * objc.dg/sizeof-1.m: Ditto. * objc.dg/method-17.m: Ditto. * objc.dg/bitfield-5.m: Ditto. * objc.dg/try-catch-1.m: Ditto. * objc.dg/encode-5.m: Ditto. * objc.dg/fix-and-continue-2.m: Ditto. * objc.dg/method-9.m: Ditto. * objc.dg/isa-field-1.m: Ditto. * objc.dg/local-decl-2.m: Ditto. * objc.dg/objc-gc-4.m: Ditto. * objc.dg/type-stream-1.m: Skip for NeXT runtime. * objc.dg/gnu-runtime-3.m: Ditto. * objc.dg/encode-7.m: Ditto. * objc.dg/encode-8.m: Ditto. * objc.dg/selector-3.m: Ditto. * objc.dg/gnu-runtime-1.m: Ditto. * objc.dg/const-str-12.m: Ditto. * objc.dg/gnu-runtime-2.m: Ditto. * objc.dg/no-extra-load.m: Skip for gnu-runtime. * objc.dg/selector-1.m: Ditto. * objc.dg/stubify-2.m: Ditto. * objc.dg/zero-link-1.m: Ditto. * objc.dg/stret-2.m: Ditto. * objc.dg/zero-link-2.m: Ditto. * objc.dg/next-runtime-1.m: Ditto. * objc.dg/symtab-1.m: Ditto. * objc.dg/stubify-1.m: Ditto. * objc.dg/bitfield-2.m: Ditto. * objc.dg/try-catch-10.m: Apply to both runtimes. * objc.dg/const-str-1.m: Ditto. * objc.dg/image-info.m: Ditto. * objc.dg/encode-9.m: Ditto. * objc.dg/pragma-1.m: Apply test to all targets. * objc.dg/const-str-4.m: Ditto. * objc.dg/const-str-8.m: Ditto. * objc.dg/super-class-2.m: Ditto. * objc.dg/try-catch-5.m: Ditto. * objc.dg/const-str-10.m: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Use new NeXT interface as required. Skip for gnu-runtime. Test for .quad at m64. * objc.dg/const-str-11.m: Ditto. * objc.dg/const-str-9.m: Ditto. * objc.dg/method-4.m: Skip for 64Bit NeXT. * objc.dg/encode-1.m: Remove redundant -lobjc. * objc.dg/try-catch-9.m: Tidy space. * obj-c++.dg/method-19.mm: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. XFAIL run if NeXT and 64bit. Use new NeXT interface as required. * obj-c++.dg/template-4.mm: Ditto. * obj-c++.dg/defs.mm: Ditto. * obj-c++.dg/basic.mm: Ditto. * obj-c++.dg/encode-4.mm: Ditto. * obj-c++.dg/method-17.mm: Ditto. * obj-c++.dg/proto-lossage-3.mm: Ditto. * obj-c++.dg/cxx-class-1.mm: Ditto. * obj-c++.dg/method-10.mm: Ditto. * obj-c++.dg/va-meth-1.mm: Ditto. * obj-c++.dg/encode-5.mm: Ditto. * obj-c++.dg/lookup-2.mm: Ditto. * obj-c++.dg/template-3.mm: Ditto. * obj-c++.dg/proto-qual-1.mm: Ditto. * obj-c++.dg/qual-types-1.m: Ditto. * obj-c++.dg/cxx-scope-1.mm: Ditto. * obj-c++.dg/template-1.mm: Ditto. * obj-c++.dg/encode-6.mm: Ditto. * obj-c++.dg/bitfield-2.mm: Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Use new NeXT interface as required. * obj-c++.dg/except-1.mm: Ditto. * obj-c++.dg/const-str-7.mm: Ditto. * obj-c++.dg/ivar-list-semi.mm: Ditto. * obj-c++.dg/cxx-scope-2.mm: Ditto. * obj-c++.dg/selector-2.mm: Ditto. * obj-c++.dg/isa-field-1.mm: Ditto. * obj-c++.dg/try-catch-1.mm: Ditto. * obj-c++.dg/local-decl-1.mm: Ditto. * obj-c++.dg/try-catch-9.mm: Ditto. * obj-c++.dg/no-extra-load.mm: Ditto. * obj-c++.dg/selector-5.mm: Ditto. * obj-c++.dg/method-12.mm: Ditto. * obj-c++.dg/try-catch-11.mm: Ditto. * obj-c++.dg/comp-types-11.mm: Ditto. * obj-c++.dg/bitfield-3.mm: Ditto. * obj-c++.dg/method-6.mm: Ditto. * obj-c++.dg/super-class-2.mm: Ditto. * obj-c++.dg/method-21.mm: Ditto. * obj-c++.dg/const-str-8.mm: Ditto. * obj-c++.dg/try-catch-7.mm: Ditto. * obj-c++.dg/method-15.mm: Ditto. * obj-c++.dg/layout-1.mm: Ditto. * obj-c++.dg/cxx-ivars-1.mm: Ditto. * obj-c++.dg/const-str-3.mm: Ditto. * obj-c++.dg/try-catch-2.mm: Ditto. * obj-c++.dg/objc-gc-3.mm: Ditto. * obj-c++.dg/fix-and-continue-2.mm: Ditto. * obj-c++.dg/bitfield-1.mm: Ditto. * obj-c++.dg/selector-6.mm: Ditto. * obj-c++.dg/method-13.mm: Ditto. * obj-c++.dg/comp-types-12.mm: Ditto. * obj-c++.dg/bitfield-4.mm: Ditto. * obj-c++.dg/try-catch-8.mm: Ditto. * obj-c++.dg/method-2.mm: Ditto. * obj-c++.dg/cxx-ivars-2.mm: Ditto. * obj-c++.dg/typedef-alias-1.mm: Ditto. * obj-c++.dg/const-str-4.mm: Ditto. * obj-c++.dg/proto-lossage-2.mm: Ditto. * obj-c++.dg/try-catch-3.mm: Ditto. * obj-c++.dg/comp-types-9.mm: Ditto. * obj-c++.dg/gnu-runtime-2.mm: Skip if NeXT runtime. * obj-c++.dg/gnu-runtime-3.mm: Ditto. * obj-c++.dg/gnu-runtime-1.mm: Ditto. * objc.dg/zero-link-2.m: Skip if gnu runtime. Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Use new NeXT interface as required. * obj-c++.dg/const-str-10.mm: Ditto. * obj-c++.dg/const-str-11.mm: Ditto. * obj-c++.dg/const-str-9.mm: Ditto. * obj-c++.dg/method-11.mm: Ditto. * obj-c++.dg/cxx-ivars-3.mm: Skip if gnu runtime. Use shared wrapper headers (Object1.h, Protocol1.h) and next-mapping.h as required. Use new NeXT interface as required. XFAIL run if NeXT and 64bit. * obj-c++.dg/encode-8.mm: Remove redundant -lobjc. * obj-c++.dg/const-str-1.mm: Run for NeXT as well as gnu. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157731 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog280
-rw-r--r--gcc/testsuite/obj-c++.dg/basic.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-2.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-3.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/bitfield-4.mm4
-rw-r--r--gcc/testsuite/obj-c++.dg/comp-types-10.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/comp-types-11.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/comp-types-12.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/comp-types-9.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-1.mm1
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-10.mm8
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-11.mm9
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-3.mm15
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-4.mm4
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-7.mm18
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-8.mm11
-rw-r--r--gcc/testsuite/obj-c++.dg/const-str-9.mm11
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-class-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm17
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-scope-1.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/cxx-scope-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/defs.mm8
-rw-r--r--gcc/testsuite/obj-c++.dg/dg.exp7
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-4.mm23
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-5.mm14
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-6.mm35
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-7.mm18
-rw-r--r--gcc/testsuite/obj-c++.dg/encode-8.mm1
-rw-r--r--gcc/testsuite/obj-c++.dg/except-1.mm11
-rw-r--r--gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/isa-field-1.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/ivar-list-semi.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/layout-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/local-decl-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/lookup-2.mm6
-rw-r--r--gcc/testsuite/obj-c++.dg/method-10.mm7
-rw-r--r--gcc/testsuite/obj-c++.dg/method-11.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/method-12.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/method-13.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/method-15.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/method-17.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/method-19.mm12
-rw-r--r--gcc/testsuite/obj-c++.dg/method-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/method-21.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/method-6.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/no-extra-load.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/objc-gc-3.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/proto-lossage-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/proto-lossage-3.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/proto-qual-1.mm4
-rw-r--r--gcc/testsuite/obj-c++.dg/qual-types-1.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/selector-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/selector-5.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/selector-6.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/super-class-2.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/template-1.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/template-3.mm5
-rw-r--r--gcc/testsuite/obj-c++.dg/template-4.mm13
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-11.mm4
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-2.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-3.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-7.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-8.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/try-catch-9.mm3
-rw-r--r--gcc/testsuite/obj-c++.dg/typedef-alias-1.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/va-meth-1.mm5
-rwxr-xr-xgcc/testsuite/objc-obj-c++-shared/Object1-implementation.h62
-rwxr-xr-xgcc/testsuite/objc-obj-c++-shared/Object1.h1
-rwxr-xr-xgcc/testsuite/objc-obj-c++-shared/Protocol1.h52
-rwxr-xr-xgcc/testsuite/objc-obj-c++-shared/next-abi.h42
-rwxr-xr-xgcc/testsuite/objc-obj-c++-shared/next-mapping.h976
-rw-r--r--gcc/testsuite/objc.dg/bitfield-1.m5
-rw-r--r--gcc/testsuite/objc.dg/bitfield-2.m3
-rw-r--r--gcc/testsuite/objc.dg/bitfield-3.m5
-rw-r--r--gcc/testsuite/objc.dg/bitfield-5.m2
-rw-r--r--gcc/testsuite/objc.dg/call-super-1.m8
-rw-r--r--gcc/testsuite/objc.dg/call-super-2.m23
-rw-r--r--gcc/testsuite/objc.dg/call-super-3.m7
-rw-r--r--gcc/testsuite/objc.dg/category-1.m16
-rw-r--r--gcc/testsuite/objc.dg/comp-types-10.m2
-rw-r--r--gcc/testsuite/objc.dg/comp-types-11.m2
-rw-r--r--gcc/testsuite/objc.dg/comp-types-8.m2
-rw-r--r--gcc/testsuite/objc.dg/const-str-1.m1
-rw-r--r--gcc/testsuite/objc.dg/const-str-10.m13
-rw-r--r--gcc/testsuite/objc.dg/const-str-11.m12
-rw-r--r--gcc/testsuite/objc.dg/const-str-12.m3
-rw-r--r--gcc/testsuite/objc.dg/const-str-3.m21
-rw-r--r--gcc/testsuite/objc.dg/const-str-4.m4
-rw-r--r--gcc/testsuite/objc.dg/const-str-7.m22
-rw-r--r--gcc/testsuite/objc.dg/const-str-8.m14
-rw-r--r--gcc/testsuite/objc.dg/const-str-9.m13
-rw-r--r--gcc/testsuite/objc.dg/defs.m9
-rw-r--r--gcc/testsuite/objc.dg/desig-init-1.m12
-rw-r--r--gcc/testsuite/objc.dg/dg.exp8
-rw-r--r--gcc/testsuite/objc.dg/encode-1.m3
-rw-r--r--gcc/testsuite/objc.dg/encode-2.m24
-rw-r--r--gcc/testsuite/objc.dg/encode-3.m5
-rw-r--r--gcc/testsuite/objc.dg/encode-4.m32
-rw-r--r--gcc/testsuite/objc.dg/encode-5.m18
-rw-r--r--gcc/testsuite/objc.dg/encode-7.m2
-rw-r--r--gcc/testsuite/objc.dg/encode-8.m2
-rw-r--r--gcc/testsuite/objc.dg/encode-9.m1
-rw-r--r--gcc/testsuite/objc.dg/fix-and-continue-1.m5
-rw-r--r--gcc/testsuite/objc.dg/fix-and-continue-2.m2
-rw-r--r--gcc/testsuite/objc.dg/func-ptr-1.m5
-rw-r--r--gcc/testsuite/objc.dg/func-ptr-2.m6
-rw-r--r--gcc/testsuite/objc.dg/gnu-runtime-1.m2
-rw-r--r--gcc/testsuite/objc.dg/gnu-runtime-2.m2
-rw-r--r--gcc/testsuite/objc.dg/gnu-runtime-3.m2
-rw-r--r--gcc/testsuite/objc.dg/image-info.m9
-rw-r--r--gcc/testsuite/objc.dg/isa-field-1.m24
-rw-r--r--gcc/testsuite/objc.dg/layout-1.m2
-rw-r--r--gcc/testsuite/objc.dg/local-decl-2.m2
-rw-r--r--gcc/testsuite/objc.dg/lookup-1.m9
-rw-r--r--gcc/testsuite/objc.dg/method-10.m5
-rw-r--r--gcc/testsuite/objc.dg/method-13.m1
-rw-r--r--gcc/testsuite/objc.dg/method-15.m2
-rw-r--r--gcc/testsuite/objc.dg/method-17.m2
-rw-r--r--gcc/testsuite/objc.dg/method-19.m2
-rw-r--r--gcc/testsuite/objc.dg/method-3.m7
-rw-r--r--gcc/testsuite/objc.dg/method-4.m9
-rw-r--r--gcc/testsuite/objc.dg/method-6.m2
-rw-r--r--gcc/testsuite/objc.dg/method-7.m4
-rw-r--r--gcc/testsuite/objc.dg/method-9.m4
-rw-r--r--gcc/testsuite/objc.dg/next-runtime-1.m4
-rw-r--r--gcc/testsuite/objc.dg/no-extra-load.m1
-rw-r--r--gcc/testsuite/objc.dg/objc-fast-4.m7
-rw-r--r--gcc/testsuite/objc.dg/objc-gc-4.m2
-rw-r--r--gcc/testsuite/objc.dg/pragma-1.m2
-rw-r--r--gcc/testsuite/objc.dg/proto-lossage-2.m2
-rw-r--r--gcc/testsuite/objc.dg/proto-lossage-3.m5
-rw-r--r--gcc/testsuite/objc.dg/proto-qual-1.m5
-rw-r--r--gcc/testsuite/objc.dg/selector-1.m3
-rw-r--r--gcc/testsuite/objc.dg/selector-2.m2
-rw-r--r--gcc/testsuite/objc.dg/selector-3.m3
-rw-r--r--gcc/testsuite/objc.dg/sizeof-1.m5
-rw-r--r--gcc/testsuite/objc.dg/special/special.exp19
-rw-r--r--gcc/testsuite/objc.dg/special/unclaimed-category-1.h7
-rw-r--r--gcc/testsuite/objc.dg/special/unclaimed-category-1.m8
-rw-r--r--gcc/testsuite/objc.dg/special/unclaimed-category-1a.m2
-rw-r--r--gcc/testsuite/objc.dg/stret-1.m5
-rw-r--r--gcc/testsuite/objc.dg/stret-2.m3
-rw-r--r--gcc/testsuite/objc.dg/stubify-1.m1
-rw-r--r--gcc/testsuite/objc.dg/stubify-2.m1
-rw-r--r--gcc/testsuite/objc.dg/super-class-2.m1
-rw-r--r--gcc/testsuite/objc.dg/super-class-3.m5
-rw-r--r--gcc/testsuite/objc.dg/super-class-4.m2
-rw-r--r--gcc/testsuite/objc.dg/symtab-1.m7
-rw-r--r--gcc/testsuite/objc.dg/sync-1.m4
-rw-r--r--gcc/testsuite/objc.dg/try-catch-1.m2
-rw-r--r--gcc/testsuite/objc.dg/try-catch-10.m4
-rw-r--r--gcc/testsuite/objc.dg/try-catch-3.m2
-rw-r--r--gcc/testsuite/objc.dg/try-catch-5.m2
-rw-r--r--gcc/testsuite/objc.dg/try-catch-6.m2
-rw-r--r--gcc/testsuite/objc.dg/try-catch-7.m2
-rw-r--r--gcc/testsuite/objc.dg/try-catch-9.m1
-rw-r--r--gcc/testsuite/objc.dg/type-size-2.m25
-rw-r--r--gcc/testsuite/objc.dg/type-stream-1.m2
-rw-r--r--gcc/testsuite/objc.dg/typedef-alias-1.m2
-rw-r--r--gcc/testsuite/objc.dg/va-meth-1.m6
-rw-r--r--gcc/testsuite/objc.dg/zero-link-1.m8
-rw-r--r--gcc/testsuite/objc.dg/zero-link-2.m8
-rw-r--r--gcc/testsuite/objc.dg/zero-link-3.m10
-rw-r--r--gcc/testsuite/objc/compile/trivial.m2
-rw-r--r--gcc/testsuite/objc/execute/IMP.m6
-rw-r--r--gcc/testsuite/objc/execute/_cmd.m6
-rw-r--r--gcc/testsuite/objc/execute/accessing_ivars.m4
-rw-r--r--gcc/testsuite/objc/execute/bf-1.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-10.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-11.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-12.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-13.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-14.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-15.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-16.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-17.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-18.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-19.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-2.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-20.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-21.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-3.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-4.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-5.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-6.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-7.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-8.m2
-rw-r--r--gcc/testsuite/objc/execute/bf-9.m3
-rw-r--r--gcc/testsuite/objc/execute/bf-common.h3
-rw-r--r--gcc/testsuite/objc/execute/bycopy-1.m3
-rw-r--r--gcc/testsuite/objc/execute/bycopy-2.m4
-rw-r--r--gcc/testsuite/objc/execute/bycopy-3.m6
-rw-r--r--gcc/testsuite/objc/execute/cascading-1.m3
-rw-r--r--gcc/testsuite/objc/execute/class-1.m4
-rw-r--r--gcc/testsuite/objc/execute/class-10.m4
-rw-r--r--gcc/testsuite/objc/execute/class-11.m4
-rw-r--r--gcc/testsuite/objc/execute/class-12.m4
-rw-r--r--gcc/testsuite/objc/execute/class-13.m4
-rw-r--r--gcc/testsuite/objc/execute/class-14.m4
-rw-r--r--gcc/testsuite/objc/execute/class-2.m4
-rw-r--r--gcc/testsuite/objc/execute/class-3.m4
-rw-r--r--gcc/testsuite/objc/execute/class-4.m4
-rw-r--r--gcc/testsuite/objc/execute/class-5.m4
-rw-r--r--gcc/testsuite/objc/execute/class-6.m4
-rw-r--r--gcc/testsuite/objc/execute/class-7.m4
-rw-r--r--gcc/testsuite/objc/execute/class-8.m4
-rw-r--r--gcc/testsuite/objc/execute/class-9.m4
-rw-r--r--gcc/testsuite/objc/execute/class-tests-1.h5
-rw-r--r--gcc/testsuite/objc/execute/class_self-2.m1
-rw-r--r--gcc/testsuite/objc/execute/compatibility_alias.m2
-rw-r--r--gcc/testsuite/objc/execute/encode-1.m3
-rw-r--r--gcc/testsuite/objc/execute/enumeration-1.m3
-rw-r--r--gcc/testsuite/objc/execute/enumeration-2.m3
-rw-r--r--gcc/testsuite/objc/execute/exceptions/catchall-1.m4
-rw-r--r--gcc/testsuite/objc/execute/exceptions/finally-1.m2
-rw-r--r--gcc/testsuite/objc/execute/exceptions/foward-1.m4
-rw-r--r--gcc/testsuite/objc/execute/exceptions/local-variables-1.m2
-rw-r--r--gcc/testsuite/objc/execute/exceptions/trivial.m18
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-1.m5
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-2.m5
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-3.m5
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-4.m5
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-5.m9
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-6.m9
-rw-r--r--gcc/testsuite/objc/execute/formal_protocol-7.m6
-rw-r--r--gcc/testsuite/objc/execute/forward-1.m20
-rw-r--r--gcc/testsuite/objc/execute/forward-1.x3
-rw-r--r--gcc/testsuite/objc/execute/function-message-1.m2
-rw-r--r--gcc/testsuite/objc/execute/informal_protocol.m2
-rw-r--r--gcc/testsuite/objc/execute/load-3.m3
-rw-r--r--gcc/testsuite/objc/execute/nested-func-1.m2
-rw-r--r--gcc/testsuite/objc/execute/no_clash.m4
-rw-r--r--gcc/testsuite/objc/execute/np-1.m2
-rw-r--r--gcc/testsuite/objc/execute/np-2.m2
-rw-r--r--gcc/testsuite/objc/execute/object_is_class.m5
-rw-r--r--gcc/testsuite/objc/execute/object_is_meta_class.m6
-rw-r--r--gcc/testsuite/objc/execute/private.m2
-rw-r--r--gcc/testsuite/objc/execute/protocol-isEqual-1.m6
-rw-r--r--gcc/testsuite/objc/execute/protocol-isEqual-2.m7
-rw-r--r--gcc/testsuite/objc/execute/protocol-isEqual-3.m7
-rw-r--r--gcc/testsuite/objc/execute/protocol-isEqual-4.m7
-rw-r--r--gcc/testsuite/objc/execute/root_methods.m4
-rw-r--r--gcc/testsuite/objc/execute/string1.m5
-rw-r--r--gcc/testsuite/objc/execute/string2.m5
-rw-r--r--gcc/testsuite/objc/execute/string3.m5
-rw-r--r--gcc/testsuite/objc/execute/string4.m5
-rw-r--r--gcc/testsuite/objc/execute/trivial.m4
254 files changed, 2187 insertions, 540 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8c7bc15433e..5b7c8925830 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,283 @@
+2010-03-25 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
+
+ PR objc/35165
+ PR testsuite/43512
+ * objc-obj-c++-shared: New directory.
+ * objc-obj-c++-shared/Object1-implementation.h: New file.
+ * objc-obj-c++-shared/Object1.h: New file.
+ * objc-obj-c++-shared/Protocol1.h: New file.
+ * objc-obj-c++-shared/next-abi.h: New file.
+ * objc-obj-c++-shared/next-mapping.h: New file.
+ * objc/execute/next_mapping.h: Delete.
+ * objc.dg/special/special.exp: For all targets run the tests with
+ -fgnu-runtime, for darwin targets also run the tests with
+ -fnext-runtime.
+ * objc.dg/dg.exp: Ditto.
+ * obj-c++.dg/dg.exp: Ditto.
+ * objc/execute/forward-1.m: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. Amend testcase to
+ include use of updated NeXT interface.
+ * objc/execute/formal_protocol-5.m: Ditto.
+ * objc/execute/protocol-isEqual-2.m: Ditto.
+ * objc/execute/protocol-isEqual-4.m: Ditto.
+ * objc/execute/class-11.m: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required.
+ * objc/execute/object_is_class.m: Ditto.
+ * objc/execute/enumeration-1.m: Ditto.
+ * objc/execute/class-13.m: Ditto.
+ * objc/execute/formal_protocol-2.m: Ditto.
+ * objc/execute/formal_protocol-4.m: Ditto.
+ * objc/execute/class-1.m: Ditto.
+ * objc/execute/bycopy-1.m: Ditto.
+ * objc/execute/formal_protocol-6.m: Ditto.
+ * objc/execute/bycopy-3.m: Ditto.
+ * objc/execute/class-3.m: Ditto.
+ * objc/execute/bf-11.m: Ditto.
+ * objc/execute/class-5.m: Ditto.
+ * objc/execute/bf-13.m: Ditto.
+ * objc/execute/class-7.m: Ditto.
+ * objc/execute/bf-15.m: Ditto.
+ * objc/execute/class-9.m: Ditto.
+ * objc/execute/bf-17.m: Ditto.
+ * objc/execute/bf-19.m: Ditto.
+ * objc/execute/IMP.m: Ditto.
+ * objc/execute/exceptions/catchall-1.m: Ditto.
+ * objc/execute/exceptions/trivial.m: Ditto.
+ * objc/execute/exceptions/finally-1.m: Ditto.
+ * objc/execute/exceptions/local-variables-1.m: Ditto.
+ * objc/execute/exceptions/foward-1.m: Ditto.
+ * objc/execute/bf-2.m: Ditto.
+ * objc/execute/string1.m: Ditto.
+ * objc/execute/bf-4.m: Ditto.
+ * objc/execute/informal_protocol.m: Ditto.
+ * objc/execute/string3.m: Ditto.
+ * objc/execute/bf-6.m: Ditto.
+ * objc/execute/bf-8.m: Ditto.
+ * objc/execute/class-tests-1.h: Ditto.
+ * objc/execute/protocol-isEqual-1.m: Ditto.
+ * objc/execute/protocol-isEqual-3.m: Ditto.
+ * objc/execute/_cmd.m: Ditto.
+ * objc/execute/function-message-1.m: Ditto.
+ * objc/execute/bf-20.m: Ditto.
+ * objc/execute/bf-common.h: Ditto.
+ * objc/execute/np-2.m: Ditto.
+ * objc/execute/class-10.m: Ditto.
+ * objc/execute/class-12.m: Ditto.
+ * objc/execute/enumeration-2.m: Ditto.
+ * objc/execute/class-14.m: Ditto.
+ * objc/execute/encode-1.m: Ditto.
+ * objc/execute/formal_protocol-1.m: Ditto.
+ * objc/execute/formal_protocol-3.m: Ditto.
+ * objc/execute/accessing_ivars.m: Ditto.
+ * objc/execute/bycopy-2.m: Ditto.
+ * objc/execute/class-2.m: Ditto.
+ * objc/execute/bf-10.m: Ditto.
+ * objc/execute/formal_protocol-7.m: Ditto.
+ * objc/execute/root_methods.m: Ditto.
+ * objc/execute/class-4.m: Ditto.
+ * objc/execute/bf-12.m: Ditto.
+ * objc/execute/class-6.m: Ditto.
+ * objc/execute/bf-14.m: Ditto.
+ * objc/execute/nested-func-1.m: Ditto.
+ * objc/execute/class-8.m: Ditto.
+ * objc/execute/private.m: Ditto.
+ * objc/execute/bf-16.m: Ditto.
+ * objc/execute/bf-18.m: Ditto.
+ * objc/execute/load-3.m: Ditto.
+ * objc/execute/compatibility_alias.m: Ditto.
+ * objc/execute/bf-1.m: Ditto.
+ * objc/execute/no_clash.m: Ditto.
+ * objc/execute/bf-3.m: Ditto.
+ * objc/execute/string2.m: Ditto.
+ * objc/execute/bf-5.m: Ditto.
+ * objc/execute/string4.m: Ditto.
+ * objc/execute/bf-7.m: Ditto.
+ * objc/execute/object_is_meta_class.m: Ditto.
+ * objc/execute/bf-9.m: Ditto.
+ * objc/execute/bf-21.m: Ditto.
+ * objc/execute/cascading-1.m: Ditto.
+ * objc/execute/trivial.m: Ditto.
+ * objc/execute/np-1.m: Ditto.
+ * objc/compile/trivial.m: Ditto.
+ * objc/execute/class_self-2.m: Include <stdlib.h>.
+ * objc/execute/forward-1.x: Do not XFAIL for 32bit powerpc-darwin.
+ * objc.dg/desig-init-1.m: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. XFAIL run if NeXT
+ and 64bit. Use new NeXT interface as required.
+ * objc.dg/special/unclaimed-category-1.m: Ditto.
+ * objc.dg/special/unclaimed-category-1.h: Ditto.
+ * objc.dg/special/unclaimed-category-1a.m: Ditto.
+ * objc.dg/func-ptr-1.m: Ditto.
+ * objc.dg/stret-1.m: Ditto.
+ * objc.dg/encode-2.m: Ditto.
+ * objc.dg/category-1.m: Ditto.
+ * objc.dg/encode-3.m: Ditto.
+ * objc.dg/call-super-3.m: Ditto.
+ * objc.dg/method-3.m: Ditto.
+ * objc.dg/func-ptr-2.m: Ditto.
+ * objc.dg/lookup-1.m: Ditto.
+ * objc.dg/encode-4.m: Ditto.
+ * objc.dg/fix-and-continue-1.m: Ditto.
+ * objc.dg/proto-lossage-3.m: Ditto.
+ * objc.dg/method-13.m: Ditto.
+ * objc.dg/proto-qual-1.m: Ditto.
+ * objc.dg/zero-link-3.m: Ditto.
+ * objc.dg/bitfield-1.m: Ditto.
+ * objc.dg/va-meth-1.m: Ditto.
+ * objc.dg/super-class-3.m: Ditto.
+ * objc.dg/call-super-1.m: Ditto.
+ * objc.dg/type-size-2.m: Ditto.
+ * objc.dg/method-10.m: Ditto.
+ * objc.dg/defs.m: Ditto.
+ * objc.dg/const-str-3.m: Ditto.
+ * objc.dg/try-catch-6.m: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. Use new NeXT
+ interface as required.
+ * objc.dg/super-class-4.m: Ditto.
+ * objc.dg/comp-types-8.m: Ditto.
+ * objc.dg/call-super-2.m: Ditto.
+ * objc.dg/objc-fast-4.m: Ditto.
+ * objc.dg/method-6.m: Ditto.
+ * objc.dg/const-str-3.m: Ditto.
+ * objc.dg/const-str-7.m: Ditto.
+ * objc.dg/method-15.m: Ditto.
+ * objc.dg/method-19.m: Ditto.
+ * objc.dg/sync-1.m: Ditto.
+ * objc.dg/layout-1.m: Ditto.
+ * objc.dg/bitfield-3.m: Ditto.
+ * objc.dg/try-catch-3.m: Ditto.
+ * objc.dg/try-catch-7.m: Ditto.
+ * objc.dg/comp-types-10.m: Ditto.
+ * objc.dg/selector-2.: Ditto.
+ * objc.dg/method-7.m: Ditto.
+ * objc.dg/typedef-alias-1.m: Ditto.
+ * objc.dg/proto-lossage-2.m: Ditto.
+ * objc.dg/comp-types-11.m: Ditto.
+ * objc.dg/sizeof-1.m: Ditto.
+ * objc.dg/method-17.m: Ditto.
+ * objc.dg/bitfield-5.m: Ditto.
+ * objc.dg/try-catch-1.m: Ditto.
+ * objc.dg/encode-5.m: Ditto.
+ * objc.dg/fix-and-continue-2.m: Ditto.
+ * objc.dg/method-9.m: Ditto.
+ * objc.dg/isa-field-1.m: Ditto.
+ * objc.dg/local-decl-2.m: Ditto.
+ * objc.dg/objc-gc-4.m: Ditto.
+ * objc.dg/type-stream-1.m: Skip for NeXT runtime.
+ * objc.dg/gnu-runtime-3.m: Ditto.
+ * objc.dg/encode-7.m: Ditto.
+ * objc.dg/encode-8.m: Ditto.
+ * objc.dg/selector-3.m: Ditto.
+ * objc.dg/gnu-runtime-1.m: Ditto.
+ * objc.dg/const-str-12.m: Ditto.
+ * objc.dg/gnu-runtime-2.m: Ditto.
+ * objc.dg/no-extra-load.m: Skip for gnu-runtime.
+ * objc.dg/selector-1.m: Ditto.
+ * objc.dg/stubify-2.m: Ditto.
+ * objc.dg/zero-link-1.m: Ditto.
+ * objc.dg/stret-2.m: Ditto.
+ * objc.dg/zero-link-2.m: Ditto.
+ * objc.dg/next-runtime-1.m: Ditto.
+ * objc.dg/symtab-1.m: Ditto.
+ * objc.dg/stubify-1.m: Ditto.
+ * objc.dg/bitfield-2.m: Ditto.
+ * objc.dg/try-catch-10.m: Apply to both runtimes.
+ * objc.dg/const-str-1.m: Ditto.
+ * objc.dg/image-info.m: Ditto.
+ * objc.dg/encode-9.m: Ditto.
+ * objc.dg/pragma-1.m: Apply test to all targets.
+ * objc.dg/const-str-4.m: Ditto.
+ * objc.dg/const-str-8.m: Ditto.
+ * objc.dg/super-class-2.m: Ditto.
+ * objc.dg/try-catch-5.m: Ditto.
+ * objc.dg/const-str-10.m: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. Use new NeXT
+ interface as required. Skip for gnu-runtime. Test for .quad
+ at m64.
+ * objc.dg/const-str-11.m: Ditto.
+ * objc.dg/const-str-9.m: Ditto.
+ * objc.dg/method-4.m: Skip for 64Bit NeXT.
+ * objc.dg/encode-1.m: Remove redundant -lobjc.
+ * objc.dg/try-catch-9.m: Tidy space.
+ * obj-c++.dg/method-19.mm: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. XFAIL run if NeXT
+ and 64bit. Use new NeXT interface as required.
+ * obj-c++.dg/template-4.mm: Ditto.
+ * obj-c++.dg/defs.mm: Ditto.
+ * obj-c++.dg/basic.mm: Ditto.
+ * obj-c++.dg/encode-4.mm: Ditto.
+ * obj-c++.dg/method-17.mm: Ditto.
+ * obj-c++.dg/proto-lossage-3.mm: Ditto.
+ * obj-c++.dg/cxx-class-1.mm: Ditto.
+ * obj-c++.dg/method-10.mm: Ditto.
+ * obj-c++.dg/va-meth-1.mm: Ditto.
+ * obj-c++.dg/encode-5.mm: Ditto.
+ * obj-c++.dg/lookup-2.mm: Ditto.
+ * obj-c++.dg/template-3.mm: Ditto.
+ * obj-c++.dg/proto-qual-1.mm: Ditto.
+ * obj-c++.dg/qual-types-1.m: Ditto.
+ * obj-c++.dg/cxx-scope-1.mm: Ditto.
+ * obj-c++.dg/template-1.mm: Ditto.
+ * obj-c++.dg/encode-6.mm: Ditto.
+ * obj-c++.dg/bitfield-2.mm: Use shared wrapper headers (Object1.h,
+ Protocol1.h) and next-mapping.h as required. Use new NeXT
+ interface as required.
+ * obj-c++.dg/except-1.mm: Ditto.
+ * obj-c++.dg/const-str-7.mm: Ditto.
+ * obj-c++.dg/ivar-list-semi.mm: Ditto.
+ * obj-c++.dg/cxx-scope-2.mm: Ditto.
+ * obj-c++.dg/selector-2.mm: Ditto.
+ * obj-c++.dg/isa-field-1.mm: Ditto.
+ * obj-c++.dg/try-catch-1.mm: Ditto.
+ * obj-c++.dg/local-decl-1.mm: Ditto.
+ * obj-c++.dg/try-catch-9.mm: Ditto.
+ * obj-c++.dg/no-extra-load.mm: Ditto.
+ * obj-c++.dg/selector-5.mm: Ditto.
+ * obj-c++.dg/method-12.mm: Ditto.
+ * obj-c++.dg/try-catch-11.mm: Ditto.
+ * obj-c++.dg/comp-types-11.mm: Ditto.
+ * obj-c++.dg/bitfield-3.mm: Ditto.
+ * obj-c++.dg/method-6.mm: Ditto.
+ * obj-c++.dg/super-class-2.mm: Ditto.
+ * obj-c++.dg/method-21.mm: Ditto.
+ * obj-c++.dg/const-str-8.mm: Ditto.
+ * obj-c++.dg/try-catch-7.mm: Ditto.
+ * obj-c++.dg/method-15.mm: Ditto.
+ * obj-c++.dg/layout-1.mm: Ditto.
+ * obj-c++.dg/cxx-ivars-1.mm: Ditto.
+ * obj-c++.dg/const-str-3.mm: Ditto.
+ * obj-c++.dg/try-catch-2.mm: Ditto.
+ * obj-c++.dg/objc-gc-3.mm: Ditto.
+ * obj-c++.dg/fix-and-continue-2.mm: Ditto.
+ * obj-c++.dg/bitfield-1.mm: Ditto.
+ * obj-c++.dg/selector-6.mm: Ditto.
+ * obj-c++.dg/method-13.mm: Ditto.
+ * obj-c++.dg/comp-types-12.mm: Ditto.
+ * obj-c++.dg/bitfield-4.mm: Ditto.
+ * obj-c++.dg/try-catch-8.mm: Ditto.
+ * obj-c++.dg/method-2.mm: Ditto.
+ * obj-c++.dg/cxx-ivars-2.mm: Ditto.
+ * obj-c++.dg/typedef-alias-1.mm: Ditto.
+ * obj-c++.dg/const-str-4.mm: Ditto.
+ * obj-c++.dg/proto-lossage-2.mm: Ditto.
+ * obj-c++.dg/try-catch-3.mm: Ditto.
+ * obj-c++.dg/comp-types-9.mm: Ditto.
+ * obj-c++.dg/gnu-runtime-2.mm: Skip if NeXT runtime.
+ * obj-c++.dg/gnu-runtime-3.mm: Ditto.
+ * obj-c++.dg/gnu-runtime-1.mm: Ditto.
+ * objc.dg/zero-link-2.m: Skip if gnu runtime. Use shared wrapper
+ headers (Object1.h, Protocol1.h) and next-mapping.h as required.
+ Use new NeXT interface as required.
+ * obj-c++.dg/const-str-10.mm: Ditto.
+ * obj-c++.dg/const-str-11.mm: Ditto.
+ * obj-c++.dg/const-str-9.mm: Ditto.
+ * obj-c++.dg/method-11.mm: Ditto.
+ * obj-c++.dg/cxx-ivars-3.mm: Skip if gnu runtime. Use shared wrapper
+ headers (Object1.h, Protocol1.h) and next-mapping.h as required.
+ Use new NeXT interface as required. XFAIL run if NeXT and 64bit.
+ * obj-c++.dg/encode-8.mm: Remove redundant -lobjc.
+ * obj-c++.dg/const-str-1.mm: Run for NeXT as well as gnu.
+
2010-03-25 Dodji Seketeli <dodji@redhat.com>
PR c++/43206
diff --git a/gcc/testsuite/obj-c++.dg/basic.mm b/gcc/testsuite/obj-c++.dg/basic.mm
index 5a9fb430e06..8fb0204eb12 100644
--- a/gcc/testsuite/obj-c++.dg/basic.mm
+++ b/gcc/testsuite/obj-c++.dg/basic.mm
@@ -1,7 +1,7 @@
// A basic sanity check for Objective-C++.
// { dg-do run }
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <iostream>
@interface Greeter : Object
@@ -19,3 +19,4 @@ main ()
Greeter *obj = [Greeter new];
[obj greet: "Hello from Objective-C\n"];
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-1.mm b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
index f17d9f0baca..7b8e861ca66 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-1.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-1.mm
@@ -9,8 +9,8 @@
/* Leave blank lines here to keep warnings on the same lines. */
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-2.mm b/gcc/testsuite/obj-c++.dg/bitfield-2.mm
index 7f778b5a4d9..1bddf540a67 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-2.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-2.mm
@@ -3,7 +3,7 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort();
@@ -76,3 +76,4 @@ int main(void) {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-3.mm b/gcc/testsuite/obj-c++.dg/bitfield-3.mm
index 1ad10f64286..32f2d726dda 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-3.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-3.mm
@@ -1,7 +1,7 @@
/* Check if bitfield ivars are correctly @encode'd when
the NeXT runtime is used. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -fsigned-char" } */
+/* { dg-options "-fsigned-char" } */
/* { dg-do run { target *-*-darwin* } } */
typedef struct objc_object { struct objc_class *class_pointer; } *id;
diff --git a/gcc/testsuite/obj-c++.dg/bitfield-4.mm b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
index a2c2173085a..35c32ee98a4 100644
--- a/gcc/testsuite/obj-c++.dg/bitfield-4.mm
+++ b/gcc/testsuite/obj-c++.dg/bitfield-4.mm
@@ -2,9 +2,9 @@
layout of bitfields. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-/* { dg-options "-lobjc -Wpadded" } */
+/* { dg-options "-Wpadded" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#include <string.h>
diff --git a/gcc/testsuite/obj-c++.dg/comp-types-10.mm b/gcc/testsuite/obj-c++.dg/comp-types-10.mm
index 0a8f1c9b2c2..b4da5ddd643 100644
--- a/gcc/testsuite/obj-c++.dg/comp-types-10.mm
+++ b/gcc/testsuite/obj-c++.dg/comp-types-10.mm
@@ -1,6 +1,6 @@
/* Yet another mysterious gimplifier crasher. */
/* { dg-do compile } */
-/* { dg-xfail-if "PR23716" { *-*-* } { "*" } { "" } } */
+/* { dg-xfail-if "PR23716" { ! *-*-darwin* } { "*" } { "" } } */
/* { dg-prune-output ".*internal compiler error.*" } */
/* { dg-options "-O3" } */
diff --git a/gcc/testsuite/obj-c++.dg/comp-types-11.mm b/gcc/testsuite/obj-c++.dg/comp-types-11.mm
index c28a2a55a9e..3d85983991e 100644
--- a/gcc/testsuite/obj-c++.dg/comp-types-11.mm
+++ b/gcc/testsuite/obj-c++.dg/comp-types-11.mm
@@ -1,6 +1,6 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Foo
- (id)meth1;
diff --git a/gcc/testsuite/obj-c++.dg/comp-types-12.mm b/gcc/testsuite/obj-c++.dg/comp-types-12.mm
index 00e6e3af100..37feff0a723 100644
--- a/gcc/testsuite/obj-c++.dg/comp-types-12.mm
+++ b/gcc/testsuite/obj-c++.dg/comp-types-12.mm
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived: Object
@end
diff --git a/gcc/testsuite/obj-c++.dg/comp-types-9.mm b/gcc/testsuite/obj-c++.dg/comp-types-9.mm
index f092c9e2796..079140ac408 100644
--- a/gcc/testsuite/obj-c++.dg/comp-types-9.mm
+++ b/gcc/testsuite/obj-c++.dg/comp-types-9.mm
@@ -2,7 +2,7 @@
/* Another gimplifier ICE... */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface MyView: Object {
int _frame;
diff --git a/gcc/testsuite/obj-c++.dg/const-str-1.mm b/gcc/testsuite/obj-c++.dg/const-str-1.mm
index e4cac2e57ec..156a92e1194 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-1.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-1.mm
@@ -1,6 +1,5 @@
/* Test errors for constant strings. */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
#ifdef __cplusplus
extern void baz(...);
diff --git a/gcc/testsuite/obj-c++.dg/const-str-10.mm b/gcc/testsuite/obj-c++.dg/const-str-10.mm
index 4efe044c13e..8605bdb3341 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-10.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-10.mm
@@ -2,10 +2,10 @@
constant string classes get derived. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime" } */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface NSString: Object
@end
@@ -20,7 +20,11 @@
@interface NSConstantString : NSSimpleCString
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+Class _NSConstantStringClassReference;
+#else
extern struct objc_class _NSConstantStringClassReference;
+#endif
const NSConstantString *appKey = @"MyApp";
diff --git a/gcc/testsuite/obj-c++.dg/const-str-11.mm b/gcc/testsuite/obj-c++.dg/const-str-11.mm
index 3b7ec7ad51f..22c1f04cf1f 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-11.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-11.mm
@@ -2,10 +2,11 @@
constant string classes get derived. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime -fconstant-string-class=XStr" } */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+/* { dg-options "-fconstant-string-class=XStr" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface XString: Object {
@protected
@@ -19,7 +20,11 @@
}
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
extern struct objc_class _XStrClassReference;
+#else
+extern Class _XStrClassReference;
+#endif
const XStr *appKey = @"MyApp";
diff --git a/gcc/testsuite/obj-c++.dg/const-str-3.mm b/gcc/testsuite/obj-c++.dg/const-str-3.mm
index 7d4f80863d2..3e7939adeb1 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-3.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-3.mm
@@ -2,14 +2,18 @@
runtime. */
/* Developed by Markus Hitter <mah@jump-ing.de>. */
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
+/* { dg-options "-fconstant-string-class=Foo" } */
/* { dg-do run { target *-*-darwin* } } */
+#import "../objc-obj-c++-shared/Object1.h"
+#import "../objc-obj-c++-shared/next-mapping.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <objc/objc.h>
-#include <objc/Object.h>
+#ifndef __NEXT_RUNTIME__
+#include <objc/objc-api.h>
+#endif
@interface Foo: Object {
char *cString;
@@ -18,7 +22,11 @@
- (char *)customString;
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class _FooClassReference;
+#else
struct objc_class _FooClassReference;
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -38,7 +46,7 @@ int main () {
constant string object. Can't be moved to +initialize since _that_
is already a message. */
- memcpy(&_FooClassReference, objc_getClass("Foo"), sizeof(_FooClassReference));
+ memcpy(&_FooClassReference, objc_get_class("Foo"), sizeof(_FooClassReference));
if (strcmp ([string customString], "bla")) {
abort ();
}
@@ -46,3 +54,4 @@ int main () {
printf([@"This is a working constant string object\n" customString]);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/const-str-4.mm b/gcc/testsuite/obj-c++.dg/const-str-4.mm
index 9ea257d80e9..09d24ad4cb7 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-4.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-4.mm
@@ -1,7 +1,7 @@
/* Ensure that the preprocessor handles ObjC string constants gracefully. */
/* Author: Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime -fconstant-string-class=MyString -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
+/* { dg-options "-fconstant-string-class=MyString" } */
+/* { dg-do run { target *-*-darwin* } } */
#include <stdlib.h>
diff --git a/gcc/testsuite/obj-c++.dg/const-str-7.mm b/gcc/testsuite/obj-c++.dg/const-str-7.mm
index 3691579381d..fe66b2cc2c8 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-7.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-7.mm
@@ -2,17 +2,15 @@
scopes. */
/* Developed by Andrew Pinski <pinskia@physics.uc.edu> */
+/* { dg-options "-fconstant-string-class=Foo" } */
+/* { dg-do run } */
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
-
-
+#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/next-mapping.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <objc/objc.h>
-#include <objc/Object.h>
-
@interface Foo: Object {
char *cString;
@@ -21,8 +19,11 @@
- (char *)customString;
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class _FooClassReference;
+#else
struct objc_class _FooClassReference;
-
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -36,11 +37,10 @@ int main () {
{
Foo *string2 = @"bla";
-
if(string != string2)
abort();
printf("Strings are being uniqued properly\n");
}
return 0;
}
-
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/const-str-8.mm b/gcc/testsuite/obj-c++.dg/const-str-8.mm
index 60abcbd52b1..67473417f29 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-8.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-8.mm
@@ -1,12 +1,11 @@
/* Test for assigning compile-time constant-string objects to static variables. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
+/* { dg-options "-fconstant-string-class=Foo" } */
/* { dg-do run { target *-*-darwin* } } */
-
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
-#include <objc/Object.h>
@interface Foo: Object {
char *cString;
@@ -14,7 +13,11 @@
}
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+Class _FooClassReference;
+#else
struct objc_class _FooClassReference;
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -37,3 +40,5 @@ int main () {
PrefsSynchronize();
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/const-str-9.mm b/gcc/testsuite/obj-c++.dg/const-str-9.mm
index 943dbae0ba3..28621334a61 100644
--- a/gcc/testsuite/obj-c++.dg/const-str-9.mm
+++ b/gcc/testsuite/obj-c++.dg/const-str-9.mm
@@ -1,11 +1,10 @@
/* Test if ObjC constant strings get placed in the correct section. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime" } */
-/* { dg-do compile { target *-*-darwin* } } */
-/* { dg-skip-if "" { *-*-darwin* } { "-m64" } { "" } } */
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface NSConstantString: Object {
char *cString;
@@ -13,7 +12,11 @@
}
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+Class _NSConstantStringClassReference;
+#else
extern struct objc_class _NSConstantStringClassReference;
+#endif
const NSConstantString *appKey = @"MyApp";
diff --git a/gcc/testsuite/obj-c++.dg/cxx-class-1.mm b/gcc/testsuite/obj-c++.dg/cxx-class-1.mm
index 64fed0f8bc0..6cde9beb569 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-class-1.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-class-1.mm
@@ -1,6 +1,6 @@
/* Test that Objective-C++ is able to chew through a simple C++ class hierarchy.
This was broken in earlier ObjC++ incarnations. */
-
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
struct foo
{
foo(void *a) {};
diff --git a/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm b/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
index 6e5812cf8e0..d89258aa6b7 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
@@ -3,7 +3,7 @@
// { dg-do run }
// { dg-options "-fno-objc-call-cxx-cdtors" }
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -40,3 +40,4 @@ int main (void)
[obj manipulate_ivars];
[obj free];
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm b/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm
index 3a6df79ab4c..e07437187a4 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm
@@ -4,7 +4,7 @@
// { dg-do run { xfail { "*-*-*" } } } PR27247/PR23681
// { dg-options "-fobjc-call-cxx-cdtors" }
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -74,3 +74,4 @@ int main (void)
[foo free];
CHECK_IF(!ctor1_called && !ctor2_called && dtor1_called);
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm b/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
index ca5e5eda450..898ce6aed90 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
@@ -1,9 +1,12 @@
// Check if ObjC classes with non-POD C++ ivars are specially marked in the metadata.
// { dg-do run { target *-*-darwin* } }
-// { dg-options "-fobjc-call-cxx-cdtors -fnext-runtime" }
+// { dg-options "-fobjc-call-cxx-cdtors" }
+// { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
+/* { 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/objc-runtime.h>
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -37,10 +40,16 @@ int main (void)
{
Class cls;
- cls = objc_getClass("Foo");
+ cls = objc_get_class("Foo");
+#if NEXT_OBJC_USE_NEW_INTERFACE
+ CHECK_IF(class_isMetaClass(cls) & CLS_HAS_CXX_STRUCTORS);
+ cls = objc_getClass("Bar");
+ CHECK_IF(!(class_isMetaClass(cls) & CLS_HAS_CXX_STRUCTORS));
+#else
CHECK_IF(cls->info & CLS_HAS_CXX_STRUCTORS);
cls = objc_getClass("Bar");
CHECK_IF(!(cls->info & CLS_HAS_CXX_STRUCTORS));
-
+#endif
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm b/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm
index 952facceb71..a576bbd4f58 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-scope-1.mm
@@ -2,8 +2,8 @@
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
@class Derived;
@@ -51,3 +51,4 @@ int main(void) {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm b/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
index a5bce398325..21fed5085fc 100644
--- a/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
+++ b/gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
@@ -3,7 +3,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <iostream>
#include <string>
diff --git a/gcc/testsuite/obj-c++.dg/defs.mm b/gcc/testsuite/obj-c++.dg/defs.mm
index 8b67aab4b9a..0e8b26c72a6 100644
--- a/gcc/testsuite/obj-c++.dg/defs.mm
+++ b/gcc/testsuite/obj-c++.dg/defs.mm
@@ -1,12 +1,11 @@
/* Check @defs() in Objective-C++ */
/* Contributed by Devang Patel <dpatel@apple.com> */
-
-/* { dg-options "-lobjc" } */
+/* { 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 <stdlib.h>
#include <objc/objc.h>
-#include <objc/Object.h>
extern "C" void abort(void);
@@ -41,3 +40,4 @@ int main()
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/dg.exp b/gcc/testsuite/obj-c++.dg/dg.exp
index 5fc1a976bba..109746467ec 100644
--- a/gcc/testsuite/obj-c++.dg/dg.exp
+++ b/gcc/testsuite/obj-c++.dg/dg.exp
@@ -31,7 +31,12 @@ dg-init
set tests [lsort [find $srcdir/$subdir *.mm]]
# Main loop.
-dg-runtest $tests "" $DEFAULT_OBJCXXFLAGS
+dg-runtest $tests "-fgnu-runtime" $DEFAULT_OBJCXXFLAGS
+
+# darwin targets can also run code with the NeXT runtime.
+if [istarget "*-*-darwin*" ] {
+dg-runtest $tests "-fnext-runtime" $DEFAULT_OBJCXXFLAGS
+}
# All done.
dg-finish
diff --git a/gcc/testsuite/obj-c++.dg/encode-4.mm b/gcc/testsuite/obj-c++.dg/encode-4.mm
index 66745f01f08..b973abe2dbd 100644
--- a/gcc/testsuite/obj-c++.dg/encode-4.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-4.mm
@@ -15,20 +15,16 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-
-#include <objc/objc.h>
-#include <objc/Object.h>
+/* { 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__
#define METHOD Method
-#define OBJC_GETCLASS objc_getClass
-#define CLASS_GETINSTANCEMETHOD class_getInstanceMethod
#else
#include <objc/objc-api.h>
#define METHOD Method_t
-#define OBJC_GETCLASS objc_get_class
-#define CLASS_GETINSTANCEMETHOD class_get_instance_method
+#define method_get_types(M) (M)->method_types
#endif
#include <stdio.h>
@@ -78,27 +74,28 @@ unsigned offs1, offs2, offs3, offs4, offs5, offs6, offs7;
int main(void) {
Foo *foo = [[Foo alloc] init];
- Class fooClass = OBJC_GETCLASS("Foo");
+ Class fooClass = objc_get_class("Foo");
METHOD meth;
const char *string;
- meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(setRect:withInt:));
+ meth = class_get_instance_method(fooClass, @selector(setRect:withInt:));
offs2 = 9999;
- sscanf(meth->method_types, "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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_GETINSTANCEMETHOD(fooClass, @selector(char:float:double:long:));
+ meth = class_get_instance_method(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(meth->method_types, string, &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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"
diff --git a/gcc/testsuite/obj-c++.dg/encode-5.mm b/gcc/testsuite/obj-c++.dg/encode-5.mm
index 748df7c634e..4959ea394a3 100644
--- a/gcc/testsuite/obj-c++.dg/encode-5.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-5.mm
@@ -1,16 +1,22 @@
/* Method encoding tests for stand-alone @protocol declarations. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-#include <objc/Protocol.h>
+/* { 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"
#ifdef __cplusplus
#define ProtoBool bool
#else
#define ProtoBool _Bool
#endif
-#ifndef __NEXT_RUNTIME__
+#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>
@@ -37,6 +43,7 @@ typedef struct _XXRect { XXPoint origin; XXSize size; struct _XXRect *next; } XX
Protocol *proto = @protocol(Proto);
struct objc_method_description *meth;
+
unsigned totsize, offs0, offs1, offs2, offs3, offs4, offs5, offs6, offs7;
static void scan_initial(const char *pattern) {
@@ -71,3 +78,4 @@ int main(void) {
CHECK_IF(totsize == offs2 + sizeof(ObjCBool **));
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/encode-6.mm b/gcc/testsuite/obj-c++.dg/encode-6.mm
index 5b85c3d5590..987d4a8ae2e 100644
--- a/gcc/testsuite/obj-c++.dg/encode-6.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-6.mm
@@ -1,15 +1,12 @@
/* Encoding tests for ObjC class layouts. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
-
-#include <objc/Object.h>
-#ifdef __NEXT_RUNTIME__
-#include <objc/objc-class.h>
-#define OBJC_GETCLASS objc_getClass
-#else
+/* { 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>
-#define OBJC_GETCLASS objc_get_class
#endif
#include <stdlib.h>
@@ -50,25 +47,43 @@ struct Nested {
@implementation Int2
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+Ivar *ivar;
+#else
struct objc_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
CHECK_IF(!strcmp(ivar->ivar_name, name));
CHECK_IF(!strcmp(ivar->ivar_type, type));
+#endif
ivar++;
}
int main(void) {
- ivar = ((Class)OBJC_GETCLASS("Int1"))->ivars->ivar_list;
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ ivar = class_copyIvarList ((Class)objc_get_class("Int1"), NULL);
+#else
+ ivar = ((Class)objc_get_class("Int1"))->ivars->ivar_list;
+#endif
check_ivar("a", "c");
check_ivar("b", "c");
check_ivar("int2", "@\"Int2\"");
check_ivar("nested",
"{Nested=\"a\"f\"b\"f\"next\"@\"Int1\"\"innermost\"{Innermost=\"a\"C\"b\"C\"encl\"^{Nested}}}");
- ivar = ((Class)OBJC_GETCLASS("Int2"))->ivars->ivar_list;
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ ivar = class_copyIvarList ((Class)objc_get_class("Int2"), NULL);
+#else
+ ivar = ((Class)objc_get_class("Int2"))->ivars->ivar_list;
+#endif
check_ivar("innermost", "^{Innermost=CC^{Nested}}");
check_ivar("base", "@\"Int1\"");
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/encode-7.mm b/gcc/testsuite/obj-c++.dg/encode-7.mm
index f2cb693b1b7..40b1510bef0 100644
--- a/gcc/testsuite/obj-c++.dg/encode-7.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-7.mm
@@ -9,20 +9,18 @@
/* Contributed by Alexander Malmberg <alexander@malmberg.org> */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/next-mapping.h"
#include <stdlib.h>
#include <stdio.h>
#define CHECK_IF(expr) if(!(expr)) abort()
#ifdef __NEXT_RUNTIME__
#define METHOD Method
-#define OBJC_GETCLASS objc_getClass
-#define CLASS_GETINSTANCEMETHOD class_getInstanceMethod
#else
#include <objc/objc-api.h>
#define METHOD Method_t
-#define OBJC_GETCLASS objc_get_class
-#define CLASS_GETINSTANCEMETHOD class_get_instance_method
+#define method_get_types(M) (M)->method_types
#endif
@interface Test : Object
@@ -49,7 +47,7 @@ int offs1, offs2, offs3, offs4, offs5, offs6;
int main(int argc, char **argv)
{
- Class testClass = OBJC_GETCLASS("Test");
+ Class testClass = objc_get_class("Test");
METHOD meth;
cc[0] = [Test new];
@@ -60,16 +58,16 @@ int main(int argc, char **argv)
[*c test2: bb with: bb + 5];
CHECK_IF (bb[3] == 5);
- meth = CLASS_GETINSTANCEMETHOD(testClass, @selector(test2:with:));
+ meth = class_get_instance_method(testClass, @selector(test2:with:));
offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
- sscanf(meth->method_types, "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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_GETINSTANCEMETHOD(testClass, @selector(test3:));
+ meth = class_get_instance_method(testClass, @selector(test3:));
offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
- sscanf(meth->method_types, "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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);
diff --git a/gcc/testsuite/obj-c++.dg/encode-8.mm b/gcc/testsuite/obj-c++.dg/encode-8.mm
index 53ad4e3222c..de800d08d94 100644
--- a/gcc/testsuite/obj-c++.dg/encode-8.mm
+++ b/gcc/testsuite/obj-c++.dg/encode-8.mm
@@ -3,7 +3,6 @@
should be encoded as '*'). */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run { xfail { "*-*-*" } } } PR27249 */
-/* { dg-options "-lobjc" } */
#include <string.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/obj-c++.dg/except-1.mm b/gcc/testsuite/obj-c++.dg/except-1.mm
index e06bea0a86c..ccd5bad5f2b 100644
--- a/gcc/testsuite/obj-c++.dg/except-1.mm
+++ b/gcc/testsuite/obj-c++.dg/except-1.mm
@@ -8,14 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
-
-
-@interface Object {
- Class isa;
-}
-+ alloc;
-- init;
-@end
+#include "../objc-obj-c++-shared/Object1.h"
// ObjectiveC class header
@interface ObjCclass : Object {
@@ -69,3 +62,5 @@ void CPPclass::function1()
/* Shouldn't be here because we threw. */
abort ();
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm b/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm
index 33cb8467dcd..fdfbcbd0c18 100644
--- a/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm
+++ b/gcc/testsuite/obj-c++.dg/fix-and-continue-2.mm
@@ -6,7 +6,7 @@
/* { dg-do assemble { target *-*-darwin* } } */
/* { dg-options "-mfix-and-continue" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo: Object
+ (Object *)indexableFileTypes;
diff --git a/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm b/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm
index dab921554f1..c7e3bcc3a22 100644
--- a/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm
+++ b/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm
@@ -2,7 +2,7 @@
the system runtime used). */
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
diff --git a/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm b/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
index e6a1d181d90..dd53338895d 100644
--- a/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
+++ b/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm
@@ -2,7 +2,7 @@
regardless of runtime used on target system. */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
#include <string.h>
diff --git a/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm b/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
index d9c62d9de2d..429fce3e80b 100644
--- a/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
+++ b/gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm
@@ -2,7 +2,7 @@
the system runtime used). */
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do run } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/obj-c++.dg/isa-field-1.mm b/gcc/testsuite/obj-c++.dg/isa-field-1.mm
index f6d3e6a475c..274aa8c9a6d 100644
--- a/gcc/testsuite/obj-c++.dg/isa-field-1.mm
+++ b/gcc/testsuite/obj-c++.dg/isa-field-1.mm
@@ -2,7 +2,7 @@
/* { dg-do compile } */
/* { dg-xfail-if "PR23613" { "*-*-*" } { "*" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Object (Test)
- (Class) test1: (id)object;
@@ -42,3 +42,4 @@ Class test3(id object) {
Class cls = object->isa;
return cls;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm b/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
index 21bd3a3bec0..322de2fd470 100644
--- a/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
+++ b/gcc/testsuite/obj-c++.dg/ivar-list-semi.mm
@@ -1,7 +1,7 @@
/* Allow for an optional semicolon following the ivar block. */
/* Contributed by: Ziemowit Laski <zlaski@apple.com>. */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Tink : Object {
@private
diff --git a/gcc/testsuite/obj-c++.dg/layout-1.mm b/gcc/testsuite/obj-c++.dg/layout-1.mm
index bc99e758f8c..3cd4d1567fb 100644
--- a/gcc/testsuite/obj-c++.dg/layout-1.mm
+++ b/gcc/testsuite/obj-c++.dg/layout-1.mm
@@ -3,7 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-Wpadded -Wpacked -Wabi" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived1: Object
{ }
diff --git a/gcc/testsuite/obj-c++.dg/local-decl-1.mm b/gcc/testsuite/obj-c++.dg/local-decl-1.mm
index 0d7389d2c2f..6848572873c 100644
--- a/gcc/testsuite/obj-c++.dg/local-decl-1.mm
+++ b/gcc/testsuite/obj-c++.dg/local-decl-1.mm
@@ -5,7 +5,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Sprite: Object {
int sprite, spree;
diff --git a/gcc/testsuite/obj-c++.dg/lookup-2.mm b/gcc/testsuite/obj-c++.dg/lookup-2.mm
index a14860af51c..5dffb017d4d 100644
--- a/gcc/testsuite/obj-c++.dg/lookup-2.mm
+++ b/gcc/testsuite/obj-c++.dg/lookup-2.mm
@@ -1,7 +1,7 @@
/* { dg-do run } */
/* { dg-xfail-if "PR23614" { "*-*-*" } { "*" } { "" } } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
class MyWidget {
@@ -55,3 +55,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/method-10.mm b/gcc/testsuite/obj-c++.dg/method-10.mm
index 01a568ba857..cac5d9791a9 100644
--- a/gcc/testsuite/obj-c++.dg/method-10.mm
+++ b/gcc/testsuite/obj-c++.dg/method-10.mm
@@ -1,9 +1,9 @@
/* Test for sending messages to aliased classes (and instances thereof). */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -43,3 +43,4 @@ int main(void) {
CHECK_IF([(Int1Alias *)int2typedef instanceMeth] == 1697);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/method-11.mm b/gcc/testsuite/obj-c++.dg/method-11.mm
index c8d092df74d..6c6b1a038a0 100644
--- a/gcc/testsuite/obj-c++.dg/method-11.mm
+++ b/gcc/testsuite/obj-c++.dg/method-11.mm
@@ -1,10 +1,11 @@
/* Check if class references (generated for the NeXT runtime) are appropriately
folded. This test is safe to run on all targets. */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime" } */
+
/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
typedef Object ObjectTypedef1;
typedef ObjectTypedef1 ObjectTypedef2;
diff --git a/gcc/testsuite/obj-c++.dg/method-12.mm b/gcc/testsuite/obj-c++.dg/method-12.mm
index 21f4bb9f44d..e3620708a9d 100644
--- a/gcc/testsuite/obj-c++.dg/method-12.mm
+++ b/gcc/testsuite/obj-c++.dg/method-12.mm
@@ -3,7 +3,7 @@
/* { dg-options "-Wstrict-selector-match" } */
/* { dg-do compile } */
-#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/Protocol1.h"
@interface Base
- (unsigned)port;
diff --git a/gcc/testsuite/obj-c++.dg/method-13.mm b/gcc/testsuite/obj-c++.dg/method-13.mm
index adf6dfe26d8..18fb7cd3ae5 100644
--- a/gcc/testsuite/obj-c++.dg/method-13.mm
+++ b/gcc/testsuite/obj-c++.dg/method-13.mm
@@ -2,7 +2,7 @@
/* { dg-options "-Wstrict-selector-match" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Class1
- (void)setWindow:(Object *)wdw;
diff --git a/gcc/testsuite/obj-c++.dg/method-15.mm b/gcc/testsuite/obj-c++.dg/method-15.mm
index 9d9099e9f7e..055e8ca0c9b 100644
--- a/gcc/testsuite/obj-c++.dg/method-15.mm
+++ b/gcc/testsuite/obj-c++.dg/method-15.mm
@@ -3,7 +3,7 @@
/* { dg-options "-Wstrict-selector-match" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol MyObject
- (id)initWithData:(Object *)data;
diff --git a/gcc/testsuite/obj-c++.dg/method-17.mm b/gcc/testsuite/obj-c++.dg/method-17.mm
index a9b74bed8d0..cb60473b345 100644
--- a/gcc/testsuite/obj-c++.dg/method-17.mm
+++ b/gcc/testsuite/obj-c++.dg/method-17.mm
@@ -3,8 +3,8 @@
message sends (so that proper C/C++ argument conversions may
take place). */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -30,3 +30,4 @@ int main(void)
[foo brokenType: (int)d floatingPoint: d];
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/method-19.mm b/gcc/testsuite/obj-c++.dg/method-19.mm
index e7a2b44fd7a..5dca80494ce 100644
--- a/gcc/testsuite/obj-c++.dg/method-19.mm
+++ b/gcc/testsuite/obj-c++.dg/method-19.mm
@@ -3,15 +3,12 @@
root classes must be considered. */
/* 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>
-#ifdef __NEXT_RUNTIME__
-#include <objc/objc-runtime.h>
-#define OBJC_GETCLASS objc_getClass
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/objc-api.h>
-#define OBJC_GETCLASS objc_get_class
#endif
#include <stdlib.h>
@@ -59,7 +56,7 @@
int main(void)
{
- Class obj = OBJC_GETCLASS("Derived");
+ Class obj = objc_get_class("Derived");
/* None of the following should elicit compiler-time warnings. */
@@ -78,3 +75,4 @@ int main(void)
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/method-2.mm b/gcc/testsuite/obj-c++.dg/method-2.mm
index a76055e4716..117d420e14a 100644
--- a/gcc/testsuite/obj-c++.dg/method-2.mm
+++ b/gcc/testsuite/obj-c++.dg/method-2.mm
@@ -4,7 +4,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class NSString;
diff --git a/gcc/testsuite/obj-c++.dg/method-21.mm b/gcc/testsuite/obj-c++.dg/method-21.mm
index 0c8051c2cc1..898768d6d1c 100644
--- a/gcc/testsuite/obj-c++.dg/method-21.mm
+++ b/gcc/testsuite/obj-c++.dg/method-21.mm
@@ -2,7 +2,7 @@
/* { dg-do compile } */
/* { dg-options "-Wreturn-type -Wextra" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo: Object
- (id) meth1;
diff --git a/gcc/testsuite/obj-c++.dg/method-6.mm b/gcc/testsuite/obj-c++.dg/method-6.mm
index 5fc0d73d375..6c21e799589 100644
--- a/gcc/testsuite/obj-c++.dg/method-6.mm
+++ b/gcc/testsuite/obj-c++.dg/method-6.mm
@@ -4,7 +4,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class NotKnown;
diff --git a/gcc/testsuite/obj-c++.dg/no-extra-load.mm b/gcc/testsuite/obj-c++.dg/no-extra-load.mm
index 7b4a3607561..1663ebc2132 100644
--- a/gcc/testsuite/obj-c++.dg/no-extra-load.mm
+++ b/gcc/testsuite/obj-c++.dg/no-extra-load.mm
@@ -2,7 +2,7 @@
// { dg-do compile }
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <iostream>
@interface Greeter : Object
diff --git a/gcc/testsuite/obj-c++.dg/objc-gc-3.mm b/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
index df0a44cd8dd..efbde1b4b2a 100644
--- a/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
+++ b/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
@@ -5,7 +5,7 @@
/* { dg-do compile { target *-*-darwin* } } */
/* { dg-options "-fobjc-gc" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class MyWindow;
diff --git a/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm b/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
index b3ab9681f62..361bb9087e6 100644
--- a/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
+++ b/gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
@@ -2,7 +2,7 @@
provide a suitable method. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Zot
-(void) zot;
diff --git a/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm b/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
index 512a59ee6dc..7a51d952248 100644
--- a/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
+++ b/gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
@@ -2,9 +2,10 @@
a protocol with no instance/class methods respectively.
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/objc.h>
#include <objc/Object.h>
-#include <objc/Protocol.h>
@protocol NoInstanceMethods
+ testMethod;
diff --git a/gcc/testsuite/obj-c++.dg/proto-qual-1.mm b/gcc/testsuite/obj-c++.dg/proto-qual-1.mm
index d9bbf3aa9b5..caf1eab2cc7 100644
--- a/gcc/testsuite/obj-c++.dg/proto-qual-1.mm
+++ b/gcc/testsuite/obj-c++.dg/proto-qual-1.mm
@@ -2,8 +2,8 @@
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do run } */
-
-#include <objc/Protocol.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Protocol1.h"
#ifndef __NEXT_RUNTIME__
#include <objc/objc-api.h>
#endif
diff --git a/gcc/testsuite/obj-c++.dg/qual-types-1.mm b/gcc/testsuite/obj-c++.dg/qual-types-1.mm
index db8195cb4eb..2b0a7be591d 100644
--- a/gcc/testsuite/obj-c++.dg/qual-types-1.mm
+++ b/gcc/testsuite/obj-c++.dg/qual-types-1.mm
@@ -3,8 +3,8 @@
/* Author: Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -66,3 +66,4 @@ int main (void) {
CHECK_IF(FooHolder::counter == 0);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/selector-2.mm b/gcc/testsuite/obj-c++.dg/selector-2.mm
index 09fbc252836..b3a3579e927 100644
--- a/gcc/testsuite/obj-c++.dg/selector-2.mm
+++ b/gcc/testsuite/obj-c++.dg/selector-2.mm
@@ -2,7 +2,7 @@
/* { dg-options "-Wselector" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo
@end
diff --git a/gcc/testsuite/obj-c++.dg/selector-5.mm b/gcc/testsuite/obj-c++.dg/selector-5.mm
index 10671a9450b..5a3a4b614b2 100644
--- a/gcc/testsuite/obj-c++.dg/selector-5.mm
+++ b/gcc/testsuite/obj-c++.dg/selector-5.mm
@@ -1,7 +1,7 @@
/* { dg-options "" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
int main()
{
diff --git a/gcc/testsuite/obj-c++.dg/selector-6.mm b/gcc/testsuite/obj-c++.dg/selector-6.mm
index 54a38f8f75e..4ba8e2b366b 100644
--- a/gcc/testsuite/obj-c++.dg/selector-6.mm
+++ b/gcc/testsuite/obj-c++.dg/selector-6.mm
@@ -1,7 +1,7 @@
/* { dg-options "" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
int main()
{
diff --git a/gcc/testsuite/obj-c++.dg/super-class-2.mm b/gcc/testsuite/obj-c++.dg/super-class-2.mm
index 41e2fd2bfee..4ec0c3f471b 100644
--- a/gcc/testsuite/obj-c++.dg/super-class-2.mm
+++ b/gcc/testsuite/obj-c++.dg/super-class-2.mm
@@ -4,7 +4,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class MyWpModule;
diff --git a/gcc/testsuite/obj-c++.dg/template-1.mm b/gcc/testsuite/obj-c++.dg/template-1.mm
index 4b0a3df6c63..fc8b08b5ed6 100644
--- a/gcc/testsuite/obj-c++.dg/template-1.mm
+++ b/gcc/testsuite/obj-c++.dg/template-1.mm
@@ -2,8 +2,8 @@
/* Author: Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -47,3 +47,4 @@ int main (void) {
CHECK_IF(count == 0);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/template-3.mm b/gcc/testsuite/obj-c++.dg/template-3.mm
index 662e44db470..a3b96b32d7e 100644
--- a/gcc/testsuite/obj-c++.dg/template-3.mm
+++ b/gcc/testsuite/obj-c++.dg/template-3.mm
@@ -3,8 +3,8 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -78,3 +78,4 @@ int main(void) {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/template-4.mm b/gcc/testsuite/obj-c++.dg/template-4.mm
index 25a1df990b4..fa1132d9072 100644
--- a/gcc/testsuite/obj-c++.dg/template-4.mm
+++ b/gcc/testsuite/obj-c++.dg/template-4.mm
@@ -1,17 +1,13 @@
/* Author: Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-/* { dg-skip-if "" { *-*-darwin* } { "-m64" } { "" } } */
-
-#include <objc/Object.h>
+/* { 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 <stdarg.h>
#include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-/* The following ain't pretty, but does allow us to have just one copy
- of next_mapping.h. */
-#include "../objc/execute/next_mapping.h"
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/NXConstStr.h>
#endif
@@ -80,3 +76,4 @@ int main(void) {
CHECK_IF(abc(a1, a2) * t.k == 35);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-1.mm b/gcc/testsuite/obj-c++.dg/try-catch-1.mm
index db9b02f2acf..a32bfeed6e5 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-1.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-1.mm
@@ -4,7 +4,7 @@
/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdio.h>
#include <setjmp.h>
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-11.mm b/gcc/testsuite/obj-c++.dg/try-catch-11.mm
index 1da1b47984a..49e2c0cef15 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-11.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-11.mm
@@ -1,10 +1,10 @@
/* Ensure that @try/@catch blocks do not mess with types of
local objects (other than their volatile bits). */
-/* { dg-options "-fobjc-exceptions -fnext-runtime" } */
+/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Proto1
- (int)meth1;
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-2.mm b/gcc/testsuite/obj-c++.dg/try-catch-2.mm
index d7b386a1bfa..f39c22c878f 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-2.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-2.mm
@@ -6,7 +6,7 @@
/* { dg-xfail-if "PR23616" { "*-*-*" } { "*" } { "" } } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdio.h>
#include <stdlib.h>
@@ -77,3 +77,4 @@ int main (void) {
test((Object *)-1);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-3.mm b/gcc/testsuite/obj-c++.dg/try-catch-3.mm
index 9341ce55bd2..7577c5bfa43 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-3.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-3.mm
@@ -5,7 +5,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
const char *foo(void)
{
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-7.mm b/gcc/testsuite/obj-c++.dg/try-catch-7.mm
index e322672aeea..b69c980b228 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-7.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-7.mm
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
int main (int argc, const char * argv[]) {
Object * pool = [Object new];
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-8.mm b/gcc/testsuite/obj-c++.dg/try-catch-8.mm
index b1e1cd191c6..b6666237025 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-8.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-8.mm
@@ -3,7 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived: Object
- (id) meth;
diff --git a/gcc/testsuite/obj-c++.dg/try-catch-9.mm b/gcc/testsuite/obj-c++.dg/try-catch-9.mm
index f79f52fbb9a..306c467a30f 100644
--- a/gcc/testsuite/obj-c++.dg/try-catch-9.mm
+++ b/gcc/testsuite/obj-c++.dg/try-catch-9.mm
@@ -7,7 +7,7 @@
/* { dg-prune-output ".*internal compiler error.*" } */
/* { dg-options "-fobjc-exceptions -O2" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
#include <stdio.h>
@@ -65,3 +65,4 @@ int main(void) {
foo(15, &gf1);
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm b/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm
index beed7270121..79db8765ead 100644
--- a/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm
+++ b/gcc/testsuite/obj-c++.dg/typedef-alias-1.mm
@@ -1,7 +1,7 @@
/* Typedefs of ObjC types should work without any bogus warnings. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
typedef Object MyObject;
diff --git a/gcc/testsuite/obj-c++.dg/va-meth-1.mm b/gcc/testsuite/obj-c++.dg/va-meth-1.mm
index 6d24b7f8d5b..c6aea14bcb6 100644
--- a/gcc/testsuite/obj-c++.dg/va-meth-1.mm
+++ b/gcc/testsuite/obj-c++.dg/va-meth-1.mm
@@ -1,8 +1,8 @@
/* Based on objc/execute/va_method.m, by Nicola Pero */
/* { dg-do run } */
-
-#include <objc/Object.h>
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdarg.h>
#include <stdlib.h>
@@ -72,3 +72,4 @@ int main (void)
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc-obj-c++-shared/Object1-implementation.h b/gcc/testsuite/objc-obj-c++-shared/Object1-implementation.h
new file mode 100755
index 00000000000..4c38383ac43
--- /dev/null
+++ b/gcc/testsuite/objc-obj-c++-shared/Object1-implementation.h
@@ -0,0 +1,62 @@
+/* This provides a minimal implementation of the Object root class.
+ * It is split from the definition so that it can be placed
+ * at the end of source files that require it. This reduces
+ * clutter in .s and other internmediate code while debugging.
+*/
+#ifndef _OBJC_OBJECT1_IMPLEMENTATION_H_
+#define _OBJC_OBJECT1_IMPLEMENTATION_H_
+#ifdef DO_NEXT_M64_OBJECT_IMPLEMENTATION
+@implementation Object
+
++ initialize {
+ return self;
+}
+- init {
+ return self;
+}
+
++ class {
+ return object_getClass(self);
+}
+
++ new {
+ return [[self alloc] init];
+}
+
++ free {
+ return nil;
+}
+
+- free {
+ return object_dispose(self);
+}
+
++ alloc {
+ return class_createInstance(self, 0);
+}
+
+
+- class {
+ return isa;
+}
+
+
+- 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;
+}
+
+@end
+#endif /* NEEDS_OBJECT_IMPLEMENTATION */
+#endif /* _OBJC_OBJECT1_IMPLEMENTATION_H_ */ \ No newline at end of file
diff --git a/gcc/testsuite/objc-obj-c++-shared/Object1.h b/gcc/testsuite/objc-obj-c++-shared/Object1.h
new file mode 100755
index 00000000000..3c7dd9aed72
--- /dev/null
+++ b/gcc/testsuite/objc-obj-c++-shared/Object1.h
@@ -0,0 +1 @@
+/* Object definition taken from <objc/Object.h> */ #ifndef _OBJC_OBJECT1_H_ #define _OBJC_OBJECT1_H_ #undef DO_NEXT_M64_OBJECT_IMPLEMENTATION #ifndef __NEXT_RUNTIME__ # include <objc/Object.h> #else # include "next-abi.h" # ifndef NEXT_OBJC_USE_NEW_INTERFACE /* We are on a next system, or version, that is happy to compile V0 ABI */ # include <objc/Object.h> # else # if (NEXT_OBJC_ABI_VERSION==0) /* We are on a system that has V0 ABI implementation in libobjc.dylib. * However, we need to use the new accessors and pretend that the * structures are opaque to avoid 'deprecated' warnings */ # include <objc/Object.h> # else /* We are on a system that includes a V2 ABI Object in libobjc.dylib. */ # ifdef __OBJC2__ /* ... and we have a V2 ABI compiler .. */ # include <objc/Object.h> # else /* We can't access the Object definition in libobjc.dylib because * we can't yet generate OBJC2 code. * * So we'll roll our own Object - purely for the sake of compile * checks - the code is unlikely to run... */ # ifndef _OBJC_OBJECT_H_ # define _OBJC_OBJECT_H_ #include <stdarg.h> #import <objc/objc-runtime.h> /* This is a cut-down Object with only the methods currently required by the testsuite declared. For those executables that require an implementation (to link) this can be provided in a given test by placing: #include "path/to/objc-c++shared/Object1-implementation.h" at the end of the source for the test. */ @interface Object { Class isa; /* A pointer to the instance's class structure */ } + initialize; - init; + new; + free; - free; + alloc; //- copy; //+ allocFromZone:(void *)zone; //- copyFromZone:(void *)zone; //- (void *)zone; + class; //+ superclass; //+ (const char *) name; - class; - superclass; - (const char *) name; //- self; //- (unsigned int) hash; //-(BOOL) isEqual:anObject; /* 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 #define DO_NEXT_M64_OBJECT_IMPLEMENTATION # endif /* _OBJC_OBJECT_H_ */ # endif /* __OBJC2__ */ # endif /* ABI=0 */ # endif /* NEXT_OBJC_USE_NEW_INTERFACE */ # endif /* __NEXT_RUNTIME__ */ #endif /* _OBJC_OBJECT1_H_ */ \ No newline at end of file
diff --git a/gcc/testsuite/objc-obj-c++-shared/Protocol1.h b/gcc/testsuite/objc-obj-c++-shared/Protocol1.h
new file mode 100755
index 00000000000..d375ac0d530
--- /dev/null
+++ b/gcc/testsuite/objc-obj-c++-shared/Protocol1.h
@@ -0,0 +1,52 @@
+/*
+ * 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_ */
diff --git a/gcc/testsuite/objc-obj-c++-shared/next-abi.h b/gcc/testsuite/objc-obj-c++-shared/next-abi.h
new file mode 100755
index 00000000000..21a49d341e1
--- /dev/null
+++ b/gcc/testsuite/objc-obj-c++-shared/next-abi.h
@@ -0,0 +1,42 @@
+
+#ifndef _OBJC_NEXT_ABI_H_
+#define _OBJC_NEXT_ABI_H_
+/* Produce a define that allows us to figure out what facilities are
+ available for this gcc and OS combination.
+*/
+
+/* By default we do nothing - therefore ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ * is reliable for detecting
+ * (a) versions of the compiler that are transitional to the new next ABI
+ * (b) versions of the target that require the new ABI.
+ *
+ * This applies for versions of OSX >= 10.5 (darwin9).
+ *
+ * A compiler capable of producing ObjC V2 ABI should define __OBJC2__
+*/
+
+#undef NEXT_OBJC_ABI_VERSION
+#undef NEXT_OBJC_USE_NEW_INTERFACE
+
+#ifdef __NEXT_RUNTIME__
+# if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 || __OBJC2__)
+ /* We have to use an updated interface for 32bit NeXT to avoid
+ * 'deprecated' warnings.
+ * For 64bit NeXT the ABI is different (and the interfaces 'deprecated'
+ * for 32bit have been removed).
+ */
+# define NEXT_OBJC_USE_NEW_INTERFACE 1
+# if __OBJC2__ || __LP64__
+ /* We have OBJC v2 ABI compiler,
+ (or, at least, the available NeXT runtime requires one) */
+# define NEXT_OBJC_ABI_VERSION 2
+# else
+ /* We leave it open to define ABI 1 if and when we implement those
+ * extensions.
+ */
+# define NEXT_OBJC_ABI_VERSION 0
+# endif
+# endif
+#endif
+
+#endif /* _OBJC_NEXT_ABI_H_ */
diff --git a/gcc/testsuite/objc-obj-c++-shared/next-mapping.h b/gcc/testsuite/objc-obj-c++-shared/next-mapping.h
new file mode 100755
index 00000000000..c59993a9ec4
--- /dev/null
+++ b/gcc/testsuite/objc-obj-c++-shared/next-mapping.h
@@ -0,0 +1,976 @@
+/* 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> */
+/* Darwin 64bit/OBJC2 modifications Iain Sandoe */
+
+#ifdef __NEXT_RUNTIME__
+/* Includes next-abi.h to set NEXT_OBJC_USE_NEW_INTERFACE etc.*/
+#ifndef _OBJC_OBJECT1_H_
+#include "Object1.h"
+#endif
+#include <objc/objc-class.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 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)
+
+#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
+# 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
+
+#define objc_lookup_class(N) objc_lookUpClass(N)
+
+/* 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;
+}
+
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+typedef void *PMETH;
+#else
+typedef struct objc_method *PMETH;
+#endif
+
+/*
+ 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 (PMETH mth)
+{
+ int i = 0;
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ const char *type = method_getTypeEncoding((Method)mth);
+#else
+ const char *type = mth->method_types;
+#endif
+ 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 (PMETH mth)
+{
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ const char *type = objc_skip_typespec (method_getTypeEncoding((Method)mth));
+#else
+ const char *type = objc_skip_typespec (mth->method_types);
+#endif
+ 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 (PMETH m,
+ arglist_t argframe,
+ const char **type)
+{
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ *type = method_getTypeEncoding((Method)m);
+#else
+ *type = m->method_types;
+#endif
+
+ 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 (PMETH m,
+ arglist_t argframe, int arg,
+ const char **type)
+{
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ const char *t = objc_skip_argspec (method_getTypeEncoding((Method)m));
+#else
+ const char *t = objc_skip_argspec (m->method_types);
+#endif
+
+ 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 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.
+*/
+
+/* This definition cut out of <objc/Object.h> with the OBJC2 deprecation
+ messages removed.
+*/
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class {
+ Class isa;
+#if NEXT_OBJC_ABI_VERSION < 2
+ Class super_class ;
+ const char *name ;
+ long version ;
+ long info ;
+ long instance_size ;
+ struct anon *ivars ; /* objc_ivar_list */
+ struct anon1 **methodLists ; /* objc_method_list */
+ struct objc_cache *cache ;
+ struct objc_protocol_list *protocols ;
+#endif
+} _NSConstantStringClassReference ;
+#else
+struct objc_class _NSConstantStringClassReference ;
+#endif
+
+@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__ */
diff --git a/gcc/testsuite/objc.dg/bitfield-1.m b/gcc/testsuite/objc.dg/bitfield-1.m
index 8791eb33e14..664a0e8d48f 100644
--- a/gcc/testsuite/objc.dg/bitfield-1.m
+++ b/gcc/testsuite/objc.dg/bitfield-1.m
@@ -2,9 +2,10 @@
being "promoted" to ints). */
/* 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/objc.h>
-#include <objc/Object.h>
extern void abort(void);
@@ -78,3 +79,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/bitfield-2.m b/gcc/testsuite/objc.dg/bitfield-2.m
index 6875c6c4d87..7e8147a7008 100644
--- a/gcc/testsuite/objc.dg/bitfield-2.m
+++ b/gcc/testsuite/objc.dg/bitfield-2.m
@@ -1,8 +1,9 @@
/* Check if bitfield ivars are correctly @encode'd when
the NeXT runtime is used. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -fsigned-char" } */
+/* { dg-options "-fsigned-char" } */
/* { dg-do run { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
typedef struct objc_object { struct objc_class *class_pointer; } *id;
diff --git a/gcc/testsuite/objc.dg/bitfield-3.m b/gcc/testsuite/objc.dg/bitfield-3.m
index f427a3018ad..5bea0fca96f 100644
--- a/gcc/testsuite/objc.dg/bitfield-3.m
+++ b/gcc/testsuite/objc.dg/bitfield-3.m
@@ -1,11 +1,10 @@
/* Check if the @defs() construct preserves the correct
layout of bitfields. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc -Wpadded" } */
+/* { dg-options "-Wpadded" } */
/* { dg-do run } */
-#include <objc/objc.h>
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern void abort(void);
extern int strcmp(const char *str1, const char *str2);
diff --git a/gcc/testsuite/objc.dg/bitfield-5.m b/gcc/testsuite/objc.dg/bitfield-5.m
index ddd3b03a309..1cc1cad9bf1 100644
--- a/gcc/testsuite/objc.dg/bitfield-5.m
+++ b/gcc/testsuite/objc.dg/bitfield-5.m
@@ -7,8 +7,8 @@
/* { dg-options "-Wpadded" } */
/* { dg-do run } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
diff --git a/gcc/testsuite/objc.dg/call-super-1.m b/gcc/testsuite/objc.dg/call-super-1.m
index 19e0d4900dd..37b705ea193 100644
--- a/gcc/testsuite/objc.dg/call-super-1.m
+++ b/gcc/testsuite/objc.dg/call-super-1.m
@@ -1,11 +1,11 @@
/* Check if objc_super stack variables are created correctly (and
not clobbered by other values). */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-std=c99 -lobjc" } */
+/* { dg-options "-std=c99" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/objc.h>
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern void abort(void);
@@ -74,3 +74,5 @@ int main(void) {
[v free];
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/call-super-2.m b/gcc/testsuite/objc.dg/call-super-2.m
index be8a89fdc7b..190c407f796 100644
--- a/gcc/testsuite/objc.dg/call-super-2.m
+++ b/gcc/testsuite/objc.dg/call-super-2.m
@@ -1,17 +1,10 @@
-/* Check if casting 'self' or 'super' affects message lookup in the
- correct way. */
+/* Check if casting 'self' or 'super' affects message lookup in the correct way. */
/* 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 <stddef.h>
-#include <objc/objc.h>
-#include <objc/Object.h>
-
-#ifdef __NEXT_RUNTIME__
-#define OBJC_GETCLASS objc_getClass
-#else
-#define OBJC_GETCLASS objc_get_class
-#endif
@protocol Func
+ (int) class_func0;
@@ -70,11 +63,11 @@
}
+ (int) class_func6
{
- return (size_t)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+ return (size_t)[objc_get_class("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
}
+ (int) class_func7
{
- return [OBJC_GETCLASS("Derived") class_func1];
+ return [objc_get_class("Derived") class_func1];
}
- (int) instance_func1
{
@@ -100,11 +93,11 @@
}
- (int) instance_func6
{
- return (size_t)[OBJC_GETCLASS("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
+ return (size_t)[objc_get_class("Object") class_func1]; /* { dg-warning ".Object. may not respond to .\\+class_func1." } */
}
- (int) instance_func7
{
- return [OBJC_GETCLASS("Derived") class_func1];
+ return [objc_get_class("Derived") class_func1];
}
@end
@@ -129,7 +122,7 @@
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 *-*-* } 131 } */
+ /* { dg-warning ".\\-categ_instance_func2. not found in protocol" "" { target *-*-* } 124 } */
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." } */
diff --git a/gcc/testsuite/objc.dg/call-super-3.m b/gcc/testsuite/objc.dg/call-super-3.m
index 05b6233ff5f..0b950294b8f 100644
--- a/gcc/testsuite/objc.dg/call-super-3.m
+++ b/gcc/testsuite/objc.dg/call-super-3.m
@@ -1,10 +1,11 @@
/* Check if sending messages to super does not interfere with sending messages
to classes. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
+/* { dg-options "" } */
/* { dg-do run } */
-/* { dg-options "-lobjc" } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -52,3 +53,5 @@ int main(void) {
CHECK_IF([derived instance_func1] == 234 + 345);
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/category-1.m b/gcc/testsuite/objc.dg/category-1.m
index 1d29e374aea..e195a46bf08 100644
--- a/gcc/testsuite/objc.dg/category-1.m
+++ b/gcc/testsuite/objc.dg/category-1.m
@@ -1,9 +1,12 @@
/* Test class methods inside categories. */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+
/* { dg-do run } */
+/* { dg-xfail-run-if "need OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+extern int strcmp(const char *s1, const char *s2);
+extern void abort(void);
#ifdef __NEXT_RUNTIME__
#define SUPERCLASS superclass
@@ -11,8 +14,6 @@
#define SUPERCLASS superClass
#endif
-extern int strcmp(const char *s1, const char *s2);
-extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@interface MyObject: Object
@@ -36,8 +37,15 @@ 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
+
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/comp-types-10.m b/gcc/testsuite/objc.dg/comp-types-10.m
index c28a2a55a9e..3d85983991e 100644
--- a/gcc/testsuite/objc.dg/comp-types-10.m
+++ b/gcc/testsuite/objc.dg/comp-types-10.m
@@ -1,6 +1,6 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Foo
- (id)meth1;
diff --git a/gcc/testsuite/objc.dg/comp-types-11.m b/gcc/testsuite/objc.dg/comp-types-11.m
index b041759ca65..959cc049a32 100644
--- a/gcc/testsuite/objc.dg/comp-types-11.m
+++ b/gcc/testsuite/objc.dg/comp-types-11.m
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived: Object
@end
diff --git a/gcc/testsuite/objc.dg/comp-types-8.m b/gcc/testsuite/objc.dg/comp-types-8.m
index 7f9c64a6f2e..bb7b136fb69 100644
--- a/gcc/testsuite/objc.dg/comp-types-8.m
+++ b/gcc/testsuite/objc.dg/comp-types-8.m
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* Another gimplifier ICE... */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface MyView: Object {
int _frame;
diff --git a/gcc/testsuite/objc.dg/const-str-1.m b/gcc/testsuite/objc.dg/const-str-1.m
index e4cac2e57ec..156a92e1194 100644
--- a/gcc/testsuite/objc.dg/const-str-1.m
+++ b/gcc/testsuite/objc.dg/const-str-1.m
@@ -1,6 +1,5 @@
/* Test errors for constant strings. */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
#ifdef __cplusplus
extern void baz(...);
diff --git a/gcc/testsuite/objc.dg/const-str-10.m b/gcc/testsuite/objc.dg/const-str-10.m
index 4efe044c13e..7f59a63f93b 100644
--- a/gcc/testsuite/objc.dg/const-str-10.m
+++ b/gcc/testsuite/objc.dg/const-str-10.m
@@ -2,10 +2,10 @@
constant string classes get derived. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime" } */
-/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-do compile { target { *-*-darwin* } } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface NSString: Object
@end
@@ -20,9 +20,14 @@
@interface NSConstantString : NSSimpleCString
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
extern struct objc_class _NSConstantStringClassReference;
+#else
+extern Class _NSConstantStringClassReference;
+#endif
const NSConstantString *appKey = @"MyApp";
/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } */
+/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */
+/* { dg-final { scan-assembler ".quad\t__NSConstantStringClassReference\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */
diff --git a/gcc/testsuite/objc.dg/const-str-11.m b/gcc/testsuite/objc.dg/const-str-11.m
index 3b7ec7ad51f..ae3c3303f6f 100644
--- a/gcc/testsuite/objc.dg/const-str-11.m
+++ b/gcc/testsuite/objc.dg/const-str-11.m
@@ -2,10 +2,11 @@
constant string classes get derived. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime -fconstant-string-class=XStr" } */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+/* { dg-options "-fconstant-string-class=XStr" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface XString: Object {
@protected
@@ -19,9 +20,14 @@
}
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
extern struct objc_class _XStrClassReference;
+#else
+extern Class _XStrClassReference;
+#endif
const XStr *appKey = @"MyApp";
/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler ".long\t__XStrClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } */
+/* { dg-final { scan-assembler ".long\t__XStrClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */
+/* { dg-final { scan-assembler ".quad\t__XStrClassReference\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */
diff --git a/gcc/testsuite/objc.dg/const-str-12.m b/gcc/testsuite/objc.dg/const-str-12.m
index 95a6bef3241..93059018647 100644
--- a/gcc/testsuite/objc.dg/const-str-12.m
+++ b/gcc/testsuite/objc.dg/const-str-12.m
@@ -1,7 +1,8 @@
-/* { dg-options "-Wall -funit-at-a-time -fgnu-runtime" } */
+/* { dg-options "-Wall -funit-at-a-time" } */
/* { dg-do compile } */
/* PR objc/27438, make sure that the decl produced by the front-end
does not cause a warning to be produced. */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
@interface NXConstantString
{
diff --git a/gcc/testsuite/objc.dg/const-str-3.m b/gcc/testsuite/objc.dg/const-str-3.m
index 7d4f80863d2..0d719e84407 100644
--- a/gcc/testsuite/objc.dg/const-str-3.m
+++ b/gcc/testsuite/objc.dg/const-str-3.m
@@ -1,15 +1,14 @@
-/* Test the -fconstant-string-class=Foo option under the NeXT
- runtime. */
+/* Test the -fconstant-string-class=Foo option under the NeXT runtime. */
/* Developed by Markus Hitter <mah@jump-ing.de>. */
+/* { dg-do run } */
+/* { dg-options "-fconstant-string-class=Foo" } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
-
+#import "../objc-obj-c++-shared/Object1.h"
+#import "../objc-obj-c++-shared/next-mapping.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
-#include <objc/objc.h>
-#include <objc/Object.h>
@interface Foo: Object {
char *cString;
@@ -18,7 +17,11 @@
- (char *)customString;
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+struct fudge_objc_class _FooClassReference;
+#else
struct objc_class _FooClassReference;
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -38,7 +41,7 @@ int main () {
constant string object. Can't be moved to +initialize since _that_
is already a message. */
- memcpy(&_FooClassReference, objc_getClass("Foo"), sizeof(_FooClassReference));
+ memcpy(&_FooClassReference, objc_get_class("Foo"), sizeof(_FooClassReference));
if (strcmp ([string customString], "bla")) {
abort ();
}
@@ -46,3 +49,5 @@ int main () {
printf([@"This is a working constant string object\n" customString]);
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/const-str-4.m b/gcc/testsuite/objc.dg/const-str-4.m
index c178bfc4a0c..9582a32554f 100644
--- a/gcc/testsuite/objc.dg/const-str-4.m
+++ b/gcc/testsuite/objc.dg/const-str-4.m
@@ -1,7 +1,7 @@
/* Ensure that the preprocessor handles ObjC string constants gracefully. */
/* Author: Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime -fconstant-string-class=MyString -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
+/* { dg-options "-fconstant-string-class=MyString " } */
+/* { dg-do run } */
extern void abort(void);
diff --git a/gcc/testsuite/objc.dg/const-str-7.m b/gcc/testsuite/objc.dg/const-str-7.m
index 3691579381d..223789aed7d 100644
--- a/gcc/testsuite/objc.dg/const-str-7.m
+++ b/gcc/testsuite/objc.dg/const-str-7.m
@@ -1,18 +1,12 @@
-/* Test to make sure that the const objc strings are the same across
- scopes. */
+/* Test to make sure that the const objc strings are the same across scopes. */
/* Developed by Andrew Pinski <pinskia@physics.uc.edu> */
+/* { dg-options "-fconstant-string-class=Foo " } */
+/* { dg-do run } */
-
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
-
-
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
-#include <objc/objc.h>
-#include <objc/Object.h>
-
@interface Foo: Object {
char *cString;
@@ -21,8 +15,11 @@
- (char *)customString;
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
struct objc_class _FooClassReference;
-
+#else
+Class _FooClassReference;
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -30,13 +27,11 @@ struct objc_class _FooClassReference;
}
@end
-
int main () {
Foo *string = @"bla";
{
Foo *string2 = @"bla";
-
if(string != string2)
abort();
printf("Strings are being uniqued properly\n");
@@ -44,3 +39,4 @@ int main () {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/const-str-8.m b/gcc/testsuite/objc.dg/const-str-8.m
index 60abcbd52b1..a7da0e10276 100644
--- a/gcc/testsuite/objc.dg/const-str-8.m
+++ b/gcc/testsuite/objc.dg/const-str-8.m
@@ -1,12 +1,10 @@
/* Test for assigning compile-time constant-string objects to static variables. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
+/* { dg-options "-fconstant-string-class=Foo" } */
+/* { dg-do run } */
-/* { dg-options "-fnext-runtime -fconstant-string-class=Foo -lobjc" } */
-/* { dg-do run { target *-*-darwin* } } */
-
-
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
-#include <objc/Object.h>
@interface Foo: Object {
char *cString;
@@ -14,7 +12,11 @@
}
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
struct objc_class _FooClassReference;
+#else
+Class _FooClassReference;
+#endif
@implementation Foo : Object
- (char *)customString {
@@ -37,3 +39,5 @@ int main () {
PrefsSynchronize();
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/const-str-9.m b/gcc/testsuite/objc.dg/const-str-9.m
index 033337452d4..ddf3b02f03c 100644
--- a/gcc/testsuite/objc.dg/const-str-9.m
+++ b/gcc/testsuite/objc.dg/const-str-9.m
@@ -1,10 +1,10 @@
/* Test if ObjC constant strings get placed in the correct section. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-fnext-runtime" } */
-/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface NSConstantString: Object {
char *cString;
@@ -12,9 +12,14 @@
}
@end
+#ifndef NEXT_OBJC_USE_NEW_INTERFACE
extern struct objc_class _NSConstantStringClassReference;
+#else
+Class _NSConstantStringClassReference;
+#endif
static const NSConstantString *appKey = @"MyApp";
/* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } */
+/* { dg-final { scan-assembler ".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" { target { *-*-darwin* && { ! lp64 } } } } } */
+/* { dg-final { scan-assembler ".quad\t__NSConstantStringClassReference\n\t.quad\t.*\n\t.long\t5\n\t.space" { target { *-*-darwin* && { lp64 } } } } } */
diff --git a/gcc/testsuite/objc.dg/defs.m b/gcc/testsuite/objc.dg/defs.m
index e8d8c2c4527..2ffde0035db 100644
--- a/gcc/testsuite/objc.dg/defs.m
+++ b/gcc/testsuite/objc.dg/defs.m
@@ -1,11 +1,12 @@
/* Check if the @defs() construct preserves the correct
offsets of ivars. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/objc.h>
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+//#include <objc/objc.h>
extern void abort(void);
@@ -65,3 +66,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/desig-init-1.m b/gcc/testsuite/objc.dg/desig-init-1.m
index 6ef710b51ff..a07e72be14a 100644
--- a/gcc/testsuite/objc.dg/desig-init-1.m
+++ b/gcc/testsuite/objc.dg/desig-init-1.m
@@ -1,13 +1,13 @@
-/* Test Objective-C capability for handling GNU/C99 designated
- initializers, and distinguishing them from message sends. */
-/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
+/* Test Objective-C capability for handling GNU/C99 designated initializers, and distinguishing them
+ from message sends. Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-options "-std=gnu99" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdio.h>
#include <stdlib.h>
-#include <objc/objc.h>
-#include <objc/Object.h>
@interface Cls : Object
+ (int) meth1;
@@ -47,3 +47,5 @@ int main(void) {
/* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 0 } */
/* { 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"
diff --git a/gcc/testsuite/objc.dg/dg.exp b/gcc/testsuite/objc.dg/dg.exp
index b17b68b6a51..4c5730e66c0 100644
--- a/gcc/testsuite/objc.dg/dg.exp
+++ b/gcc/testsuite/objc.dg/dg.exp
@@ -29,7 +29,13 @@ dg-init
# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[m\]]] \
- "" $DEFAULT_CFLAGS
+ "-fgnu-runtime" $DEFAULT_CFLAGS
+
+# darwin targets can also run code with the NeXT runtime.
+if [istarget "*-*-darwin*" ] {
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[m\]]] \
+ "-fnext-runtime" $DEFAULT_CFLAGS
+}
# All done.
dg-finish
diff --git a/gcc/testsuite/objc.dg/encode-1.m b/gcc/testsuite/objc.dg/encode-1.m
index 868c3254753..50e9919f941 100644
--- a/gcc/testsuite/objc.dg/encode-1.m
+++ b/gcc/testsuite/objc.dg/encode-1.m
@@ -3,9 +3,8 @@
should be encoded as '*'). This is somewhat tricky wrt the NeXT runtime,
where we have 'typedef char BOOL'. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -lobjc" } */
/* { dg-do run } */
-
+/* { dg-options "-fnext-runtime" } */
#include <string.h>
#include <stdlib.h>
#include <objc/objc.h>
diff --git a/gcc/testsuite/objc.dg/encode-2.m b/gcc/testsuite/objc.dg/encode-2.m
index b9003696c02..ea0ff6a7dae 100644
--- a/gcc/testsuite/objc.dg/encode-2.m
+++ b/gcc/testsuite/objc.dg/encode-2.m
@@ -15,19 +15,17 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/objc.h>
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/next-mapping.h"
#ifdef __NEXT_RUNTIME__
#define METHOD Method
-#define OBJC_GETCLASS objc_getClass
-#define CLASS_GETINSTANCEMETHOD class_getInstanceMethod
#else
#include <objc/objc-api.h>
#define METHOD Method_t
-#define OBJC_GETCLASS objc_get_class
-#define CLASS_GETINSTANCEMETHOD class_get_instance_method
+#define method_get_types(M) (M)->method_types
#endif
extern int sscanf(const char *str, const char *format, ...);
@@ -76,27 +74,31 @@ unsigned offs1, offs2, offs3, offs4, offs5, offs6, offs7;
int main(void) {
Foo *foo = [[Foo alloc] init];
- Class fooClass = OBJC_GETCLASS("Foo");
+ Class fooClass = objc_get_class("Foo");
METHOD meth;
const char *string;
- meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(setRect:withInt:));
+ meth = class_get_instance_method(fooClass, @selector(setRect:withInt:));
offs2 = 9999;
- sscanf(meth->method_types, "@%u@%u:%u{_XXRect={?=ff}{?=ff}}%ui%u", &offs1, &offs2, &offs3,
+
+ sscanf(method_get_types(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_GETINSTANCEMETHOD(fooClass, @selector(char:float:double:long:));
+ meth = class_get_instance_method(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(meth->method_types, string, &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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"
diff --git a/gcc/testsuite/objc.dg/encode-3.m b/gcc/testsuite/objc.dg/encode-3.m
index 20a85b43bdf..63a92e19cd0 100644
--- a/gcc/testsuite/objc.dg/encode-3.m
+++ b/gcc/testsuite/objc.dg/encode-3.m
@@ -2,7 +2,10 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-#include <objc/Protocol.h>
+#include <stdlib.h>
+#include "../objc-obj-c++-shared/Protocol1.h"
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+
#ifdef __cplusplus
#define ProtoBool bool
#else
diff --git a/gcc/testsuite/objc.dg/encode-4.m b/gcc/testsuite/objc.dg/encode-4.m
index a754c6955cb..d74c0ba1c7f 100644
--- a/gcc/testsuite/objc.dg/encode-4.m
+++ b/gcc/testsuite/objc.dg/encode-4.m
@@ -1,19 +1,20 @@
/* Encoding tests for ObjC class layouts. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/next-mapping.h"
#ifdef __NEXT_RUNTIME__
#include <objc/objc-class.h>
-#define OBJC_GETCLASS objc_getClass
#else
#include <objc/objc-api.h>
-#define OBJC_GETCLASS objc_get_class
#endif
extern void abort(void);
extern int strcmp(const char *s1, const char *s2);
+
#define CHECK_IF(expr) if(!(expr)) abort()
@class Int1, Int2;
@@ -49,25 +50,44 @@ struct Nested {
@implementation Int2
@end
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+Ivar *ivar;
+#else
struct objc_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
CHECK_IF(!strcmp(ivar->ivar_name, name));
CHECK_IF(!strcmp(ivar->ivar_type, type));
+#endif
ivar++;
}
int main(void) {
- ivar = ((Class)OBJC_GETCLASS("Int1"))->ivars->ivar_list;
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ ivar = class_copyIvarList ((Class)objc_get_class("Int1"), NULL);
+#else
+ ivar = ((Class)objc_get_class("Int1"))->ivars->ivar_list;
+#endif
check_ivar("a", "c");
check_ivar("b", "c");
check_ivar("int2", "@\"Int2\"");
check_ivar("nested",
"{Nested=\"a\"f\"b\"f\"next\"@\"Int1\"\"innermost\"{Innermost=\"a\"C\"b\"C\"encl\"^{Nested}}}");
- ivar = ((Class)OBJC_GETCLASS("Int2"))->ivars->ivar_list;
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ ivar = class_copyIvarList ((Class)objc_get_class("Int2"), NULL);
+#else
+ ivar = ((Class)objc_get_class("Int2"))->ivars->ivar_list;
+#endif
check_ivar("innermost", "^{Innermost=CC^{Nested}}");
check_ivar("base", "@\"Int1\"");
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/encode-5.m b/gcc/testsuite/objc.dg/encode-5.m
index 35b6148872e..523c7ce02e8 100644
--- a/gcc/testsuite/objc.dg/encode-5.m
+++ b/gcc/testsuite/objc.dg/encode-5.m
@@ -9,20 +9,18 @@
/* Contributed by Alexander Malmberg <alexander@malmberg.org> */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+#include "../objc-obj-c++-shared/next-mapping.h"
#include <stdlib.h>
#include <stdio.h>
#define CHECK_IF(expr) if(!(expr)) abort()
#ifdef __NEXT_RUNTIME__
#define METHOD Method
-#define OBJC_GETCLASS objc_getClass
-#define CLASS_GETINSTANCEMETHOD class_getInstanceMethod
#else
#include <objc/objc-api.h>
#define METHOD Method_t
-#define OBJC_GETCLASS objc_get_class
-#define CLASS_GETINSTANCEMETHOD class_get_instance_method
+#define method_get_types(M) (M)->method_types
#endif
@interface Test : Object
@@ -49,7 +47,7 @@ int offs1, offs2, offs3, offs4, offs5, offs6;
int main(int argc, char **argv)
{
- Class testClass = OBJC_GETCLASS("Test");
+ Class testClass = objc_get_class("Test");
METHOD meth;
cc[0] = [Test new];
@@ -60,16 +58,16 @@ int main(int argc, char **argv)
[*c test2: bb with: bb + 5];
CHECK_IF (bb[3] == 5);
- meth = CLASS_GETINSTANCEMETHOD(testClass, @selector(test2:with:));
+ meth = class_get_instance_method(testClass, @selector(test2:with:));
offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
- sscanf(meth->method_types, "v%d@%d:%d[%di]%d^i%d", &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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_GETINSTANCEMETHOD(testClass, @selector(test3:));
+ meth = class_get_instance_method(testClass, @selector(test3:));
offs1 = offs2 = offs3 = offs4 = offs5 = offs6 = -1;
- sscanf(meth->method_types, "v%d@%d:%d[%d[%d{Test=#f}]]%d", &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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);
diff --git a/gcc/testsuite/objc.dg/encode-7.m b/gcc/testsuite/objc.dg/encode-7.m
index 0b49a415c29..1fe0b242425 100644
--- a/gcc/testsuite/objc.dg/encode-7.m
+++ b/gcc/testsuite/objc.dg/encode-7.m
@@ -1,5 +1,5 @@
-/* { dg-options "-fgnu-runtime" } */
/* { dg-do run } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/encoding.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/objc.dg/encode-8.m b/gcc/testsuite/objc.dg/encode-8.m
index 947a92974a2..a992e31505f 100644
--- a/gcc/testsuite/objc.dg/encode-8.m
+++ b/gcc/testsuite/objc.dg/encode-8.m
@@ -1,5 +1,5 @@
-/* { dg-options "-fgnu-runtime" } */
/* { dg-do run } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/encoding.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/objc.dg/encode-9.m b/gcc/testsuite/objc.dg/encode-9.m
index 3b005756f0f..1ff2a6b0e48 100644
--- a/gcc/testsuite/objc.dg/encode-9.m
+++ b/gcc/testsuite/objc.dg/encode-9.m
@@ -1,5 +1,4 @@
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime " } */
/* There was an ICE due to diving by zero in the objc front-end. */
diff --git a/gcc/testsuite/objc.dg/fix-and-continue-1.m b/gcc/testsuite/objc.dg/fix-and-continue-1.m
index 49250c2d84f..1560beac463 100644
--- a/gcc/testsuite/objc.dg/fix-and-continue-1.m
+++ b/gcc/testsuite/objc.dg/fix-and-continue-1.m
@@ -4,8 +4,9 @@
/* { dg-do run { target *-*-darwin* } } */
/* { dg-options "-mfix-and-continue" } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdlib.h>
@class MyTarget, MySet;
@@ -88,3 +89,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/fix-and-continue-2.m b/gcc/testsuite/objc.dg/fix-and-continue-2.m
index 33cb8467dcd..fdfbcbd0c18 100644
--- a/gcc/testsuite/objc.dg/fix-and-continue-2.m
+++ b/gcc/testsuite/objc.dg/fix-and-continue-2.m
@@ -6,7 +6,7 @@
/* { dg-do assemble { target *-*-darwin* } } */
/* { dg-options "-mfix-and-continue" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo: Object
+ (Object *)indexableFileTypes;
diff --git a/gcc/testsuite/objc.dg/func-ptr-1.m b/gcc/testsuite/objc.dg/func-ptr-1.m
index 015d3ac292d..4bdb344a3b6 100644
--- a/gcc/testsuite/objc.dg/func-ptr-1.m
+++ b/gcc/testsuite/objc.dg/func-ptr-1.m
@@ -1,7 +1,8 @@
/* Test for handling of function pointer ivars */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern int strcmp(const char *, const char *);
extern void abort(void);
@@ -46,3 +47,5 @@ int main ()
return(0);
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
+
diff --git a/gcc/testsuite/objc.dg/func-ptr-2.m b/gcc/testsuite/objc.dg/func-ptr-2.m
index 625ce9fca92..e68c71b70d4 100644
--- a/gcc/testsuite/objc.dg/func-ptr-2.m
+++ b/gcc/testsuite/objc.dg/func-ptr-2.m
@@ -2,9 +2,11 @@
into pointers. */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
#include <stdlib.h>
+/* provide an Object class for NeXT runtimes 10.5 and above */
+#include "../objc-obj-c++-shared/Object1.h"
@interface Func: Object
+ (int) processNumber:(int)a and:(int)b usingFunction:(int(int,int))func;
@@ -35,3 +37,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/gnu-runtime-1.m b/gcc/testsuite/objc.dg/gnu-runtime-1.m
index dab921554f1..c7e3bcc3a22 100644
--- a/gcc/testsuite/objc.dg/gnu-runtime-1.m
+++ b/gcc/testsuite/objc.dg/gnu-runtime-1.m
@@ -2,7 +2,7 @@
the system runtime used). */
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
diff --git a/gcc/testsuite/objc.dg/gnu-runtime-2.m b/gcc/testsuite/objc.dg/gnu-runtime-2.m
index 2ead2883537..9903d29727c 100644
--- a/gcc/testsuite/objc.dg/gnu-runtime-2.m
+++ b/gcc/testsuite/objc.dg/gnu-runtime-2.m
@@ -2,7 +2,7 @@
regardless of runtime used on target system. */
/* { dg-do compile } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
#include <string.h>
diff --git a/gcc/testsuite/objc.dg/gnu-runtime-3.m b/gcc/testsuite/objc.dg/gnu-runtime-3.m
index 6fc113dbd93..e0c8cc4164d 100644
--- a/gcc/testsuite/objc.dg/gnu-runtime-3.m
+++ b/gcc/testsuite/objc.dg/gnu-runtime-3.m
@@ -1,7 +1,7 @@
/* Sanity check for GNU-runtime regardless of runtime used on target system. */
/* { dg-do run } */
-/* { dg-options "-fgnu-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/Object.h>
#include <string.h>
diff --git a/gcc/testsuite/objc.dg/image-info.m b/gcc/testsuite/objc.dg/image-info.m
index 3ffe81438d4..0a740fa31f1 100644
--- a/gcc/testsuite/objc.dg/image-info.m
+++ b/gcc/testsuite/objc.dg/image-info.m
@@ -2,15 +2,12 @@
__OBJC,__image_info section to be emitted. This is only
usable on MacOS X 10.3 and later. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-freplace-objc-classes" } */
-/* { dg-do compile { target *-*-darwin* } } */
-#ifndef __NEXT_RUNTIME__
-#error Feature not currently supported by the GNU runtime
-#endif
+/* { dg-do compile { target { *-*-darwin* } } } */
+/* { dg-options "-freplace-objc-classes" } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
extern void abort(void);
diff --git a/gcc/testsuite/objc.dg/isa-field-1.m b/gcc/testsuite/objc.dg/isa-field-1.m
index 6398b608d82..377280f0d99 100644
--- a/gcc/testsuite/objc.dg/isa-field-1.m
+++ b/gcc/testsuite/objc.dg/isa-field-1.m
@@ -1,7 +1,7 @@
/* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */
-/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Object (Test)
- (Class) test1: (id)object;
@@ -14,11 +14,19 @@
@implementation Object (Test)
Class test1(id object) {
+#ifdef __NEXT_RUNTIME__
Class cls = object->isa;
+#else
+ Class cls = object->class_pointer;
+#endif
return cls;
}
- (Class) test1: (id)object {
+#ifdef __NEXT_RUNTIME__
Class cls = object->isa;
+#else
+ Class cls = object->class_pointer;
+#endif
return cls;
}
@@ -27,17 +35,29 @@ Class test1(id object) {
@implementation Derived
Class test2(id object) {
+#ifdef __NEXT_RUNTIME__
Class cls = object->isa;
+#else
+ Class cls = object->class_pointer;
+#endif
return cls;
}
- (Class) test2: (id)object {
+#ifdef __NEXT_RUNTIME__
Class cls = object->isa;
+#else
+ Class cls = object->class_pointer;
+#endif
return cls;
}
@end
Class test3(id object) {
+#ifdef __NEXT_RUNTIME__
Class cls = object->isa;
+#else
+ Class cls = object->class_pointer;
+#endif
return cls;
}
diff --git a/gcc/testsuite/objc.dg/layout-1.m b/gcc/testsuite/objc.dg/layout-1.m
index 6fb114217ab..f702eb2badc 100644
--- a/gcc/testsuite/objc.dg/layout-1.m
+++ b/gcc/testsuite/objc.dg/layout-1.m
@@ -3,7 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-Wpadded -Wpacked" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived1: Object
{ }
diff --git a/gcc/testsuite/objc.dg/local-decl-2.m b/gcc/testsuite/objc.dg/local-decl-2.m
index 41c4206b41d..b1af6d27bc2 100644
--- a/gcc/testsuite/objc.dg/local-decl-2.m
+++ b/gcc/testsuite/objc.dg/local-decl-2.m
@@ -3,7 +3,7 @@
/* Author: Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Sprite: Object {
int sprite, spree;
diff --git a/gcc/testsuite/objc.dg/lookup-1.m b/gcc/testsuite/objc.dg/lookup-1.m
index 71fc61ea04e..ff59b7efba9 100644
--- a/gcc/testsuite/objc.dg/lookup-1.m
+++ b/gcc/testsuite/objc.dg/lookup-1.m
@@ -1,7 +1,8 @@
-/* { dg-do run { target *-*-darwin* } } */
+/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
#include <stdlib.h>
+#include "../objc-obj-c++-shared/Object1.h"
typedef struct MyWidget {
int a;
@@ -35,7 +36,7 @@ MyWidget gWidget = { 17 };
@implementation Container
+ (MyWidget *)elementForView:(Foo *)view
{
- MyWidget *widget = nil;
+ MyWidget *widget = (MyWidget *) nil;
if ([view conformsTo:@protocol(MyProto)]) {
widget = [(Foo <MyProto> *)view widget];
}
@@ -52,3 +53,5 @@ int main(void) {
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/method-10.m b/gcc/testsuite/objc.dg/method-10.m
index 5a2a1db3462..442df690a0a 100644
--- a/gcc/testsuite/objc.dg/method-10.m
+++ b/gcc/testsuite/objc.dg/method-10.m
@@ -3,8 +3,10 @@
message sends (so that proper C/C++ argument conversions may
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/Object.h>
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -30,3 +32,4 @@ int main(void)
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/method-13.m b/gcc/testsuite/objc.dg/method-13.m
index c824398ac5b..b3e44bd25d0 100644
--- a/gcc/testsuite/objc.dg/method-13.m
+++ b/gcc/testsuite/objc.dg/method-13.m
@@ -3,6 +3,7 @@
root classes must be considered. */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
#include <objc/objc.h>
diff --git a/gcc/testsuite/objc.dg/method-15.m b/gcc/testsuite/objc.dg/method-15.m
index 0ba3625a817..6a5aec6ac20 100644
--- a/gcc/testsuite/objc.dg/method-15.m
+++ b/gcc/testsuite/objc.dg/method-15.m
@@ -4,7 +4,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class NSString;
diff --git a/gcc/testsuite/objc.dg/method-17.m b/gcc/testsuite/objc.dg/method-17.m
index 501c2decf95..3f6d8d06aad 100644
--- a/gcc/testsuite/objc.dg/method-17.m
+++ b/gcc/testsuite/objc.dg/method-17.m
@@ -3,7 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-Wreturn-type -Wextra" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo: Object
- (id) meth1;
diff --git a/gcc/testsuite/objc.dg/method-19.m b/gcc/testsuite/objc.dg/method-19.m
index 47163711b3d..362d55858f9 100644
--- a/gcc/testsuite/objc.dg/method-19.m
+++ b/gcc/testsuite/objc.dg/method-19.m
@@ -3,7 +3,7 @@
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class NotKnown;
diff --git a/gcc/testsuite/objc.dg/method-3.m b/gcc/testsuite/objc.dg/method-3.m
index 65031b0aa5b..abee4e0654b 100644
--- a/gcc/testsuite/objc.dg/method-3.m
+++ b/gcc/testsuite/objc.dg/method-3.m
@@ -1,9 +1,10 @@
/* Test for sending messages to aliased classes (and instances thereof). */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -43,3 +44,5 @@ int main(void) {
CHECK_IF([(Int1Alias *)int2typedef instanceMeth] == 1697);
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/method-4.m b/gcc/testsuite/objc.dg/method-4.m
index c8d092df74d..c5fa1a0861b 100644
--- a/gcc/testsuite/objc.dg/method-4.m
+++ b/gcc/testsuite/objc.dg/method-4.m
@@ -1,10 +1,11 @@
/* Check if class references (generated for the NeXT runtime) are appropriately
- folded. This test is safe to run on all targets. */
+ folded. */
/* Author: Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime" } */
-/* { dg-do compile } */
+/* The ABI is different for m64 darwin so skip this test for now */
+/* { dg-do compile { target { *-*-darwin* && { ! lp64 } } } } */
+/* { dg-skip-if "" { *-*-darwin* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
typedef Object ObjectTypedef1;
typedef ObjectTypedef1 ObjectTypedef2;
diff --git a/gcc/testsuite/objc.dg/method-6.m b/gcc/testsuite/objc.dg/method-6.m
index 8d868d13cc9..c46d9c450e7 100644
--- a/gcc/testsuite/objc.dg/method-6.m
+++ b/gcc/testsuite/objc.dg/method-6.m
@@ -4,7 +4,7 @@
/* { dg-do compile } */
/* { dg-options "-Wstrict-selector-match" } */
-#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/Protocol1.h"
@interface Base
- (unsigned)port;
diff --git a/gcc/testsuite/objc.dg/method-7.m b/gcc/testsuite/objc.dg/method-7.m
index 310976a2d71..d7a7b97b702 100644
--- a/gcc/testsuite/objc.dg/method-7.m
+++ b/gcc/testsuite/objc.dg/method-7.m
@@ -1,10 +1,10 @@
/* Check if finding multiple signatures for a method is handled gracefully. */
/* Author: Ziemowit Laski <zlaski@apple.com> */
-
/* { dg-do compile } */
/* { dg-options "-Wstrict-selector-match" } */
-#include <objc/Object.h>
+
+#include "../objc-obj-c++-shared/Object1.h"
@interface Class1
- (void)setWindow:(Object *)wdw;
diff --git a/gcc/testsuite/objc.dg/method-9.m b/gcc/testsuite/objc.dg/method-9.m
index d29b8881c0d..d755d6ad894 100644
--- a/gcc/testsuite/objc.dg/method-9.m
+++ b/gcc/testsuite/objc.dg/method-9.m
@@ -1,11 +1,11 @@
/* Check if finding multiple signatures for a method is handled gracefully
when method lookup succeeds (see also method-7.m). */
/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-
/* { dg-do compile } */
/* { dg-options "-Wstrict-selector-match" } */
-#include <objc/Object.h>
+
+#include "../objc-obj-c++-shared/Object1.h"
@protocol MyObject
- (id)initWithData:(Object *)data;
diff --git a/gcc/testsuite/objc.dg/next-runtime-1.m b/gcc/testsuite/objc.dg/next-runtime-1.m
index db14897fe8d..7d4a7d949c6 100644
--- a/gcc/testsuite/objc.dg/next-runtime-1.m
+++ b/gcc/testsuite/objc.dg/next-runtime-1.m
@@ -3,9 +3,9 @@
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do compile { target *-*-darwin* } } */
-/* { dg-options "-fnext-runtime" } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface FooBar: Object
- (void)boo;
diff --git a/gcc/testsuite/objc.dg/no-extra-load.m b/gcc/testsuite/objc.dg/no-extra-load.m
index 9b50e8358ba..75035357926 100644
--- a/gcc/testsuite/objc.dg/no-extra-load.m
+++ b/gcc/testsuite/objc.dg/no-extra-load.m
@@ -1,4 +1,5 @@
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
#import <Foundation/Foundation.h>
main() { [NSObject new]; }
diff --git a/gcc/testsuite/objc.dg/objc-fast-4.m b/gcc/testsuite/objc.dg/objc-fast-4.m
index 8dbcd138b8c..b86e395294f 100644
--- a/gcc/testsuite/objc.dg/objc-fast-4.m
+++ b/gcc/testsuite/objc.dg/objc-fast-4.m
@@ -1,10 +1,9 @@
/* The code should call objc_msgSend directly, not through a pointer. */
-/* { dg-do compile { target powerpc*-*-darwin* } } */
-/* { dg-options "-O0 -fnext-runtime" } */
-/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-options "-O0" } */
/* Radar 4015820 */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
void foo(void) {
Object *o;
diff --git a/gcc/testsuite/objc.dg/objc-gc-4.m b/gcc/testsuite/objc.dg/objc-gc-4.m
index df0a44cd8dd..efbde1b4b2a 100644
--- a/gcc/testsuite/objc.dg/objc-gc-4.m
+++ b/gcc/testsuite/objc.dg/objc-gc-4.m
@@ -5,7 +5,7 @@
/* { dg-do compile { target *-*-darwin* } } */
/* { dg-options "-fobjc-gc" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class MyWindow;
diff --git a/gcc/testsuite/objc.dg/pragma-1.m b/gcc/testsuite/objc.dg/pragma-1.m
index 0c3010dcf30..e9527e39e4e 100644
--- a/gcc/testsuite/objc.dg/pragma-1.m
+++ b/gcc/testsuite/objc.dg/pragma-1.m
@@ -1,4 +1,4 @@
-/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-do compile } */
/* ??? Is there a better pragma that is handled for all targets, not
handled by the preprocessor, that would be better for testing here? */
diff --git a/gcc/testsuite/objc.dg/proto-lossage-2.m b/gcc/testsuite/objc.dg/proto-lossage-2.m
index b3ab9681f62..361bb9087e6 100644
--- a/gcc/testsuite/objc.dg/proto-lossage-2.m
+++ b/gcc/testsuite/objc.dg/proto-lossage-2.m
@@ -2,7 +2,7 @@
provide a suitable method. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Zot
-(void) zot;
diff --git a/gcc/testsuite/objc.dg/proto-lossage-3.m b/gcc/testsuite/objc.dg/proto-lossage-3.m
index 512a59ee6dc..1cb7b1d91b9 100644
--- a/gcc/testsuite/objc.dg/proto-lossage-3.m
+++ b/gcc/testsuite/objc.dg/proto-lossage-3.m
@@ -2,9 +2,10 @@
a protocol with no instance/class methods respectively.
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/Object.h>
-#include <objc/Protocol.h>
@protocol NoInstanceMethods
+ testMethod;
diff --git a/gcc/testsuite/objc.dg/proto-qual-1.m b/gcc/testsuite/objc.dg/proto-qual-1.m
index 126bae76e89..7c6c62d241b 100644
--- a/gcc/testsuite/objc.dg/proto-qual-1.m
+++ b/gcc/testsuite/objc.dg/proto-qual-1.m
@@ -1,9 +1,10 @@
/* Check that protocol qualifiers are compiled and encoded properly. */
/* Author: Ziemowit Laski <zlaski@apple.com> */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Protocol.h>
+#include "../objc-obj-c++-shared/Protocol1.h"
#ifndef __NEXT_RUNTIME__
#include <objc/objc-api.h>
#endif
diff --git a/gcc/testsuite/objc.dg/selector-1.m b/gcc/testsuite/objc.dg/selector-1.m
index b9cc5e0807d..f0781b68c63 100644
--- a/gcc/testsuite/objc.dg/selector-1.m
+++ b/gcc/testsuite/objc.dg/selector-1.m
@@ -1,7 +1,8 @@
/* Test warning for non existing selectors. */
/* Contributed by Devang Patel <dpatel@apple.com>. */
-/* { dg-options "-Wselector -fnext-runtime" } */
+/* { dg-options "-Wselector" } */
/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
typedef struct objc_object { struct objc_class *class_pointer; } *id;
typedef struct objc_selector *SEL;
diff --git a/gcc/testsuite/objc.dg/selector-2.m b/gcc/testsuite/objc.dg/selector-2.m
index 3a463c3879a..ab8eb3e4540 100644
--- a/gcc/testsuite/objc.dg/selector-2.m
+++ b/gcc/testsuite/objc.dg/selector-2.m
@@ -2,7 +2,7 @@
/* { dg-options "-Wselector" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Foo
@end
diff --git a/gcc/testsuite/objc.dg/selector-3.m b/gcc/testsuite/objc.dg/selector-3.m
index 49f7e417208..b3ffccaca3a 100644
--- a/gcc/testsuite/objc.dg/selector-3.m
+++ b/gcc/testsuite/objc.dg/selector-3.m
@@ -1,7 +1,8 @@
/* Test warning for non-existent selectors. */
/* This is the "-fgnu-runtime" variant of objc.dg/selector-1.m. */
-/* { dg-options "-Wselector -fgnu-runtime" } */
+/* { dg-options "-Wselector" } */
/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
typedef struct objc_object { struct objc_class *class_pointer; } *id;
typedef const struct objc_selector *SEL;
diff --git a/gcc/testsuite/objc.dg/sizeof-1.m b/gcc/testsuite/objc.dg/sizeof-1.m
index 5d8def16afe..ae505c1e898 100644
--- a/gcc/testsuite/objc.dg/sizeof-1.m
+++ b/gcc/testsuite/objc.dg/sizeof-1.m
@@ -1,10 +1,10 @@
/* Check that the sizeof() operator works with ObjC classes and their aliases. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-lobjc" } */
+/* { dg-options "" } */
/* { dg-do run } */
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort();
@@ -31,3 +31,4 @@ int main(void) {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/special/special.exp b/gcc/testsuite/objc.dg/special/special.exp
index 55a34c4abe3..fdc90ecc6b5 100644
--- a/gcc/testsuite/objc.dg/special/special.exp
+++ b/gcc/testsuite/objc.dg/special/special.exp
@@ -33,14 +33,29 @@ dg-init
# This test is special because we must compile two different modules,
# unclaimed-category-1a.m and unclaimed-category-1.m, then link
# together, then run the resulting executable.
-set lines [objc_target_compile "$srcdir/$subdir/unclaimed-category-1a.m" "unclaimed-category-1a.o" object "additional_flags=-I${srcdir}/../../libobjc"]
+# for all systems we point to the libobjc includes and use the -fgnu-runtime
+set add_flags "additional_flags=-I${srcdir}/../../libobjc"
+lappend add_flags "additional_flags=-fgnu-runtime"
+set lines [objc_target_compile "$srcdir/$subdir/unclaimed-category-1a.m" "unclaimed-category-1a.o" object $add_flags ]
if ![string match "" $lines] then {
fail "unclaimed-category-1a.o"
} else {
- dg-runtest "$srcdir/$subdir/unclaimed-category-1.m" "unclaimed-category-1a.o" "-I${srcdir}/../../libobjc"
+ dg-runtest "$srcdir/$subdir/unclaimed-category-1.m" "unclaimed-category-1a.o" "-I${srcdir}/../../libobjc -fgnu-runtime"
file delete unclaimed-category-1a.o
}
+if [istarget "*-*-darwin*" ] {
+set add_flags ""
+lappend add_flags "additional_flags=-fnext-runtime"
+set lines [objc_target_compile "$srcdir/$subdir/unclaimed-category-1a.m" "unclaimed-category-1a.o" object $add_flags ]
+if ![string match "" $lines] then {
+ fail "unclaimed-category-1a.o"
+} else {
+ dg-runtest "$srcdir/$subdir/unclaimed-category-1.m" "unclaimed-category-1a.o" "-fnext-runtime"
+ file delete unclaimed-category-1a.o
+}
+}
+
# All done.
dg-finish
diff --git a/gcc/testsuite/objc.dg/special/unclaimed-category-1.h b/gcc/testsuite/objc.dg/special/unclaimed-category-1.h
index 52586f01521..0453033f3d2 100644
--- a/gcc/testsuite/objc.dg/special/unclaimed-category-1.h
+++ b/gcc/testsuite/objc.dg/special/unclaimed-category-1.h
@@ -1,11 +1,4 @@
/* Contributed by Nicola Pero - Fri Dec 14 08:36:00 GMT 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
-
-#ifdef __NEXT_RUNTIME__
-#define objc_get_class(C) objc_getClass(C)
-#define class_create_instance(C) class_createInstance(C, 0)
-#endif
/* Test loading unclaimed categories - categories of a class defined
separately from the class itself. */
diff --git a/gcc/testsuite/objc.dg/special/unclaimed-category-1.m b/gcc/testsuite/objc.dg/special/unclaimed-category-1.m
index b3a8c28b5e6..472ad8bbf83 100644
--- a/gcc/testsuite/objc.dg/special/unclaimed-category-1.m
+++ b/gcc/testsuite/objc.dg/special/unclaimed-category-1.m
@@ -1,8 +1,12 @@
/* Contributed by Nicola Pero - Fri Dec 14 08:36:00 GMT 2001 */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <objc/objc.h>
+#ifndef __NEXT_RUNTIME__
#include <objc/objc-api.h>
-#include <objc/Object.h>
+#endif
extern void abort (void);
@@ -69,3 +73,5 @@ int main (void)
return 0;
}
+
+#import "../../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/special/unclaimed-category-1a.m b/gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
index 6bcd1b4c53c..4fb2d461906 100644
--- a/gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
+++ b/gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
@@ -1,6 +1,4 @@
/* Contributed by Nicola Pero - Fri Dec 14 08:36:00 GMT 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
/* Test loading unclaimed categories - categories of a class defined
separately from the class itself. */
diff --git a/gcc/testsuite/objc.dg/stret-1.m b/gcc/testsuite/objc.dg/stret-1.m
index 7e13b32e338..cae7d6dd6bf 100644
--- a/gcc/testsuite/objc.dg/stret-1.m
+++ b/gcc/testsuite/objc.dg/stret-1.m
@@ -1,8 +1,9 @@
/* Test for handling of struct-returning methods. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -60,3 +61,5 @@ int main(void)
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/stret-2.m b/gcc/testsuite/objc.dg/stret-2.m
index dd9a2e8e5b2..ded3ae41997 100644
--- a/gcc/testsuite/objc.dg/stret-2.m
+++ b/gcc/testsuite/objc.dg/stret-2.m
@@ -3,8 +3,9 @@
points). */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
struct astruct {
float a, b;
diff --git a/gcc/testsuite/objc.dg/stubify-1.m b/gcc/testsuite/objc.dg/stubify-1.m
index 2b1aa61cf59..72de75beffc 100644
--- a/gcc/testsuite/objc.dg/stubify-1.m
+++ b/gcc/testsuite/objc.dg/stubify-1.m
@@ -2,6 +2,7 @@
_objc_msgSend<end-of-line>" without the $stub suffix. */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-options "-Os -mdynamic-no-pic" } */
typedef struct objc_object { } *id ;
diff --git a/gcc/testsuite/objc.dg/stubify-2.m b/gcc/testsuite/objc.dg/stubify-2.m
index a77ab9f2061..b474d4f8927 100644
--- a/gcc/testsuite/objc.dg/stubify-2.m
+++ b/gcc/testsuite/objc.dg/stubify-2.m
@@ -2,6 +2,7 @@
/* Testcase extracted from TextEdit:Document.m. */
/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump" } */
typedef struct objc_object { } *id ;
diff --git a/gcc/testsuite/objc.dg/super-class-2.m b/gcc/testsuite/objc.dg/super-class-2.m
index 15d018e7db8..144ea81b5e6 100644
--- a/gcc/testsuite/objc.dg/super-class-2.m
+++ b/gcc/testsuite/objc.dg/super-class-2.m
@@ -1,7 +1,6 @@
/* Test calling super from within a category class method. */
/* Author: Ziemowit Laski <zlaski@apple.com> */
/* { dg-do compile } */
-/* { dg-options "-fnext-runtime" } */
typedef struct objc_object { struct objc_class *isa; } *id;
diff --git a/gcc/testsuite/objc.dg/super-class-3.m b/gcc/testsuite/objc.dg/super-class-3.m
index 85396c23691..fc74871db8f 100644
--- a/gcc/testsuite/objc.dg/super-class-3.m
+++ b/gcc/testsuite/objc.dg/super-class-3.m
@@ -2,8 +2,10 @@
is an ObjC class name. */
/* 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/Object.h>
#include <stdlib.h>
#define CHECK_IF(expr) if(!(expr)) abort()
@@ -41,3 +43,4 @@ int main(void) {
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/super-class-4.m b/gcc/testsuite/objc.dg/super-class-4.m
index 5248123e79a..a5ff9088b1d 100644
--- a/gcc/testsuite/objc.dg/super-class-4.m
+++ b/gcc/testsuite/objc.dg/super-class-4.m
@@ -3,7 +3,7 @@
should be traversed to find the @interface. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@class MyWpModule;
diff --git a/gcc/testsuite/objc.dg/symtab-1.m b/gcc/testsuite/objc.dg/symtab-1.m
index d031cb46d06..dade2084478 100644
--- a/gcc/testsuite/objc.dg/symtab-1.m
+++ b/gcc/testsuite/objc.dg/symtab-1.m
@@ -1,9 +1,10 @@
/* Check if the objc_symtab descriptor is being laid out correctly. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime" } */
-/* { dg-do compile { target *-*-darwin* } } */
-#include <objc/Object.h>
+/* { dg-do compile { target { *-*-darwin* } } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+
+#include "../objc-obj-c++-shared/Object1.h"
@interface Base: Object
- (void)setValues;
diff --git a/gcc/testsuite/objc.dg/sync-1.m b/gcc/testsuite/objc.dg/sync-1.m
index d7035c715b5..fe1f65c78eb 100644
--- a/gcc/testsuite/objc.dg/sync-1.m
+++ b/gcc/testsuite/objc.dg/sync-1.m
@@ -1,8 +1,8 @@
/* Make sure that @synchronized parses. */
-/* { dg-options "-fnext-runtime -fobjc-exceptions" } */
+/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
void foo(id sem)
{
diff --git a/gcc/testsuite/objc.dg/try-catch-1.m b/gcc/testsuite/objc.dg/try-catch-1.m
index c47e41c9601..5b2a209ddb8 100644
--- a/gcc/testsuite/objc.dg/try-catch-1.m
+++ b/gcc/testsuite/objc.dg/try-catch-1.m
@@ -3,7 +3,7 @@
/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
#include <stdio.h>
#include <setjmp.h>
diff --git a/gcc/testsuite/objc.dg/try-catch-10.m b/gcc/testsuite/objc.dg/try-catch-10.m
index 1da1b47984a..49e2c0cef15 100644
--- a/gcc/testsuite/objc.dg/try-catch-10.m
+++ b/gcc/testsuite/objc.dg/try-catch-10.m
@@ -1,10 +1,10 @@
/* Ensure that @try/@catch blocks do not mess with types of
local objects (other than their volatile bits). */
-/* { dg-options "-fobjc-exceptions -fnext-runtime" } */
+/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@protocol Proto1
- (int)meth1;
diff --git a/gcc/testsuite/objc.dg/try-catch-3.m b/gcc/testsuite/objc.dg/try-catch-3.m
index af2829e2c2f..2094d29ce2d 100644
--- a/gcc/testsuite/objc.dg/try-catch-3.m
+++ b/gcc/testsuite/objc.dg/try-catch-3.m
@@ -5,7 +5,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
const char *foo(void)
{
diff --git a/gcc/testsuite/objc.dg/try-catch-5.m b/gcc/testsuite/objc.dg/try-catch-5.m
index f833bc2c749..f943e9c7e1e 100644
--- a/gcc/testsuite/objc.dg/try-catch-5.m
+++ b/gcc/testsuite/objc.dg/try-catch-5.m
@@ -4,7 +4,7 @@
generating the warning message. */
/* { dg-do compile } */
-/* { dg-options "-Wall -fnext-runtime -fobjc-exceptions" } */
+/* { dg-options "-Wall -fobjc-exceptions" } */
@interface Exception
@end
diff --git a/gcc/testsuite/objc.dg/try-catch-6.m b/gcc/testsuite/objc.dg/try-catch-6.m
index 5276f0f68d1..548c320b494 100644
--- a/gcc/testsuite/objc.dg/try-catch-6.m
+++ b/gcc/testsuite/objc.dg/try-catch-6.m
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
int main (int argc, const char * argv[]) {
Object * pool = [Object new];
diff --git a/gcc/testsuite/objc.dg/try-catch-7.m b/gcc/testsuite/objc.dg/try-catch-7.m
index b1e1cd191c6..b6666237025 100644
--- a/gcc/testsuite/objc.dg/try-catch-7.m
+++ b/gcc/testsuite/objc.dg/try-catch-7.m
@@ -3,7 +3,7 @@
/* { dg-do compile } */
/* { dg-options "-fobjc-exceptions" } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
@interface Derived: Object
- (id) meth;
diff --git a/gcc/testsuite/objc.dg/try-catch-9.m b/gcc/testsuite/objc.dg/try-catch-9.m
index 5f6daa42bf3..454e841b301 100644
--- a/gcc/testsuite/objc.dg/try-catch-9.m
+++ b/gcc/testsuite/objc.dg/try-catch-9.m
@@ -5,7 +5,6 @@
/* { dg-options "-fobjc-exceptions" } */
/* { dg-do compile } */
-
void foo (int *arg1, int *arg2)
{
*arg1 = *arg2;
diff --git a/gcc/testsuite/objc.dg/type-size-2.m b/gcc/testsuite/objc.dg/type-size-2.m
index da6bdb8f9fb..2f8d517a3a3 100644
--- a/gcc/testsuite/objc.dg/type-size-2.m
+++ b/gcc/testsuite/objc.dg/type-size-2.m
@@ -3,16 +3,17 @@
encoded as pointers. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do run } */
-
-#include <objc/objc.h>
+/* { 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/objc.h>
#ifdef __NEXT_RUNTIME__
#include <objc/objc-runtime.h>
-#define OBJC_GETCLASS objc_getClass
-#define CLASS_GETINSTANCEMETHOD class_getInstanceMethod
+#define METHOD Method
#else
#include <objc/objc-api.h>
-#define OBJC_GETCLASS objc_get_class
-#define CLASS_GETINSTANCEMETHOD class_get_instance_method
+#define METHOD Method_t
+#define method_get_types(M) (M)->method_types
#endif
extern int sscanf(const char *str, const char *format, ...);
@@ -32,27 +33,29 @@ enum Enum { one, two, three, four };
@end
Class cls;
-struct objc_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(meth->method_types, pattern, &totsize, &offs0, &offs1, &offs2, &offs3,
+ sscanf(method_get_types(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_GETCLASS("ArrayTest");
+ cls = objc_get_class("ArrayTest");
- meth = CLASS_GETINSTANCEMETHOD(cls, @selector(str:with:and:));
+ meth = class_get_instance_method(cls, @selector(str:with:and:));
scan_initial("r*%u@%u:%u*%u*%u[4i]%u");
CHECK_IF(offs3 == offs2 + sizeof(signed char *) && offs4 == offs3 + sizeof(unsigned char *));
CHECK_IF(totsize == offs4 + sizeof(enum Enum *));
- meth = CLASS_GETINSTANCEMETHOD(cls, @selector(meth1:with:with:));
+ meth = class_get_instance_method(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 *));
return 0;
}
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/type-stream-1.m b/gcc/testsuite/objc.dg/type-stream-1.m
index edc04e6467b..33a30914f8e 100644
--- a/gcc/testsuite/objc.dg/type-stream-1.m
+++ b/gcc/testsuite/objc.dg/type-stream-1.m
@@ -1,5 +1,5 @@
-/* { dg-options "-fgnu-runtime" } */
/* { dg-do run } */
+/* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
#include <objc/typedstream.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/objc.dg/typedef-alias-1.m b/gcc/testsuite/objc.dg/typedef-alias-1.m
index beed7270121..79db8765ead 100644
--- a/gcc/testsuite/objc.dg/typedef-alias-1.m
+++ b/gcc/testsuite/objc.dg/typedef-alias-1.m
@@ -1,7 +1,7 @@
/* Typedefs of ObjC types should work without any bogus warnings. */
/* { dg-do compile } */
-#include <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
typedef Object MyObject;
diff --git a/gcc/testsuite/objc.dg/va-meth-1.m b/gcc/testsuite/objc.dg/va-meth-1.m
index 751b6484545..15bbe97c9a5 100644
--- a/gcc/testsuite/objc.dg/va-meth-1.m
+++ b/gcc/testsuite/objc.dg/va-meth-1.m
@@ -1,7 +1,9 @@
/* Based on objc/execute/va_method.m, by Nicola Pero */
/* { dg-do run } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+
+#include "../objc-obj-c++-shared/Object1.h"
-#include <objc/Object.h>
#include <stdarg.h>
#include <stdlib.h>
@@ -67,3 +69,5 @@ int main (void)
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc.dg/zero-link-1.m b/gcc/testsuite/objc.dg/zero-link-1.m
index 96fd0c290d3..35cabfaf5de 100644
--- a/gcc/testsuite/objc.dg/zero-link-1.m
+++ b/gcc/testsuite/objc.dg/zero-link-1.m
@@ -1,10 +1,12 @@
/* Check if the '-fzero-link' flag correctly emits an objc_getClass() call. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -fzero-link" } */
-/* { dg-do compile } */
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+/* { dg-options "-fzero-link" } */
+
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort();
diff --git a/gcc/testsuite/objc.dg/zero-link-2.m b/gcc/testsuite/objc.dg/zero-link-2.m
index 8fba04230b6..443090aaee7 100644
--- a/gcc/testsuite/objc.dg/zero-link-2.m
+++ b/gcc/testsuite/objc.dg/zero-link-2.m
@@ -1,10 +1,12 @@
/* Check if the '-fno-zero-link' flag correctly _omits_ an objc_getClass() call. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -fno-zero-link" } */
-/* { dg-do compile } */
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
+/* { dg-options "-fno-zero-link" } */
+
+#include "../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort();
diff --git a/gcc/testsuite/objc.dg/zero-link-3.m b/gcc/testsuite/objc.dg/zero-link-3.m
index af624abf096..2b95b952b1e 100644
--- a/gcc/testsuite/objc.dg/zero-link-3.m
+++ b/gcc/testsuite/objc.dg/zero-link-3.m
@@ -1,10 +1,12 @@
/* Check that the '-fzero-link' flag doesn't prevent messaging from working. */
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
-/* { dg-options "-fnext-runtime -fzero-link -lobjc" } */
+
/* { dg-do run { target *-*-darwin* } } */
+/* { dg-options "-fzero-link" } */
+/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
-#import <objc/objc.h>
-#import <objc/Object.h>
+#include "../objc-obj-c++-shared/Object1.h"
+//#import <objc/objc.h>
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort();
@@ -22,3 +24,5 @@ int main(void) {
CHECK_IF(val == 1593);
return 0;
}
+
+#include "../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc/compile/trivial.m b/gcc/testsuite/objc/compile/trivial.m
index c2560658ea4..207cce8b3c3 100644
--- a/gcc/testsuite/objc/compile/trivial.m
+++ b/gcc/testsuite/objc/compile/trivial.m
@@ -1,4 +1,4 @@
-#import <objc/Object.h>
+#import "../../objc-obj-c++-shared/Object1.h"
int main(void)
{
diff --git a/gcc/testsuite/objc/execute/IMP.m b/gcc/testsuite/objc/execute/IMP.m
index 99f61933926..f0790975780 100644
--- a/gcc/testsuite/objc/execute/IMP.m
+++ b/gcc/testsuite/objc/execute/IMP.m
@@ -1,9 +1,10 @@
/* 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 "next_mapping.h"
-
/* Test getting and calling the IMP of a method */
@interface TestClass
@@ -20,7 +21,6 @@
}
@end
-
int main (void)
{
Class class;
diff --git a/gcc/testsuite/objc/execute/_cmd.m b/gcc/testsuite/objc/execute/_cmd.m
index 72c555e6d42..6c579d771b8 100644
--- a/gcc/testsuite/objc/execute/_cmd.m
+++ b/gcc/testsuite/objc/execute/_cmd.m
@@ -1,8 +1,8 @@
/* Contributed by Nicola Pero - Fri Mar 9 19:39:15 CET 2001 */
-#include <objc/objc.h>
-#include <objc/objc-api.h>
-#include "next_mapping.h"
+#include <stdlib.h>
+#include "../../objc-obj-c++-shared/next-mapping.h"
+#include <objc/objc-api.h>
/* Test the hidden argument _cmd to method calls */
diff --git a/gcc/testsuite/objc/execute/accessing_ivars.m b/gcc/testsuite/objc/execute/accessing_ivars.m
index 2c024f5ba7e..dbde8cd11dd 100644
--- a/gcc/testsuite/objc/execute/accessing_ivars.m
+++ b/gcc/testsuite/objc/execute/accessing_ivars.m
@@ -1,7 +1,7 @@
/* Contributed by Nicola Pero - Thu Mar 8 16:27:46 CET 2001 */
-#include <objc/objc.h>
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc-api.h>
-#include <objc/Object.h>
/* Test that by using -> we can access ivars of other objects of the same
class */
diff --git a/gcc/testsuite/objc/execute/bf-1.m b/gcc/testsuite/objc/execute/bf-1.m
index 9a533a39b52..d8b9b29fb55 100644
--- a/gcc/testsuite/objc/execute/bf-1.m
+++ b/gcc/testsuite/objc/execute/bf-1.m
@@ -1,6 +1,5 @@
-#include <objc/objc.h>
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-10.m b/gcc/testsuite/objc/execute/bf-10.m
index 77076da51ed..9f5c7a51762 100644
--- a/gcc/testsuite/objc/execute/bf-10.m
+++ b/gcc/testsuite/objc/execute/bf-10.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
@@ -19,4 +19,3 @@
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-11.m b/gcc/testsuite/objc/execute/bf-11.m
index 40d9b533a49..1779d0ff830 100644
--- a/gcc/testsuite/objc/execute/bf-11.m
+++ b/gcc/testsuite/objc/execute/bf-11.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-12.m b/gcc/testsuite/objc/execute/bf-12.m
index 9e0a989ee75..5a05a0957ef 100644
--- a/gcc/testsuite/objc/execute/bf-12.m
+++ b/gcc/testsuite/objc/execute/bf-12.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-13.m b/gcc/testsuite/objc/execute/bf-13.m
index f8349338b53..f893bfdf78c 100644
--- a/gcc/testsuite/objc/execute/bf-13.m
+++ b/gcc/testsuite/objc/execute/bf-13.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-14.m b/gcc/testsuite/objc/execute/bf-14.m
index 0ceedc08dd8..8b65a047197 100644
--- a/gcc/testsuite/objc/execute/bf-14.m
+++ b/gcc/testsuite/objc/execute/bf-14.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
@@ -22,4 +22,3 @@
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-15.m b/gcc/testsuite/objc/execute/bf-15.m
index e6e7b30607d..f8d096bd168 100644
--- a/gcc/testsuite/objc/execute/bf-15.m
+++ b/gcc/testsuite/objc/execute/bf-15.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-16.m b/gcc/testsuite/objc/execute/bf-16.m
index fb8b0c38f51..dea379c8910 100644
--- a/gcc/testsuite/objc/execute/bf-16.m
+++ b/gcc/testsuite/objc/execute/bf-16.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
struct A {
int i;
@@ -23,4 +23,3 @@ struct A {
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-17.m b/gcc/testsuite/objc/execute/bf-17.m
index 4c3b854962c..b36d406fe5e 100644
--- a/gcc/testsuite/objc/execute/bf-17.m
+++ b/gcc/testsuite/objc/execute/bf-17.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
struct A {
int i;
@@ -22,4 +22,3 @@ struct A {
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-18.m b/gcc/testsuite/objc/execute/bf-18.m
index 36a7ea6c61b..96a8aeb8b19 100644
--- a/gcc/testsuite/objc/execute/bf-18.m
+++ b/gcc/testsuite/objc/execute/bf-18.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-19.m b/gcc/testsuite/objc/execute/bf-19.m
index 21775e7c77e..8be8ecc4b06 100644
--- a/gcc/testsuite/objc/execute/bf-19.m
+++ b/gcc/testsuite/objc/execute/bf-19.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
@@ -14,4 +14,3 @@
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-2.m b/gcc/testsuite/objc/execute/bf-2.m
index eac0931549b..bbb6fe1908e 100644
--- a/gcc/testsuite/objc/execute/bf-2.m
+++ b/gcc/testsuite/objc/execute/bf-2.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-20.m b/gcc/testsuite/objc/execute/bf-20.m
index e01f065b8e0..00cf99b61b9 100644
--- a/gcc/testsuite/objc/execute/bf-20.m
+++ b/gcc/testsuite/objc/execute/bf-20.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-21.m b/gcc/testsuite/objc/execute/bf-21.m
index 2587a0acd14..423bde0e5f4 100644
--- a/gcc/testsuite/objc/execute/bf-21.m
+++ b/gcc/testsuite/objc/execute/bf-21.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
typedef enum
{
diff --git a/gcc/testsuite/objc/execute/bf-3.m b/gcc/testsuite/objc/execute/bf-3.m
index 04cf0836faa..a531726f734 100644
--- a/gcc/testsuite/objc/execute/bf-3.m
+++ b/gcc/testsuite/objc/execute/bf-3.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-4.m b/gcc/testsuite/objc/execute/bf-4.m
index ae8017c688e..8c9aa4e3b6d 100644
--- a/gcc/testsuite/objc/execute/bf-4.m
+++ b/gcc/testsuite/objc/execute/bf-4.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-5.m b/gcc/testsuite/objc/execute/bf-5.m
index e61d71f9ced..3a2208fa797 100644
--- a/gcc/testsuite/objc/execute/bf-5.m
+++ b/gcc/testsuite/objc/execute/bf-5.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-6.m b/gcc/testsuite/objc/execute/bf-6.m
index 38222d3f676..1a3c2d838a7 100644
--- a/gcc/testsuite/objc/execute/bf-6.m
+++ b/gcc/testsuite/objc/execute/bf-6.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-7.m b/gcc/testsuite/objc/execute/bf-7.m
index 80ee6cef763..c4e8d6e0303 100644
--- a/gcc/testsuite/objc/execute/bf-7.m
+++ b/gcc/testsuite/objc/execute/bf-7.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
@@ -19,4 +19,3 @@
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-8.m b/gcc/testsuite/objc/execute/bf-8.m
index cc472f96130..8dfdccf65a7 100644
--- a/gcc/testsuite/objc/execute/bf-8.m
+++ b/gcc/testsuite/objc/execute/bf-8.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
diff --git a/gcc/testsuite/objc/execute/bf-9.m b/gcc/testsuite/objc/execute/bf-9.m
index 0f17727d6df..077de6cedd6 100644
--- a/gcc/testsuite/objc/execute/bf-9.m
+++ b/gcc/testsuite/objc/execute/bf-9.m
@@ -1,6 +1,6 @@
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
@interface MyObject
{
@@ -20,4 +20,3 @@
@end
#include "bf-common.h"
-
diff --git a/gcc/testsuite/objc/execute/bf-common.h b/gcc/testsuite/objc/execute/bf-common.h
index 6cf7a0696b6..5d6ef577a90 100644
--- a/gcc/testsuite/objc/execute/bf-common.h
+++ b/gcc/testsuite/objc/execute/bf-common.h
@@ -1,7 +1,8 @@
+#include <stdlib.h>
+#include "../../objc-obj-c++-shared/next-mapping.h"
#ifndef __NEXT_RUNTIME__
#include <objc/encoding.h>
#endif
-#include "next_mapping.h"
void print_ivars (Class class)
{
diff --git a/gcc/testsuite/objc/execute/bycopy-1.m b/gcc/testsuite/objc/execute/bycopy-1.m
index 83f4b270b8f..c719d27d18b 100644
--- a/gcc/testsuite/objc/execute/bycopy-1.m
+++ b/gcc/testsuite/objc/execute/bycopy-1.m
@@ -3,8 +3,7 @@
* Fri Feb 2 11:48:01 GMT 2001
*/
-#include <objc/objc.h>
-#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol MyProtocol
- (bycopy id) bycopyMethod;
diff --git a/gcc/testsuite/objc/execute/bycopy-2.m b/gcc/testsuite/objc/execute/bycopy-2.m
index dce028152a9..8e7f169293f 100644
--- a/gcc/testsuite/objc/execute/bycopy-2.m
+++ b/gcc/testsuite/objc/execute/bycopy-2.m
@@ -3,9 +3,7 @@
* Fri Feb 2 11:48:01 GMT 2001
*/
-#include <objc/objc.h>
-#include <objc/Object.h>
-#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol MyProtocol
+ (bycopy id<MyProtocol>) bycopyMethod;
diff --git a/gcc/testsuite/objc/execute/bycopy-3.m b/gcc/testsuite/objc/execute/bycopy-3.m
index 60acde52b59..d1944a4b3a1 100644
--- a/gcc/testsuite/objc/execute/bycopy-3.m
+++ b/gcc/testsuite/objc/execute/bycopy-3.m
@@ -9,14 +9,12 @@
* interfere with what we are testing, which is that the `bycopy'
* keyword generates the _F_BYCOPY qualifier for the return type. */
-#include <objc/objc.h>
-#include <objc/Object.h>
-#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/next-mapping.h"
+#include "../../objc-obj-c++-shared/Protocol1.h"
#ifndef __NEXT_RUNTIME__
#include <objc/encoding.h>
#endif
-#include "next_mapping.h"
@protocol MyProtocol
+ (bycopy id<MyProtocol>) bycopyMethod;
diff --git a/gcc/testsuite/objc/execute/cascading-1.m b/gcc/testsuite/objc/execute/cascading-1.m
index 67988a5db2a..b823ea816f0 100644
--- a/gcc/testsuite/objc/execute/cascading-1.m
+++ b/gcc/testsuite/objc/execute/cascading-1.m
@@ -1,4 +1,5 @@
-#include <objc/Object.h>
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
@interface Foo : Object
+ foo;
diff --git a/gcc/testsuite/objc/execute/class-1.m b/gcc/testsuite/objc/execute/class-1.m
index 5fd9aa8e038..2ac2c0646c0 100644
--- a/gcc/testsuite/objc/execute/class-1.m
+++ b/gcc/testsuite/objc/execute/class-1.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a RootClass */
@interface RootClass
diff --git a/gcc/testsuite/objc/execute/class-10.m b/gcc/testsuite/objc/execute/class-10.m
index d984d62ac99..0908609f0f3 100644
--- a/gcc/testsuite/objc/execute/class-10.m
+++ b/gcc/testsuite/objc/execute/class-10.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation, and using self to call another method of itself */
diff --git a/gcc/testsuite/objc/execute/class-11.m b/gcc/testsuite/objc/execute/class-11.m
index 00c488bd1b9..33cd0492da3 100644
--- a/gcc/testsuite/objc/execute/class-11.m
+++ b/gcc/testsuite/objc/execute/class-11.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation and using self to call another method of itself - in
diff --git a/gcc/testsuite/objc/execute/class-12.m b/gcc/testsuite/objc/execute/class-12.m
index fcab65b2d36..3f4c4fbd5f4 100644
--- a/gcc/testsuite/objc/execute/class-12.m
+++ b/gcc/testsuite/objc/execute/class-12.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with a class methods */
@interface RootClass
diff --git a/gcc/testsuite/objc/execute/class-13.m b/gcc/testsuite/objc/execute/class-13.m
index 98cf0ccd729..790654d107a 100644
--- a/gcc/testsuite/objc/execute/class-13.m
+++ b/gcc/testsuite/objc/execute/class-13.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with a class accessor
methods and a subclass overriding the superclass' implementation
but reusing it with super */
diff --git a/gcc/testsuite/objc/execute/class-14.m b/gcc/testsuite/objc/execute/class-14.m
index 7d02c36df7a..e04452e527b 100644
--- a/gcc/testsuite/objc/execute/class-14.m
+++ b/gcc/testsuite/objc/execute/class-14.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with a class accessor
methods and a subclass overriding the superclass' implementation,
and using self to call another method of itself */
diff --git a/gcc/testsuite/objc/execute/class-2.m b/gcc/testsuite/objc/execute/class-2.m
index 350a583e9b5..c20f95fd6a6 100644
--- a/gcc/testsuite/objc/execute/class-2.m
+++ b/gcc/testsuite/objc/execute/class-2.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass */
@interface RootClass
diff --git a/gcc/testsuite/objc/execute/class-3.m b/gcc/testsuite/objc/execute/class-3.m
index 5ce83376c46..dbdc0b9f2e3 100644
--- a/gcc/testsuite/objc/execute/class-3.m
+++ b/gcc/testsuite/objc/execute/class-3.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a minimal subclass tree */
@interface RootClass
diff --git a/gcc/testsuite/objc/execute/class-4.m b/gcc/testsuite/objc/execute/class-4.m
index 34d414b1229..61ce30a6a80 100644
--- a/gcc/testsuite/objc/execute/class-4.m
+++ b/gcc/testsuite/objc/execute/class-4.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods */
diff --git a/gcc/testsuite/objc/execute/class-5.m b/gcc/testsuite/objc/execute/class-5.m
index e2b750ac01d..c10df1be0b3 100644
--- a/gcc/testsuite/objc/execute/class-5.m
+++ b/gcc/testsuite/objc/execute/class-5.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation */
diff --git a/gcc/testsuite/objc/execute/class-6.m b/gcc/testsuite/objc/execute/class-6.m
index fb2d64b4314..064462280e0 100644
--- a/gcc/testsuite/objc/execute/class-6.m
+++ b/gcc/testsuite/objc/execute/class-6.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation but reusing it with super */
diff --git a/gcc/testsuite/objc/execute/class-7.m b/gcc/testsuite/objc/execute/class-7.m
index 3fddca77065..06de61fef32 100644
--- a/gcc/testsuite/objc/execute/class-7.m
+++ b/gcc/testsuite/objc/execute/class-7.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods; accessor methods implemented in a separate
category */
diff --git a/gcc/testsuite/objc/execute/class-8.m b/gcc/testsuite/objc/execute/class-8.m
index 806db03687c..0471994d359 100644
--- a/gcc/testsuite/objc/execute/class-8.m
+++ b/gcc/testsuite/objc/execute/class-8.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation - in a category */
diff --git a/gcc/testsuite/objc/execute/class-9.m b/gcc/testsuite/objc/execute/class-9.m
index d32362bdd57..367a4c912cc 100644
--- a/gcc/testsuite/objc/execute/class-9.m
+++ b/gcc/testsuite/objc/execute/class-9.m
@@ -1,9 +1,9 @@
/* 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>
-#include "next_mapping.h"
-
/* Tests creating a root class and a subclass with an ivar and
accessor methods and a subclass overriding the superclass'
implementation but reusing it with super - in a category */
diff --git a/gcc/testsuite/objc/execute/class-tests-1.h b/gcc/testsuite/objc/execute/class-tests-1.h
index 8362006ef72..ebc49b66c22 100644
--- a/gcc/testsuite/objc/execute/class-tests-1.h
+++ b/gcc/testsuite/objc/execute/class-tests-1.h
@@ -1,8 +1,9 @@
/* Contributed by Nicola Pero on Tue Mar 6 23:05:53 CET 2001 */
+
+#include <stdlib.h>
+#include "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
-#include <stdlib.h>
/*
* Standard Tests For Classes and Objects - abort upon failing; return
diff --git a/gcc/testsuite/objc/execute/class_self-2.m b/gcc/testsuite/objc/execute/class_self-2.m
index 7fa54906cce..ad2b76b50e8 100644
--- a/gcc/testsuite/objc/execute/class_self-2.m
+++ b/gcc/testsuite/objc/execute/class_self-2.m
@@ -1,4 +1,5 @@
/* Contributed by Nicola Pero - Fri Oct 26 22:39:32 BST 2001 */
+#include <stdlib.h>
#include <objc/objc.h>
/* Test calling a class method on self where self has been redefined
diff --git a/gcc/testsuite/objc/execute/compatibility_alias.m b/gcc/testsuite/objc/execute/compatibility_alias.m
index 24f47712eec..b134f0c85fa 100644
--- a/gcc/testsuite/objc/execute/compatibility_alias.m
+++ b/gcc/testsuite/objc/execute/compatibility_alias.m
@@ -1,6 +1,6 @@
/* 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/Object.h>
@compatibility_alias MyObject Object;
diff --git a/gcc/testsuite/objc/execute/encode-1.m b/gcc/testsuite/objc/execute/encode-1.m
index 3f232c9cdd2..3e2412e4647 100644
--- a/gcc/testsuite/objc/execute/encode-1.m
+++ b/gcc/testsuite/objc/execute/encode-1.m
@@ -1,7 +1,8 @@
/* Contributed by Nicola Pero - Thu Mar 8 16:27:46 CET 2001 */
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
/* Test very simple @encode */
diff --git a/gcc/testsuite/objc/execute/enumeration-1.m b/gcc/testsuite/objc/execute/enumeration-1.m
index e0b784f9887..1adcfd02e95 100644
--- a/gcc/testsuite/objc/execute/enumeration-1.m
+++ b/gcc/testsuite/objc/execute/enumeration-1.m
@@ -1,6 +1,7 @@
/* 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>
-#include <objc/Object.h>
/* Test using a bitfield enumeration ivar. */
diff --git a/gcc/testsuite/objc/execute/enumeration-2.m b/gcc/testsuite/objc/execute/enumeration-2.m
index a128da69ff3..c47bb8a583d 100644
--- a/gcc/testsuite/objc/execute/enumeration-2.m
+++ b/gcc/testsuite/objc/execute/enumeration-2.m
@@ -1,6 +1,7 @@
/* 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>
-#include <objc/Object.h>
typedef enum { black, white } color;
diff --git a/gcc/testsuite/objc/execute/exceptions/catchall-1.m b/gcc/testsuite/objc/execute/exceptions/catchall-1.m
index ac7d127a1a1..01eff9257a3 100644
--- a/gcc/testsuite/objc/execute/exceptions/catchall-1.m
+++ b/gcc/testsuite/objc/execute/exceptions/catchall-1.m
@@ -2,15 +2,15 @@
exceptions. */
/* Developed by Ziemowit Laski <zlaski@apple.com>. */
-#include <objc/Object.h>
#include <stdio.h>
+#include <stdlib.h>
+#import "../../../objc-obj-c++-shared/Object1.h"
/* The following is not required in actual user code; we include it
here to check that the compiler generates an internal definition of
_setjmp that is consistent with what <setjmp.h> provides. */
#include <setjmp.h>
-extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
@interface Frob: Object
diff --git a/gcc/testsuite/objc/execute/exceptions/finally-1.m b/gcc/testsuite/objc/execute/exceptions/finally-1.m
index 5f32de2b4e1..5206c77cf37 100644
--- a/gcc/testsuite/objc/execute/exceptions/finally-1.m
+++ b/gcc/testsuite/objc/execute/exceptions/finally-1.m
@@ -1,6 +1,6 @@
-#include <objc/Object.h>
#include <stdio.h>
#include <stdlib.h>
+#import "../../../objc-obj-c++-shared/Object1.h"
static int made_try = 0;
diff --git a/gcc/testsuite/objc/execute/exceptions/foward-1.m b/gcc/testsuite/objc/execute/exceptions/foward-1.m
index 67fbfcbb9e7..ae5d9273fdf 100644
--- a/gcc/testsuite/objc/execute/exceptions/foward-1.m
+++ b/gcc/testsuite/objc/execute/exceptions/foward-1.m
@@ -1,9 +1,9 @@
/* Check that throwing an exception from a -forward:: works. */
/* Developed by Marcin Koziej <creep@desk.pl>. */
-#import <objc/Object.h>
-#import <objc/objc-api.h>
#include <stdlib.h>
+#import "../../../objc-obj-c++-shared/Object1.h"
+#import <objc/objc-api.h>
static int i;
diff --git a/gcc/testsuite/objc/execute/exceptions/local-variables-1.m b/gcc/testsuite/objc/execute/exceptions/local-variables-1.m
index 79a62978642..fa419f9e1f8 100644
--- a/gcc/testsuite/objc/execute/exceptions/local-variables-1.m
+++ b/gcc/testsuite/objc/execute/exceptions/local-variables-1.m
@@ -2,9 +2,9 @@
block survive until the @catch block is reached. */
/* Developed by Ziemowit Laski <zlaski@apple.com>. */
-#include <objc/Object.h>
#include <stdlib.h>
#include <stdio.h>
+#import "../../../objc-obj-c++-shared/Object1.h"
int gi1 = 9, gi2 = 19;
float gf1 = 9.0, gf2 = 19.0;
diff --git a/gcc/testsuite/objc/execute/exceptions/trivial.m b/gcc/testsuite/objc/execute/exceptions/trivial.m
index f1dce2c1e2b..4e55e9d841b 100644
--- a/gcc/testsuite/objc/execute/exceptions/trivial.m
+++ b/gcc/testsuite/objc/execute/exceptions/trivial.m
@@ -1,7 +1,19 @@
-#import <objc/Object.h>
+#include <stdlib.h>
+#import "../../../objc-obj-c++-shared/Object1.h"
+/* do nothing except prove we can compile and link code calling the
+ ecceptions mechanism */
+
int main(void)
{
- [Object class];
- return 0;
+ @try {
+ int a = 1 ;
+ @throw [Object new];
+ }
+ @catch (Object *obj) {
+ return 0;
+ }
+ abort();
}
+
+#import "../../../objc-obj-c++-shared/Object1-implementation.h"
diff --git a/gcc/testsuite/objc/execute/formal_protocol-1.m b/gcc/testsuite/objc/execute/formal_protocol-1.m
index 1fde38b794d..a62def3ba6f 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-1.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-1.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
+
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
/* Tests defining a protocol and a class adopting it */
diff --git a/gcc/testsuite/objc/execute/formal_protocol-2.m b/gcc/testsuite/objc/execute/formal_protocol-2.m
index f399555ed14..a0f7eecc81a 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-2.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-2.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
+
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
/* Test defining a protocol, a class adopting it, and using an object
of type `id <protocol>'. */
diff --git a/gcc/testsuite/objc/execute/formal_protocol-3.m b/gcc/testsuite/objc/execute/formal_protocol-3.m
index 9fc2a768ded..c55773a668a 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-3.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-3.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
+
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
/* Test defining two protocol, a class adopting both of them,
and using an object of type `id <Protocol1, Protocol2>' */
diff --git a/gcc/testsuite/objc/execute/formal_protocol-4.m b/gcc/testsuite/objc/execute/formal_protocol-4.m
index af79606c065..92f05211702 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-4.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-4.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
+
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
/* Test defining a protocol, a class adopting it in a category */
diff --git a/gcc/testsuite/objc/execute/formal_protocol-5.m b/gcc/testsuite/objc/execute/formal_protocol-5.m
index 3d9f778fe63..8bb63ecfa66 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-5.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-5.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Protocol.h>
+
+#include <stdlib.h>
+#include "../../objc-obj-c++-shared/Protocol1.h"
/* Test defining a protocol, and accessing it using @protocol */
@@ -23,7 +24,11 @@ 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 ();
}
diff --git a/gcc/testsuite/objc/execute/formal_protocol-6.m b/gcc/testsuite/objc/execute/formal_protocol-6.m
index 7873fdcdf39..dd42b370192 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-6.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-6.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Protocol.h>
+
+#include <stdlib.h>
+#include "../../objc-obj-c++-shared/Protocol1.h"
/* Test defining a protocol, and accessing it using @protocol */
@@ -15,7 +16,11 @@ 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 ();
}
diff --git a/gcc/testsuite/objc/execute/formal_protocol-7.m b/gcc/testsuite/objc/execute/formal_protocol-7.m
index 14d7594e163..c4e18500f50 100644
--- a/gcc/testsuite/objc/execute/formal_protocol-7.m
+++ b/gcc/testsuite/objc/execute/formal_protocol-7.m
@@ -1,7 +1,7 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
-#include <objc/Protocol.h>
+
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Protocol1.h"
/* Test defining two protocols, one incorporating the other one. */
diff --git a/gcc/testsuite/objc/execute/forward-1.m b/gcc/testsuite/objc/execute/forward-1.m
index 9306dea7b27..c20f8c4934f 100644
--- a/gcc/testsuite/objc/execute/forward-1.m
+++ b/gcc/testsuite/objc/execute/forward-1.m
@@ -2,20 +2,13 @@
#include <stdio.h>
#include <stdlib.h>
-#include <objc/Object.h>
+
+#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <objc/objc-api.h>
#define VALUETOUSE 1234567890
-#ifdef __NEXT_RUNTIME__
-/* Does not run with the next runtime. */
-int main(void)
-{
- return 0;
-}
-
-#else
-
id forwarder, receiver;
@interface Forwarder: Object
@@ -62,8 +55,13 @@ id forwarder, receiver;
receiver = theReceiver;
return self;
}
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+- forward: (SEL)theSel: (marg_list)theArgFrame
+{
+#else
-(retval_t) forward: (SEL)theSel: (arglist_t)theArgFrame
{
+#endif
/* If we have a reciever try to perform on that object */
if (receiver)
return [receiver performv: theSel: theArgFrame];
@@ -81,5 +79,3 @@ int main()
[forwarder display];
exit(0);
}
-
-#endif
diff --git a/gcc/testsuite/objc/execute/forward-1.x b/gcc/testsuite/objc/execute/forward-1.x
index 0a9bde6bad5..ac4cf7f2799 100644
--- a/gcc/testsuite/objc/execute/forward-1.x
+++ b/gcc/testsuite/objc/execute/forward-1.x
@@ -20,9 +20,8 @@ if { [istarget alpha*-*-linux*]
|| [istarget alpha*-dec-osf*]
|| ([istarget i?86-*-solaris2*] && [check_effective_target_lp64] )
|| [istarget mips-sgi-irix*]
- || [istarget powerpc*-*-darwin*]
|| [istarget sparc*-sun-solaris2*]
- || ([istarget x86_64-*-darwin*] && [check_effective_target_lp64] ) } {
+ || ([istarget *-*-darwin*] && [check_effective_target_lp64] ) } {
set torture_eval_before_execute {
global compiler_conditional_xfail_data
set compiler_conditional_xfail_data {
diff --git a/gcc/testsuite/objc/execute/function-message-1.m b/gcc/testsuite/objc/execute/function-message-1.m
index 2c8c002d9e8..6f4d879201a 100644
--- a/gcc/testsuite/objc/execute/function-message-1.m
+++ b/gcc/testsuite/objc/execute/function-message-1.m
@@ -1,4 +1,4 @@
-#include <objc/Object.h>
+#import "../../objc-obj-c++-shared/Object1.h"
@interface Foo : Object
+ bar;
diff --git a/gcc/testsuite/objc/execute/informal_protocol.m b/gcc/testsuite/objc/execute/informal_protocol.m
index 9815053a2e9..3978e6aa2de 100644
--- a/gcc/testsuite/objc/execute/informal_protocol.m
+++ b/gcc/testsuite/objc/execute/informal_protocol.m
@@ -1,6 +1,6 @@
/* Contributed by Nicola Pero - Fri Mar 9 21:35:47 CET 2001 */
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
@interface Object (StopProtocol)
- (void) stop;
diff --git a/gcc/testsuite/objc/execute/load-3.m b/gcc/testsuite/objc/execute/load-3.m
index e7543930a73..15dfc0b485d 100644
--- a/gcc/testsuite/objc/execute/load-3.m
+++ b/gcc/testsuite/objc/execute/load-3.m
@@ -8,8 +8,9 @@
proper order.
*/
+#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
@interface A : Object
@end
diff --git a/gcc/testsuite/objc/execute/nested-func-1.m b/gcc/testsuite/objc/execute/nested-func-1.m
index c7dd535a3c8..a4c9a561968 100644
--- a/gcc/testsuite/objc/execute/nested-func-1.m
+++ b/gcc/testsuite/objc/execute/nested-func-1.m
@@ -3,8 +3,8 @@
/* Contributed by Ziemowit Laski <zlaski@apple.com>. */
#include <stdio.h>
#include <stdlib.h>
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
int bappy (int (*blargh) (int a, int b, int c))
{
diff --git a/gcc/testsuite/objc/execute/no_clash.m b/gcc/testsuite/objc/execute/no_clash.m
index 7eaa5130727..9cb004d2829 100644
--- a/gcc/testsuite/objc/execute/no_clash.m
+++ b/gcc/testsuite/objc/execute/no_clash.m
@@ -1,6 +1,6 @@
/* Contributed by Nicola Pero - Fri Mar 9 19:39:15 CET 2001 */
-#include <objc/objc.h>
-#include <objc/Object.h>
+#import "../../objc-obj-c++-shared/Object1.h"
+#import <objc/objc.h>
/* Test that using the same name for different things makes no
problem */
diff --git a/gcc/testsuite/objc/execute/np-1.m b/gcc/testsuite/objc/execute/np-1.m
index 6de2623e61b..1cf83ff7fec 100644
--- a/gcc/testsuite/objc/execute/np-1.m
+++ b/gcc/testsuite/objc/execute/np-1.m
@@ -3,8 +3,8 @@
* Tue Sep 19 4:29AM
*/
+#include "../../objc-obj-c++-shared/Protocol1.h"
#include <objc/objc.h>
-#include <objc/Protocol.h>
@protocol MyProtocol
- (oneway void) methodA;
diff --git a/gcc/testsuite/objc/execute/np-2.m b/gcc/testsuite/objc/execute/np-2.m
index 85aa203ca5c..da276be982b 100644
--- a/gcc/testsuite/objc/execute/np-2.m
+++ b/gcc/testsuite/objc/execute/np-2.m
@@ -2,8 +2,8 @@
* 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>
-#include <objc/Protocol.h>
@protocol MyProtocol
+ (oneway void) methodA;
diff --git a/gcc/testsuite/objc/execute/object_is_class.m b/gcc/testsuite/objc/execute/object_is_class.m
index 87deb986497..199517e43a2 100644
--- a/gcc/testsuite/objc/execute/object_is_class.m
+++ b/gcc/testsuite/objc/execute/object_is_class.m
@@ -1,9 +1,8 @@
/* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */
+#import "../../objc-obj-c++-shared/next-mapping.h"
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
#include <objc/objc-api.h>
-#include <objc/Object.h>
-
-#include "next_mapping.h"
/* This test demonstrate a failure in object_is_class which was fixed */
diff --git a/gcc/testsuite/objc/execute/object_is_meta_class.m b/gcc/testsuite/objc/execute/object_is_meta_class.m
index aeb129ef4e5..d5aedca0899 100644
--- a/gcc/testsuite/objc/execute/object_is_meta_class.m
+++ b/gcc/testsuite/objc/execute/object_is_meta_class.m
@@ -1,9 +1,7 @@
/* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */
-#include <objc/objc.h>
+#import "../../objc-obj-c++-shared/Object1.h"
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <objc/objc-api.h>
-#include <objc/Object.h>
-
-#include "next_mapping.h"
/* This test demonstrate a failure in object_is_meta_class which was fixed */
diff --git a/gcc/testsuite/objc/execute/private.m b/gcc/testsuite/objc/execute/private.m
index 02cc23498bd..5040ccec4a2 100644
--- a/gcc/testsuite/objc/execute/private.m
+++ b/gcc/testsuite/objc/execute/private.m
@@ -1,6 +1,6 @@
/* Contributed by Nicola Pero - Fri Mar 9 19:39:15 CET 2001 */
+#import "../../objc-obj-c++-shared/Object1.h"
#include <objc/objc.h>
-#include <objc/Object.h>
/* Test the @private, @protected, @public keyworks for ivars. We only
check syntax. */
diff --git a/gcc/testsuite/objc/execute/protocol-isEqual-1.m b/gcc/testsuite/objc/execute/protocol-isEqual-1.m
index df1382d3395..29b5c3ded78 100644
--- a/gcc/testsuite/objc/execute/protocol-isEqual-1.m
+++ b/gcc/testsuite/objc/execute/protocol-isEqual-1.m
@@ -1,6 +1,6 @@
/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
/* Test that a protocol is equal to itself. */
-#include <objc/Protocol.h>
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol Foo
- (void)foo;
@@ -10,7 +10,11 @@ int main (void)
{
Protocol *protocol = @protocol(Foo);
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ if ( !protocol_isEqual (protocol, protocol))
+#else
if (! [protocol isEqual: protocol])
+#endif
{
abort ();
}
diff --git a/gcc/testsuite/objc/execute/protocol-isEqual-2.m b/gcc/testsuite/objc/execute/protocol-isEqual-2.m
index 035ab3b685c..70ab8ccdd1e 100644
--- a/gcc/testsuite/objc/execute/protocol-isEqual-2.m
+++ b/gcc/testsuite/objc/execute/protocol-isEqual-2.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
/* Test that protocols with different names are different. */
-#include <objc/Protocol.h>
+
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol Foo1
- (void)foo1;
@@ -12,7 +13,11 @@
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 ();
}
diff --git a/gcc/testsuite/objc/execute/protocol-isEqual-3.m b/gcc/testsuite/objc/execute/protocol-isEqual-3.m
index 2827448a98f..23863829440 100644
--- a/gcc/testsuite/objc/execute/protocol-isEqual-3.m
+++ b/gcc/testsuite/objc/execute/protocol-isEqual-3.m
@@ -1,6 +1,7 @@
/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
/* Test that a protocol is not equal to nil. */
-#include <objc/Protocol.h>
+
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol Foo
- (void)foo;
@@ -8,7 +9,11 @@
int main (void)
{
+#ifdef NEXT_OBJC_USE_NEW_INTERFACE
+ if (protocol_isEqual (@protocol(Foo), nil))
+#else
if ([@protocol(Foo) isEqual: nil])
+#endif
{
abort ();
}
diff --git a/gcc/testsuite/objc/execute/protocol-isEqual-4.m b/gcc/testsuite/objc/execute/protocol-isEqual-4.m
index 58ec1083600..4d5af640e46 100644
--- a/gcc/testsuite/objc/execute/protocol-isEqual-4.m
+++ b/gcc/testsuite/objc/execute/protocol-isEqual-4.m
@@ -1,6 +1,7 @@
/* 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/Protocol.h>
+
+#include "../../objc-obj-c++-shared/Protocol1.h"
@protocol Foo
- (void)foo;
@@ -9,7 +10,11 @@
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
{
abort ();
}
diff --git a/gcc/testsuite/objc/execute/root_methods.m b/gcc/testsuite/objc/execute/root_methods.m
index c18ceb07284..d9085ae7b04 100644
--- a/gcc/testsuite/objc/execute/root_methods.m
+++ b/gcc/testsuite/objc/execute/root_methods.m
@@ -1,7 +1,7 @@
/* Contributed by Nicola Pero - Thu Mar 8 16:27:46 CET 2001 */
-#include <objc/objc.h>
-#include "next_mapping.h"
+#import "../../objc-obj-c++-shared/next-mapping.h"
+#import <objc/objc.h>
/* Test that instance methods of root classes are available as class
methods to other classes as well */
diff --git a/gcc/testsuite/objc/execute/string1.m b/gcc/testsuite/objc/execute/string1.m
index ac49bd1f4f3..acc486ab21f 100644
--- a/gcc/testsuite/objc/execute/string1.m
+++ b/gcc/testsuite/objc/execute/string1.m
@@ -1,11 +1,10 @@
/* Based on a test case contributed by Nicola Pero. */
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <string.h>
#include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-#include "next_mapping.h"
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string2.m b/gcc/testsuite/objc/execute/string2.m
index 63b0e9b8056..32e70616916 100644
--- a/gcc/testsuite/objc/execute/string2.m
+++ b/gcc/testsuite/objc/execute/string2.m
@@ -1,11 +1,10 @@
/* Based on a test case contributed by Nicola Pero. */
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <string.h>
#include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-#include "next_mapping.h"
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string3.m b/gcc/testsuite/objc/execute/string3.m
index 442952478b7..2595a09c19a 100644
--- a/gcc/testsuite/objc/execute/string3.m
+++ b/gcc/testsuite/objc/execute/string3.m
@@ -1,11 +1,10 @@
/* Based on a test case contributed by Nicola Pero. */
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <string.h>
#include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-#include "next_mapping.h"
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string4.m b/gcc/testsuite/objc/execute/string4.m
index 87b081c084d..a7bcf431d52 100644
--- a/gcc/testsuite/objc/execute/string4.m
+++ b/gcc/testsuite/objc/execute/string4.m
@@ -1,11 +1,10 @@
/* Based on a test case contributed by Nicola Pero. */
+#import "../../objc-obj-c++-shared/next-mapping.h"
#include <string.h>
#include <stdlib.h>
-#ifdef __NEXT_RUNTIME__
-#include "next_mapping.h"
-#else
+#ifndef __NEXT_RUNTIME__
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/trivial.m b/gcc/testsuite/objc/execute/trivial.m
index f1dce2c1e2b..0fc61dbe564 100644
--- a/gcc/testsuite/objc/execute/trivial.m
+++ b/gcc/testsuite/objc/execute/trivial.m
@@ -1,7 +1,9 @@
-#import <objc/Object.h>
+#import "../../objc-obj-c++-shared/Object1.h"
int main(void)
{
[Object class];
return 0;
}
+
+#import "../../objc-obj-c++-shared/Object1-implementation.h"