aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Ayers <d.ayers@inode.at>2004-06-07 10:48:31 +0200
committerZiemowit Laski <zlaski@gcc.gnu.org>2004-06-07 08:48:31 +0000
commite9c5d1c084d89a5c8ea21c34ecb4d4b6703e7d16 (patch)
tree9d3fadc84b3f1fc1ecb1276a82fc5e1d092a04b0 /gcc
parent2af5538b14e4149ad9e09c3ef1a0ee4735cafb80 (diff)
downloadgcc-e9c5d1c084d89a5c8ea21c34ecb4d4b6703e7d16.zip
gcc-e9c5d1c084d89a5c8ea21c34ecb4d4b6703e7d16.tar.gz
gcc-e9c5d1c084d89a5c8ea21c34ecb4d4b6703e7d16.tar.bz2
objc.exp (objc_target_compile): Revert the '-framework Foundation' flag fix...
[gcc/testsuite/ChangeLog] 2004-06-07 David Ayers <d.ayers@inode.at> Ziemowit Laski <zlaski@apple.com> * lib/objc.exp (objc_target_compile): Revert the '-framework Foundation' flag fix, since bare Darwin does not ship with the Foundation framework. * objc/execute/next_mapping.h: Provide a local NSConstantString @interface and @implementation. (objc_constant_string_init): A constructor function, used to initialize the NSConstantString meta-class object. * objc/execute/string1.m: Include "next_mapping.h" instead of <Foundation/NSString.h>. * objc/execute/string2.m: Likewise. * objc/execute/string3.m: Likewise. * objc/execute/string4.m: Likewise. Co-Authored-By: Ziemowit Laski <zlaski@apple.com> From-SVN: r82685
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog16
-rw-r--r--gcc/testsuite/lib/objc.exp9
-rw-r--r--gcc/testsuite/objc/execute/next_mapping.h52
-rw-r--r--gcc/testsuite/objc/execute/string1.m2
-rw-r--r--gcc/testsuite/objc/execute/string2.m2
-rw-r--r--gcc/testsuite/objc/execute/string3.m2
-rw-r--r--gcc/testsuite/objc/execute/string4.m2
7 files changed, 71 insertions, 14 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8d6561f..55cd094 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2004-06-07 David Ayers <d.ayers@inode.at>
+ Ziemowit Laski <zlaski@apple.com>
+
+ * lib/objc.exp (objc_target_compile): Revert the '-framework
+ Foundation' flag fix, since bare Darwin does not ship
+ with the Foundation framework.
+ * objc/execute/next_mapping.h: Provide a local NSConstantString
+ @interface and @implementation.
+ (objc_string_init): A constructor function, used to initialize
+ the NSConstantString meta-class object.
+ * objc/execute/string1.m: Include "next_mapping.h" instead of
+ <Foundation/NSString.h>.
+ * objc/execute/string2.m: Likewise.
+ * objc/execute/string3.m: Likewise.
+ * objc/execute/string4.m: Likewise.
+
2004-06-06 H.J. Lu <hongjiu.lu@intel.com>
* gcc.c-torture/execute/ieee/fp-cmp-4.c (FLOAT): New. Default
diff --git a/gcc/testsuite/lib/objc.exp b/gcc/testsuite/lib/objc.exp
index d75f6f5..1b6c10d 100644
--- a/gcc/testsuite/lib/objc.exp
+++ b/gcc/testsuite/lib/objc.exp
@@ -144,7 +144,6 @@ proc objc_target_compile { source dest type options } {
global TOOL_OPTIONS
global ld_library_path
global objc_libgcc_s_path
- global target_triplet
set ld_library_path ".:${objc_libgcc_s_path}"
lappend options "libs=-lobjc"
@@ -183,14 +182,6 @@ proc objc_target_compile { source dest type options } {
lappend options "additional_flags=${objc_link_flags}"
append ld_library_path ":${libobjc_dir}"
}
-
- # If we are running on Darwin, we'll need to point the linker at
- # the Foundation framework, where many goodies (e.g., NSConstantString)
- # reside.
- if { [string match "*-*-darwin*" $target_triplet] } {
- lappend options "libs=-framework Foundation"
- }
-
lappend options "compiler=$OBJC_UNDER_TEST"
# On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
diff --git a/gcc/testsuite/objc/execute/next_mapping.h b/gcc/testsuite/objc/execute/next_mapping.h
index 67c2ce3..0a36189 100644
--- a/gcc/testsuite/objc/execute/next_mapping.h
+++ b/gcc/testsuite/objc/execute/next_mapping.h
@@ -1,10 +1,12 @@
/* This file "renames" various ObjC GNU runtime entry points
(and fakes the existence of several others)
if the NeXT runtime is being used. */
-/* Author: Ziemowit Laski <zlaski@apple.com> */
+/* Authors: Ziemowit Laski <zlaski@apple.com> */
+/* David Ayers <d.ayers@inode.at> */
#ifdef __NEXT_RUNTIME__
#include <objc/objc-class.h>
+#include <objc/Object.h>
#include <ctype.h>
#define objc_get_class(C) objc_getClass(C)
@@ -848,4 +850,52 @@ void objc_layout_structure_get_info (struct objc_struct_layout *layout,
*type = layout->prev_type;
}
+/* A small, portable NSConstantString implementation for use with the NeXT
+ runtime.
+
+ On full-fledged Mac OS X systems, NSConstantString is provided
+ as part of the Foundation framework. However, on bare Darwin systems,
+ Foundation is not included, and hence there is no NSConstantString
+ implementation to link against.
+
+ This code is derived from the GNU runtime's NXConstantString implementation.
+*/
+
+struct objc_class _NSConstantStringClassReference;
+
+@interface NSConstantString : Object
+{
+ char *c_string;
+ unsigned int len;
+}
+
+-(const char *) cString;
+-(unsigned int) length;
+
+@end
+
+@implementation NSConstantString
+
+-(const char *) cString
+{
+ return (c_string);
+}
+
+-(unsigned int) length
+{
+ return (len);
+}
+
+@end
+
+/* The NSConstantString metaclass will need to be initialized before we can
+ send messages to strings. */
+
+void objc_constant_string_init (void) __attribute__((constructor));
+void objc_constant_string_init (void) {
+ memcpy (&_NSConstantStringClassReference,
+ objc_getClass ("NSConstantString"),
+ sizeof (_NSConstantStringClassReference));
+}
+
#endif /* #ifdef __NEXT_RUNTIME__ */
diff --git a/gcc/testsuite/objc/execute/string1.m b/gcc/testsuite/objc/execute/string1.m
index 58a603c..ac49bd1 100644
--- a/gcc/testsuite/objc/execute/string1.m
+++ b/gcc/testsuite/objc/execute/string1.m
@@ -4,7 +4,7 @@
#include <stdlib.h>
#ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
#else
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string2.m b/gcc/testsuite/objc/execute/string2.m
index 01fb85c..63b0e9b 100644
--- a/gcc/testsuite/objc/execute/string2.m
+++ b/gcc/testsuite/objc/execute/string2.m
@@ -4,7 +4,7 @@
#include <stdlib.h>
#ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
#else
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string3.m b/gcc/testsuite/objc/execute/string3.m
index a8d2969..4429524 100644
--- a/gcc/testsuite/objc/execute/string3.m
+++ b/gcc/testsuite/objc/execute/string3.m
@@ -4,7 +4,7 @@
#include <stdlib.h>
#ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
#else
#include <objc/NXConstStr.h>
#endif
diff --git a/gcc/testsuite/objc/execute/string4.m b/gcc/testsuite/objc/execute/string4.m
index 16025cb..87b081c 100644
--- a/gcc/testsuite/objc/execute/string4.m
+++ b/gcc/testsuite/objc/execute/string4.m
@@ -4,7 +4,7 @@
#include <stdlib.h>
#ifdef __NEXT_RUNTIME__
-#import <Foundation/NSString.h>
+#include "next_mapping.h"
#else
#include <objc/NXConstStr.h>
#endif