diff options
author | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-25 22:25:05 +0000 |
---|---|---|
committer | janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-03-25 22:25:05 +0000 |
commit | 18f8dbe74b49c291655de89aa2ee8a7d018e22e2 (patch) | |
tree | f2c57b88352f30e9bd481510ae4e07680330dffd /gcc/testsuite | |
parent | 48317e5a90c6f55ef9e3b75e941df9f99ce75555 (diff) | |
download | gcc-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')
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" |