ObjFW  Check-in [546332b4d7]

Overview
Comment:Always use the old GNU API, even with the new GNU runtime.

The new API of the new GNU runtime is currently too broken to be of any
use, thus we even use the old API when the new one is detected until
the new one has been fixed and offers a way to detect if it is the fixed
one.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 546332b4d790b91927ab7032a75642df964cf578c215dce761dafa2e606f4959
User & Date: js on 2011-08-03 03:53:03
Other Links: manifest | tags
Context
2011-08-03
04:14
Use the well hidden __objc_update_dispatch_table_for_class() function. check-in: 3f0940e36d user: js tags: trunk
03:53
Always use the old GNU API, even with the new GNU runtime. check-in: 546332b4d7 user: js tags: trunk
03:38
Fix updating the dtable for the old GNU runtime. check-in: 0322aa3168 user: js tags: trunk
Changes

Modified configure.ac from [31e53b80c3] to [235ed393ab].

162
163
164
165
166
167
168




169
170


171
172
173
174
175
176
177
		AC_CHECK_LIB(objc, objc_msgSend, [
			LIBS="-lobjc $LIBS"
		], [
			AC_MSG_ERROR([libobjc not found!])
		])
		;;
	GNU)




		AC_DEFINE(OF_GNU_RUNTIME, 1,
			[Whether we use the GNU ObjC runtime])



		AC_CHECK_LIB(objc, objc_msg_lookup, [
			LIBS="-lobjc $LIBS"
		], [
			AC_MSG_ERROR([libobjc not found!])
		])
		;;







>
>
>
>
|
|
>
>







162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
		AC_CHECK_LIB(objc, objc_msgSend, [
			LIBS="-lobjc $LIBS"
		], [
			AC_MSG_ERROR([libobjc not found!])
		])
		;;
	GNU)
		# The new API of the new GNU runtime is currently too broken to
		# be of any use, thus we even use the old API when the new one
		# is detected until the new one has been fixed and offers a way
		# to detect if it is the fixed one.
		dnl AC_DEFINE(OF_GNU_RUNTIME, 1,
		dnl	[Whether we use the GNU ObjC runtime])
		AC_DEFINE(OF_OLD_GNU_RUNTIME, 1,
			[Whether we use the old GNU ObjC runtime])

		AC_CHECK_LIB(objc, objc_msg_lookup, [
			LIBS="-lobjc $LIBS"
		], [
			AC_MSG_ERROR([libobjc not found!])
		])
		;;

Modified src/OFObject.m from [ec4f3dc978] to [4d946cf26f].

105
106
107
108
109
110
111




112
113
114
115
116
117
118
#ifndef HAVE_OBJC_ENUMERATIONMUTATION
void
objc_enumerationMutation(id object)
{
	enumeration_mutation_handler(object);
}
#endif





const char*
_NSPrintForDebugger(id object)
{
	return [[object description] cString];
}








>
>
>
>







105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#ifndef HAVE_OBJC_ENUMERATIONMUTATION
void
objc_enumerationMutation(id object)
{
	enumeration_mutation_handler(object);
}
#endif

#if defined(HAVE_OBJC_ENUMERATIONMUTATION) && defined(OF_OLD_GNU_RUNTIME)
extern void objc_setEnumerationMutationHandler(void(*handler)(id));
#endif

const char*
_NSPrintForDebugger(id object)
{
	return [[object description] cString];
}

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
	if (!objc_properties_init()) {
		fputs("Runtime error: objc_properties_init() failed!\n",
		    stderr);
		abort();
	}
#endif

#if defined(OF_APPLE_RUNTIME) || defined(OF_GNU_RUNTIME)
	objc_setEnumerationMutationHandler(enumeration_mutation_handler);
#endif

	cxx_construct = sel_registerName(".cxx_construct");
	cxx_destruct = sel_registerName(".cxx_destruct");

	if (cxx_construct == NULL || cxx_destruct == NULL) {







|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
	if (!objc_properties_init()) {
		fputs("Runtime error: objc_properties_init() failed!\n",
		    stderr);
		abort();
	}
#endif

#ifdef HAVE_OBJC_ENUMERATIONMUTATION
	objc_setEnumerationMutationHandler(enumeration_mutation_handler);
#endif

	cxx_construct = sel_registerName(".cxx_construct");
	cxx_destruct = sel_registerName(".cxx_destruct");

	if (cxx_construct == NULL || cxx_destruct == NULL) {