2015-12-04  Release Manager

	* GCC 5.3.0 released.

2015-07-16  Release Manager

	* GCC 5.2.0 released.

2015-04-22  Release Manager

	* GCC 5.1.0 released.

2015-02-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libobjc/63765
	* thr.c (_XOPEN_SOURCE): Remove.

2015-01-27  Matthias Klose  <doko@ubuntu.com>

	* sendmsg.c: Add prototypes for __objc_get_forward_imp and get_imp.

2015-01-09  Dimitris Papavasiliou  <dpapavas@gmail.com>

	PR libobjc/51891
	* ivars.c: Add a check for classes without instance
	variables, which have a NULL ivar list pointer.

2015-01-05  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2014-11-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/63784
	* configure: Regenerated.

2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR target/63610
	* configure: Regenerate.

2014-11-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* thr.c (_XOPEN_SOURCE): Define as 600.

2014-07-27  Alan Modra  <amodra@gmail.com>
	    Matthias Klose  <doko@ubuntu.com>

	PR libobjc/61920

	* encoding.c: Define rs6000_special_adjust_field_align_p.

2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>

	Update copyright years

2013-09-20  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2013-07-21   OndÅej BÃ­lka  <neleai@seznam.cz>

	* class.c: Fix typos.
	* encoding.c: Likewise.
	* init.c: Likewise.
	* objc-private/runtime.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc-sync.c: Likewise.

2013-07-04  Kai Tietz  <ktietz@redhat.com>

	* exception.c: Add check for SjLj to SEH blocks.

2013-02-03  Richard Sandiford  <rdsandiford@googlemail.com>

	Update copyright years.

2012-10-19  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* encoding.c (TARGET_VSX): Provide definitions based on the
	current compilation options, and not based off the target options
	structure.
	(TARGET_ALTIVEC): Likewise.
	(TARGET_64BIT): Likewise.

2012-09-14  David Edelsohn  <dje.gcc@gmail.com>

	* configure: Regenerated.

2012-07-19  Tristan Gingold  <gingold@adacore.com>
	    Richard Henderson  <rth@redhat.com>

	* exception.c (__gnu_objc_personality_seh0): New function.

2012-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

2012-03-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* configure.ac (enable_objc_gc): Remove alpha*-dec-osf* handling.
	* configure: Regenerate.

	* thr.c (_XOPEN_SOURCE): Define unconditionally.

2011-11-21  Andreas Tobler  <andreast@fgznet.ch>

	* configure: Regenerate.

2011-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.in (INCLUDES): Add -I$(MULTIBUILDTOP)../libgcc.
	* configure.ac (target_thread_file, HAVE_GTHR_DEFAULT): Remove.
	* configure: Regenerate.
	* config.h.in: Regenerate.

2011-10-17  Paul Brook  <paul@codesourcery.com>
	    Matthias Klose  <doko@ubuntu.com>

	* exception.c (parse_lsda_header): hardcode ttype_encoding for older
	ARM EABI toolchains.
	(get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant.

2011-10-09  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/49883
	* init.c (__objc_exec_class): Work around a bug in clang's code
	generation.  Clang sets the class->info field to values different
	from 0x1 or 0x2 (the only allowed values in the traditional GNU
	Objective-C runtime ABI) to store some additional information, but
	this breaks backwards compatibility.  Wipe out all the bits in the
	fields other than the first two upon loading a class.

2011-10-09  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (objc_lookup_class): Added back for compatibility with
	clang which seems to emit calls to it.

2011-10-08  Richard Frith-Macdonald <rfm@gnu.org>
            Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/50428
	* sendmsg.c (__objc_send_initialize): If a class does not have an
	+initialize method, search for an +initialize method in the
	superclass and in the ancestor classes and execute the first one
	that is found.  This makes the GNU runtime behave in the same way
	as the Apple/NeXT runtime with respect to +initialize methods and
	subclassing.

2011-08-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/50002
	* class.c (__objc_update_classes_with_methods): Iterate over meta
	classes as well as normal classes when refreshing the method
	implementations.  This fixes replacing class methods.

2011-08-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (class_getSuperclass): Fixed to work with meta classes
	still in construction too.

2011-08-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (class_getSuperclass): Fixed typo in comment.
	
2011-08-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/49882
	* class.c (class_getSuperclass): Return the superclass if the
	class is in construction.
	* objc/runtime.h (class_getSuperclass): Updated documentation.

2011-08-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.in (INCLUDES): Search
	$(srcdir)/$(MULTISRCTOP)../libgcc.

2011-06-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc.h (__GNU_LIBOBJC__): Bumped to 20110608.

2011-06-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* configure.ac (VERSION): Bumped to 4:0:0.
	* configure (VERSION): Likewise.

2011-06-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/README: Updated.
	* objc-private/selector.h: Updated comments.
	
2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c (class_get_instance_method): Removed.
	(class_get_class_method): Removed.
	(objc_get_uninstalled_dtable): Removed.

2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/module-abi-8.h (class_get_instance_size): Removed.
	* objects.c (class_create_instance): Removed.
	* error.c (__USE_FIXED_PROTOTYPES__): Removed.
	* gc.c (__objc_generate_gc_type_description): Use
	class_getInstanceSize() instead of class_get_instance_size().
	* selector.c (sel_types_match): Made static.
	(sel_get_typed_uid): Removed.
	(sel_get_any_typed_uid): Removed.
	(sel_get_name): Removed.
	(sel_get_type): Removed.
	(sel_register_name): Removed.
	(sel_register_typed_name): Removed.
	(sel_get_uid): Removed.

2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	* encoding.c (method_get_number_of_arguments): Removed.
	(method_get_sizeof_arguments): Removed.

2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (objc_next_class): Removed.
	(class_pose_as): Removed.
	(CLASSOF): Removed.
	(class_table_replace): Removed.
	(objc_lookup_class): Removed.

2011-06-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	Removed the Traditional Objective-C runtime public API.
	* Makefile.in (OBJC_DEPRECATED_H): Variable removed.
	(install-headers): Do not create the objc/deprecated directory and
	do not install the deprecated headers.
	(OBJC_H): Removed encoding.h and objc-api.h.
	* Object.m: Removed all methods with the exception of -class and
	-isEqual:.  Updated includes.  ([-class]): Use Modern API.
	* objc/Object.h: Do not include deprecated/Object.h.
	* objc/deprecated/Object.h: Removed.
	* linking.m (__objc_linking): Call [Object class] instead of
	[Object name].
	* Protocol.m: Removed all methods with the exception of -isEqual:.
	Updated includes.
	* objc/Protocol.h: Do not include deprecated/Protocol.h.
	* objc/deprecated/Protocol.h: Removed.
	* objc/deprecated/struct_objc_symtab.h: Removed.
	* objc/deprecated/struct_objc_module.h: Removed.
	* objc/deprecated/struct_objc_ivar.h: Removed.
	* objc/deprecated/struct_objc_ivar_list.h: Removed.
	* objc/deprecated/struct_objc_method.h: Removed.
	* objc/deprecated/struct_objc_method_list.h: Removed.
	* objc/deprecated/struct_objc_protocol_list.h: Removed.
	* objc/deprecated/struct_objc_category.h: Removed.
	* objc/deprecated/MetaClass.h: Removed.
	* objc/deprecated/objc_msg_sendv.h: Removed.  
	* objc/deprecated/README: Removed.
	* objc/deprecated/struct_objc_class.h: Removed.
	* objc/deprecated/struct_objc_protocol.h: Removed.
	* objc/deprecated/struct_objc_selector.h: Removed.
	* objc/encoding.h: Removed.
	* objc/message.h (struct objc_super): Removed the definition for
	the Traditional Objective-C runtime API.
	* objc/objc.h: Do not include objc/objc-decls.h.
	deprecated/struct_objc_selector.h, deprecated/MetaClass.h,
	deprecated/struct_objc_class.h, deprecated/struct_objc_protocol.h
	and deprecated/objc_msg_sendv.h.  Uncommented new definition of
	Protocol *.
	* objc/objc-api.h: Removed.
	* objc/runtime.h: Updated comments.  Removed check to detect
	concurrent usage of Traditional and Modern APIs.
	* objc-private/module-abi-8.h: Always define struct objc_class and
	struct objc_protocol.  (struct objc_protocol_list): Changed type
	of 'list' argument from 'Protocol *' to 'struct objc_protocol *'.
	(class_get_instance_size): Added.
	* objc-private/protocols.h (__objc_protocols_add_protocol): Take a
	'struct objc_protocol *' as argument, not a 'Protocol *'.
	* objc-private/runtime.h: Updated comments.
	* objc-private/selector.h (struct objc_selector, sel_eq): Added.
	* class.c: Include objc-private/selector.h.
	(objc_get_meta_class): Return a Class instead of a MetaClass.
	* encoding.c (method_get_next_argument): Removed.
	(method_get_first_argument): Removed.
	(method_get_nth_argument): Removed.
	* gc.c: Include objc/runtime.h instead of objc/encoding.h.
	Include objc-private/module-abi-8.h and ctype.h.
	* protocols.c (__objc_protocols_add_protocol): Take a 'struct
	objc_protocl *' as argument, not a 'Protocol *'.
	(class_addProtocol): Added casts to 'struct objc_protocol *' and
	'Protocol *'.
	(class_copyProtocolList): Likewise.
	(protocol_conformsToProtocol): Likewise.
	(protocol_copyProtocolList): Likewise.
	* sarray.c: Include objc-private/module-abi-8.h.
	* sendmsg.c (method_get_next_argument): Removed.
	(method_get_first_argument): Removed.
	(method_get_nth_argument): Removed.
	(objc_msg_sendv): Removed.
	(arglist_t, retval_t): New.  (class_get_class_method): Take a
	'Class', not 'MetaClass', argument.
	* thr.c: Include module-abi-8.h.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Removed struct_objc_static_instances.h
	and objc_get_uninstalled_dtable.h.
	* objc/deprecated/struct_objc_static_instances.h: Removed.
	* objc/deprecated/objc_get_uninstalled_dtable.h: Removed.	
	* objc/objc-api.h: Do not include deprecated/objc_static_instances.h
	and deprecated/objc_get_uninstalled_dtable.h.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Removed objc_object_alloc.h.
	* objc/deprecated/objc_object_alloc.h: Removed.
	* objc/objc-api.h: Do not include deprecated/objc_object_alloc.h.
	* objects.c (_objc_object_alloc, _objc_object_dispose,
	_objc_object_copy): Removed.
	* libobjc.def (__objc_object_alloc, __objc_object_copy,
	__objc_object_dispose): Removed.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Removed METHOD_NULL.h.
	* objc/objc-api.h: Do not include deprecated/METHOD_NULL.h.
	* objc/deprecated/METHOD_NULL.h: Removed.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Removed objc_valloc.h,
	objc_malloc.h and objc_unexpected_exception.h.
	(exception.lo): Do not use -Wno-deprecated-declarations.
	(exception_gc.lo): Likewise.
	* objc/objc-api.h: Do not include deprecated/objc_valloc.h,
	deprecated/objc_malloc.h and
	deprecated/objc_unexpected_exception.h.
	* objc/deprecated/objc_valloc.h: Removed.
	* objc/deprecated/objc_malloc.h: Removed.
	* objc/deprecated/objc_unexpected_exception.h: Removed.
	* exception.c (_objc_unexpected_exception): Removed.
	(objc_exception_throw): Do not check for
	_objc_unexpected_exception.
	* memory.c (objc_valloc, _objc_malloc, _objc_atomic_malloc,
	_objc_valloc, _objc_realloc, _objc_calloc, _objc_free): Removed.	
	* libobjc.def (_objc_unexpected_exception, objc_valloc): Removed.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc.h: Do not include deprecated/STR.h.
	* objc/deprecated/STR.h: Removed.
	* Makefile.in (OBJC_DEPRECATED_H): removed STR.h.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_H): Removed hash.h and sarray.h.
	(OBJC_DEPRECATED_H): Likewise.
	* libobjc.def (objc_hash_new, objc_hash_delete, objc_hash_add,
	objc_hash_remove, objc_hash_next, objc_hash_value_for_key,
	objc_hash_is_key_in_hash, hash_add, hash_delete, hash_new,
	hash_next, hash_remove, hash_value_for_key, hash_is_key_in_hash,
	sarray_at_put, sarray_at_put_safe, sarray_free, sarray_lazy_copy,
	sarray_new, sarray_realloc, sarray_remove_garbage): Removed.
	* objc/sarray.h: Removed.
	* objc/hash.h: Removed.
	* objc/deprecated/sarray.h: Removed.
	* objc/deprecated/hash.h: Removed.
	* objc/Object.h: Do not include objc/deprecated/hash.h
	* Object.m: Include string.h.
	* objc/objc-api.h: Do not include objc/deprecated/hash.h.
	* objc-private/common.h (GNU_LIBOBJC_COMPILING_LIBOBJC_ITSELF):
	Removed.

2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Object.m ([-forward::]): Removed.
	* objc/deprecated/Object.h ([-forward::]): Removed.
	* sendmsg.c (__objc_forward): Updated comments.
	
2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_H): Removed objc-list.h.
	(OBJC_DEPRECATED_H): Removed objc-list.h.
	* objc/objc-list.h: File removed.
	* objc/deprecated/objc-list.h: File removed.

2011-06-03  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_H): Removed typedstream.h.
	(OBJC_DEPRECATED_H): Removed typedstream.h.
	(C_SOURCE_FILES): Removed archive.c.
	(Object.lo): Rule removed.
	(Object_gc.lo): Likewise.
	(archive.lo): Likewise.
	(archive_gc.lo): Likewise.
	* objc/deprecated/Object.h ([+streamVersion:], [-read], [-write],
	[-awake]): Removed.
	Do not include deprecated/typedstream.h.
	* Object.m: Removed the same methods.
	* archive.c: File removed.
	* objc/typedstream.h: File removed.
	* objc/deprecated/typedstream.h: File removed.
	* libobjc.def (__objc_read_nbyte_uint, __objc_read_nbyte_ulong,
	__objc_write_class, __objc_write_object, __objc_write_selector,
	objc_close_typed_stream, objc_end_of_typed_stream,
	objc_flush_typed_stream, objc_get_stream_class_version,
	objc_open_typed_stream, objc_open_typed_stream_for_file,
	objc_read_array, objc_read_char, objc_read_int, objc_read_long,
	objc_read_object, objc_read_selector, objc_read_short,
	objc_read_string, objc_read_type, objc_read_types,
	objc_read_unsigned_char, objc_read_unsigned_int,
	objc_read_unsigned_long, objc_read_unsigned_short,
	objc_write_array, objc_write_char, objc_write_int,
	objc_write_long, objc_write_object, objc_write_object_reference,
	objc_write_root_object, objc_write_selector, objc_write_short,
	objc_write_string, objc_write_string_atomic, objc_write_type,
	objc_write_types, objc_write_unsigned_char,
	objc_write_unsigned_int, objc_write_unsigned_long,
	objc_write_unsigned_short): Removed.
	
2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Removed objc_error.h.
	* objc/deprecated/objc_error.h: Removed.
	* objc/objc-api.h: Do not include deprecated/objc_error.h.
	* libobjc.def (objc_error, objc_verror): Removed.
	* error.c (_objc_error_handler, objc_error, objc_verror,
	objc_set_error_handler): Removed.
	* Object.m ([-error:], [-perform:], [-perform:with:],
	[-perform:with:with], [-subclassResponsibility:],
	[-notImplemented:], [-shouldNotImplement:], [-doesNotRecognize:]):
	Removed.
	* objc/deprecated/Object.h: Removed the same methods.
	* sendmsg.c (__objc_forward): Do not try to invoke the "error:"
	method after trying to invoke the "doesNotRecognize:" method.
	
2011-05-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c: Reindented part of the file.  No non-trivial changes
	in code.

2011-05-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c (__objc_install_dtable_for_class): Use objc_getClass,
	not objc_lookup_class.

2011-05-25  Richard Frith-Macdonald <rfm@gnu.org>
	    David Ayers  <ayers@fsfe.org>

	PR libobjc/38307
	* sendmsg.c: Include objc/hash.h.
	(get_implementation): New function, mostly with code from get_imp
	updated to support the new +initialize dispatch table logic.
	(get_imp): Use get_implementation.
	(__objc_responds_to): Updated to support the new +initialize
	dispatch table logic.
	(class_respondsToSelector): Likewise.
	(objc_msg_lookup): Use get_implementation.
	(__objc_init_install_dtable): Removed.
	(__objc_install_methods_in_dtable): Updated arguments.
	(__objc_install_dispatch_table_for_class): Renamed to
	__objc_install_dtable_for_class and updated to support the new
	+initialize dispatch table logic.
	(__objc_update_dispatch_table_for_class): Updated to support the
	new +initialize dispatch table logic.
	(__objc_forward): Call get_implementation instead of get_imp.
	(prepared_dtable_table): New.
	(__objc_prepare_dtable_for_class): New.	
	(__objc_prepared_dtable_for_class): New.
	(__objc_get_prepared_imp): New.
	(__objc_install_prepared_dtable_for_class): New.
	
2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/48177
	* selector.c (__sel_register_typed_name): Use sel_types_match()
	instead of strcmp() to compare selector types (Suggestion by
	Richard Frith-Macdonald <rfm@gnu.org>).

2011-04-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libobjc/32037
	* Makefile.in (OBJC_GCFLAGS): Move ...
	* configure.ac (enable_objc_gc): ... here.
	Add $(libsuffix) to OBJC_BOEHM_GC.
	* configure: Regenerate.

2011-02-28  Nicola Pero  <nicola.pero@meta-innovation.com>
	
	* selector.c (sel_getTypedSelector): Return NULL if there are
	multiple selectors with conflicting types.
	* objc/runtime.h (sel_getTypedSelector): Updated documentation.
	
2011-02-28  Richard Frith-Macdonald <rfm@gnu.org>

	PR libobjc/47922
	* gc.c (class_ivar_set_gcinvisible): Use _C_GCINVISIBLE instead of
	a hardcoded "!".

2011-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2010-12-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (create_tree_of_subclasses_inherited_from): Use
	class_superclass_of_class instead of assuming a class is
	unresolved when it could be resolved.  Tidied up assignment and
	check.
	(__objc_tree_insert_class): Enhanced DEBUG_PRINTF.
	(objc_tree_insert_class): Tidied up loop; return immediately upon
	inserting a class.
	(__objc_exec_class): Do not set __objc_class_tree_list.
	
2010-12-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* selector.c (sel_getTypedSelector): Return NULL if given a NULL
	argument.
	(sel_registerTypedName): Same.
	(sel_registerName): Same.
	* objc/runtime.h: Updated documentation.
	
2010-12-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h (class_addIvar): Updated documentation.  The
	alignment is actually the log_2 of the alignment in bytes.
	* ivars.c (class_addIvar): Corresponding change to the
	implementation.
	
2010-12-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h (sel_getType): Renamed to sel_getTypeEncoding to
	be consistent with method_getTypeEncoding and
	ivar_getTypeEncoding.
	(sel_copyTypedSelectorList, sel_getTypedSelector): New.
	* selector.c (sel_getType): Renamed to sel_getTypeEncoding.
	(sel_copyTypedSelectorList, sel_getTypedSelector): New.
	(sel_get_type): Updated call to sel_getType.
	
2010-12-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h (class_conformsToProtocol,
	class_copyProtocolList): Updated documentation.

2010-12-23  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (create_tree_of_subclasses_inherited_from): Updated
	DEBUG_PRINTF messages.
	(__objc_tree_insert_class): Same.
	(__objc_send_load_using_method_list): Same.
	(__objc_send_load): Same.
	(__objc_exec_class): Same.  In particular, do not print the module
	name since it is no longer used.
	* sendmsg.c (__objc_send_initialize): Added DEBUG_PRINTFs for
	tracking +initialize calls.
	(__objc_update_dispatch_table_for_class): Added DEBUG_PRINTFs for
	tracking updates of dispatch tables.
	(__objc_install_dispatch_table_for_class): Same.
	
2010-12-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.in (libobjc$(libsuffix).la): Link with -Wc,-shared-libgcc.
	(libobjc_gc$(libsuffix).la): Likewise.

2010-12-23  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c (class_addMethod): Return NO if the method already
	exists in the class.

2010-12-22  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (duplicate_classes): New.
	(__objc_exec_class): Initialize duplicate_classes.
	(__objc_create_classes_tree): Ignore classes in the
	duplicate_classes table.
	(__objc_call_load_callback): Same.
	(__objc_init_class): If a duplicate class is found, add it to
	duplicate_classes instead of aborting.  Return YES if the class is
	not a duplicate, and NO if it is.
	* objc-private/runtime.h (__objc_init_class): Updated prototype.

2010-12-22  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/objc-list.h: Reindented file.  No code changes.
	* objc-private/sarray.h: Same change.

2010-12-22  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/accessors.h: Removed 'extern "C"' guards.  This
	file is never compiled with C++.
	* objc-private/hash.h: Same change.
	* objc-private/objc-list.h: Same change.
	* objc-private/objc-sync.h: Same change.
	* objc-private/protocols.h: Same change.
	* objc-private/runtime.h: Same change.
	* objc-private/sarray.h: Same change.
	* objc-private/selector.h: Same change.

2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/18764
	* class.c (__objc_add_class_to_hash): Return YES if the class was
	added, and NO if it already existed.
	* init.c (__objc_init_class): If __objc_add_class_to_hash returns
	NO, then abort the program with an error message.
	* objc-private/runtime.h (__objc_add_class_to_hash): Updated
	declaration.

2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>	

	* init.c (_objc_load_callback): Initialize with 0.
	(__objc_call_callback): Renamed to __objc_call_load_callback.
	Check _objc_load_callback only once, and if it is not set, return
	immediately.
	(objc_send_load): Updated call to __objc_call_callback.
	
2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/16110
	* init.c (__objc_send_message_in_list): Renamed to
	__objc_send_load_using_method_list.  Do not take an 'op' argument.
	Register the 'load' selector if needed.
	(__objc_send_load): Do not register the 'load' selector.  Updated
	call to __objc_send_message_in_list.
	(__objc_create_classes_tree): Add the class of any claimed
	category that was loaded in the module to the list of classes for
	which we try to execute +load.
	
2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/common.h: When DEBUG is defined, include <stdio.h>.
	Updated comments.
	* init.c (__objc_tree_insert_class): Use %p, not %x, when printing
	a pointer using DEBUG_PRINTF.
	
2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/45953
	* selector.c (__sel_register_typed_name): When registering a new
	selector with the same name as an existing one, reuse the existing
	name string.  Also updated types, casts and comments in the whole
	function.

2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/module-abi-8.h (struct objc_symtab): Declare 'refs'
	to be 'struct objc_selector *' and not 'SEL'.
	* init.c (__objc_exec_class): Call
	__objc_register_selectors_from_module instead of iterating over
	each selector and calling __sel_register_typed_name for each.
	* objc-private/selector.h: Declare
	__objc_register_selectors_from_module instead of
	__sel_register_typed_name.
	* selector.c (__objc_register_selectors_from_module): New.
	(__sel_register_typed_name): Made static.
	
2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	* linking.m: Do not include objc/NXConstStr.h.

2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>
	
	* objc-private/runtime.h (DEBUG_PRINTF): Moved from here ...
	* objc-private/common.h (DEBUG_PRINTF): To here.
	* hash.c: Do not include objc-private/runtime.h and objc/thr.h.
	
2010-12-21  Nicola Pero  <nicola.pero@meta-innovation.com>

	* hash.c: Tidied up comments and indentation.  No code changes.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/47012
	* accessors.m (objc_getProperty): If not atomic, do not
	retain/autorelease the returned value.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/runtime.h (__objc_selector_max_index,
	__objc_init_selector_tables, __objc_register_selectors_from_class,
	__objc_register_selectors_from_list,
	__objc_register_selectors_from_description_list): Moved to ...
	* objc-private/selector.h: ... here.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/runtime.h (__objc_class_links_resolved): Removed.
	(__objc_print_dtable_stats): Removed.
	(__sel_register_typed_name): Removed.
	* sendmsg.c (__objc_print_dtable_stats): Use 'void' as argument.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (__objc_exec_class): Call __objc_resolve_class_links (),
	if appropriate, after loading the module.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c (method_setImplementation): Do not declare.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/message.h: Updated comments.
	* objc/runtime.h: Updated comments.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (objc_lookupClass): Renamed to objc_lookUpClass.
	* protocols.c: Updated all calls to objc_lookupClass to call
	objc_lookUpClass instead.
	* sendmsg.c (objc_lookupClass): Do not declare.
	(get_imp): Update call to objc_lookupClass to call
	objc_lookUpClass instead.
	* objc/runtime.h (objc_lookupClass): Renamed to objc_lookUpClass.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h (class_ivar_set_gcinvisible): Declare.
	* sendmsg.c (_CLS_IN_CONSTRUCTION, CLS_IS_IN_CONSTRUCTION): Do not
	define.  Updated comments.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/encoding.h: Updated comments.
	* objc/runtime.h: Updated comments.
	(objc_setGetUnknownClassHandler): Mark with objc_EXPORT.
	(objc_sizeof_type): Same.
	(objc_alignof_type): Same.
	(objc_aligned_size): Same.
	(objc_promoted_size): Same.
	(objc_skip_type_qualifiers): Same.
	(objc_skip_typespec): Same.
	(objc_skip_offset): Same.
	(objc_skip_argspec): Same.
	(objc_get_type_qualifiers): Same.
	(objc_layout_structure): Same.
	(objc_layout_structure_next_member): Same.
	(objc_layout_finish_structure): Same.
	(objc_layout_structure_get_info): Same.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c: Updated comments.
	* objc/objc-api.h: Updated comments.
	* objc/runtime.h (_objc_load_callback): Declare.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/Object.h: Include deprecated/typedstream.h and
	deprecated/hash.h instead of typedstream.h.  Updated comments.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Added objc_msg_sendv.h.
	* objc/deprecated/objc_msg_sendv.h: New.
	* objc/message.h: Do not define retval_t, apply_t, arglist,
	arglist_t, objc_msg_sendv, now in
	objc/deprecated/objc_msg_sendv.h.
	* objc/objc.h: Do not include message.h; include
	objc/deprecated/objc_msg_sendv.h instead.  Tidied up comments.
	* sendmsg.c: Include objc/message.h.
	* thr.c: Include objc/message.h.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-exception.h: Include objc-decls.h.  Mark all
	functions with objc_EXPORT.
	* objc/objc-sync.h: Same change.

2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Protocol.m: Moved all methods, with the exception of -isEqual:,
	into the 'Deprecated' category.
	* objc/Protocol.h: Removed all methods, moved to
	objc/deprecated/Protocol.h.  Include objc/deprecated/Protocol.h.
	* objc/deprecated/Protocol.h: New.
	* Makefile.in (OBJC_DEPRECATED_H): Added Protocol.h.
	
2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c: Include objc-private/selector.h.  Do not declare
	__sel_register_typed_name.
	* objc-private/selector.h (__sel_register_typed_name): Declare.
	* selector.c: Include objc-private/selector.h.
	
2010-12-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c: Tidied up comments and indentation.  No code changes.
	* error.c: Same.
	* exception.c: Same.
	* init.c: Same.
	* ivars.c: Same.
	* memory.c: Same.
	* objc-foreach.c: Same.
	* objc-sync.c: Same.
	* objects.c: Same.
	* protocols.c: Same.
	* sarray.c: Same.
	* thr.c: Same.

2010-12-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c: Include objc/runtime.h and objc-private/module-abi-8.h
	instead of objc/objc-api.h.
	(init_check_module_version): Take a 'struct objc_module *'
	argument instead of 'Module_t'.  Use 'struct objc_module *'
	instead of 'Module_t'.
	(__objc_created_classes_tree): Take a 'struct objc_module *'
	argument instead of 'Module_t'; use 'struct objc_symtab *' instead
	of 'Symtab_t'.
	(__objc_call_callback): Take a 'struct objc_module *' argument
	instead of 'Module_t'; use 'struct objc_symtab *' instead of
	'Symtab_t' and 'struct objc_category *' instead of 'Category_t'.
	(_objc_load_callback): Take a 'struct objc_category *' argument
	instead of 'Category *'.
	(class_superclass_of_class): Use objc_getClass() instead of
	objc_lookup_class().
	(create_tree_of_subclasses_inherited_from): Same change (also, use
	an explicit 'if' instead of '?').
	(objc_init_statics): Same change.
	(objc_send_load): Same change.
	(__objc_init_protocol): same change.
	(__objc_send_message_in_list): Take a 'struct objc_method_list *'
	argument instead of 'MethodList_t'.  Use 'struct objc_method *'
	instead of 'Method_t'.
	(__objc_send_load): Use 'struct objc_method_list *' instead of
	'MethodList_t'.  Use sel_registerName() instead of
	sel_register_name().
	(__objc_exec_class): Take a 'struct objc_module *' argument
	instead of 'Module_t'.  Use 'struct objc_symtab *' instead of
	'Symtab_t'.  Use objc_getClass() instead of objc_lookup_class().
	Use 'struct objc_category *' instead of 'Category_t'.
	
2010-12-16  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c: Include objc/runtime.h instead of objc/objc-api.h.
	Include objc-private/module-abi-8.h and objc-private/selector.h
	instead of objc/encoding.h.
	(objc_msg_lookup_super): Use super->super_class instead of
	super->class.
	(method_get_first_argument, method_get_next_argument): Declare
	locally.
	(class_get_instance_method): Declare before using.
	(objc_msg_sendv): Use 'struct objc_method' instead of 'Method'.
	(__objc_init_dispatch_tables, __objc_send_initialize): Use
	sel_registerName() instead of sel_register_name().
	(__objc_forward): Use sel_getName() instead of sel_get_name().
	(objc_get_uninstalled_dtable): Use 'void' as argument.
	* objc-private/selector.h: New.

2010-12-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/message.h (objc_super): When using the modern API, do not
	define Super and Super_t, and always use 'super_class' for the
	super class field.	
	(objc_msg_lookup_super): Updated prototype to use 'struct
	objc_super *' instead of 'Super_t'.
	* sendmsg.c (objc_msg_lookup_super): Updated prototype to use
	'struct objc_super *' instead of 'Super_t'.

2010-12-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/message.h: Update comments, reindented code and moved
	deprecated types and functions at the end of the file.  No code
	changes.

2010-12-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* ivars.c (class_addIvar): Use the 'size' argument instead of
	trying to calculate it using objc_sizeof_type().
	* objc/runtime.h (class_addIvar): Updated comments.
	
2010-12-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c: Reindented some code and tidied up comments.  No
	actual code changes.
	
2010-12-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/Object.h: Moved all the methods, with the exception of
	-class and -isEqual:, into ...
	* objc/deprecated/Object.h: here.
	* Object.m: Moved all the methods, with the exception of -class
	and -isEqual: into the 'Deprecated' category.

2010-12-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objects.c (object_copy): Do not #undef as we are no longer
	including objc/objc-api.h.
	* selector.c: Include objc/runtime.h and
	objc-private/module-abi-8.h.  Do not include objc/objc-api.h and
	objc/encoding.h.  Updated
	(__objc_register_selectors_from_class): Use struct
	objc_method_list * instead of MethodList_t.
	(__objc_register_selectors_from_list): Use Method instead of
	Method_t.
	(struct objc_method_description_list): Do not define here.
	(__objc_register_instance_methods_to_class): Use struct
	objc_method_list * instead of MethodList_t and Method instead of
	Method_t.
	
2010-12-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	* selector.c: Reindented some code and tidied up comments.  No
	actual code changes.

2010-12-13  Iain Sandoe  <iains@gcc.gnu.org>

	* encoding.c (_darwin_rs6000_special_round_type_align): New.
	(darwin_rs6000_special_round_type_align): Adjust to use new routine.

2010-12-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* sendmsg.c (selector_resolveClassMethod): New.
	(selector_resolveInstanceMethod): New.
	(__objc_resolve_class_method): New.
	(__objc_resolve_instance_method): New.
	(get_imp): Call __objc_resolve_class_method or
	__objc_resolve_instance_method at the appropriate time.
	(objc_msg_lookup): Same.
	(class_getClassMethod): Same.	
	(class_getInstanceMethod): Same.
	(__objc_init_dispatch_tables): Initialize
	selector_resolveClassMethod and selector_resolveInstanceMethod.
	* objc/runtime.h: Updated documentation of class_getClassMethod,
	class_getInstanceMethod and class_getMethodImplementation.
	
2010-12-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/module-abi-8.h (struct objc_symtab): Updated
	description of sel_ref_cnt and refs.
	* objc/deprecated/struct_objc_symtab.h (objc_symtab): Same change.
	
2010-12-06  Dave Korn  <dave.korn.cygwin@gmail.com>

	PR target/40125
	PR lto/46695
	* configure.ac (extra_ldflags_libobjc): Invoke ACX_LT_HOST_FLAGS.
	* Makefile.in (lt_host_flags): Import AC_SUBST'd value.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2010-12-03  Matthias Klose  <doko@ubuntu.com> 

	* configure.ac (VERSION): Bump the version to 3:0:0.
	* configure: Regenerate.

2010-11-23  Richard Frith-Macdonald <rfm@gnu.org>

	* sendmsg.c (get_imp): Fixed call to __objc_get_forward_imp to
	pass nil as the receiver since we don't know the receiver at this
	point.
	
2010-11-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	* ivars.c: Include stdlib.h.
	* protocols.c: Same change.

2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_SOURCE_FILES): Added accessors.m.
	* accessors.m: New.
	* init.c: Include objc-private/accessors.h.
	(__objc_exec_class): Call __objc_accessors_init.
	* objc-private/accessors.h: New.

2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/message.h: Moved initial includes outside of extern "C".
	* objc/runtime.h: Add extern "C" for Objective-C++.

2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (objc_send_load): Do not wait for NXConstantString to be
	registered before executing +load.  There is no point if
	-fconstant-string-class=xxx is used when compiling all modules,
	as is the case for almost all users.
	* linking.m (__objc_linking): Do not try to forcefully link in
	NXConstantString.

2010-10-16  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h: Updated comments.
	(class_addMethod): New.
	(class_addIvar): New.
	(class_replaceMethod): New.
	(objc_allocateClassPair): New.
	(objc_registerClassPair): New.
	(objc_disposeClassPair): New.
	* class.c (objc_allocateClassPair): New.
	(objc_registerClassPair): New.
	(objc_disposeClassPair): New.
	(class_getSuperclass): Return Nil if a class is in construction.
	* init.c (__objc_exec_class): Call __objc_init_class.
	(__objc_init_class): New.
	* ivars.c (class_copyIvarList): Return NULL if class is in
	construction.  Do not lock the runtime mutex.
	(class_getInstanceVariable): Return NULL if class is in
	construction.  Do not lock the runtime mutex.
	(class_addIvar): New.
	* sendmsg.c (class_addMethod): New.
	(class_replaceMethod): New.
	* objc-private/module-abi-8.h (__CLS_SETNOTINFO): New.
	(_CLS_IN_CONSTRUCTION): New.
	(CLS_IS_IN_CONSTRUCTION): New.
	(CLS_SET_IN_CONSTRUCTION): New.
	(CLS_SET_NOT_IN_CONSTRUCTION): New.
	* objc-private/runtime.h (__objc_init_class): New.

2010-10-16  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (class_getSuperclass): Call __objc_resolve_class_links
	if the class is not resolved yet.
	* ivars.c (class_getInstanceVariable): Use class_getSuperclass.
	
2010-10-16  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h (class_getIvarLayout): New.
	(class_getWeakIvarLayout): New.
	(class_setIvarLayout): New.
	(class_setWeakIvarLayout): New.
	* ivars.c (class_getIvarLayout): New.
	(class_getWeakIvarLayout): New.
	(class_setIvarLayout): New.
	(class_setWeakIvarLayout): New.	

2010-10-15  Nicola Pero  <nicola.pero@meta-innovation.com>
	
	* objc/runtime.h (class_copyPropertyList): New.
	(class_getProperty): New.
	(property_getAttributes): New.
	(property_getName): New.
	* ivars.c (class_copyPropertyList): New.
	(class_getProperty): New.
	(property_getAttributes): New.
	(property_getName): New.
	
2010-10-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/runtime.h (__objc_update_classes_with_methods): New.
	* class.c (__objc_update_classes_with_methods): New.
	(objc_getClassList): Do not lock the class lock.
	* methods.c (method_exchangeImplementations): New.
	(method_setImplementation): New.
	* objc/runtime.h (method_setImplementation): New.
	(method_exchangeImplementations): New.
	
2010-10-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Protocol.m: Include objc/runtime.h and
	objc-private/module-abi-8.h instead of objc/objc-api.h.  Do not
	repeat Protocol's instance variables.
	(struct objc_method_description_list): Do not define here.
	([-conformsTo:]): Reimplemented on top of protocol_conformsTo().
	([descriptionForInstanceMethod:]): Use sel_isEqual() to compare
	selectors directly instead of getting names and then using strcmp.
	([descriptionForClassMethod:]): Same change.
	([-isEqual:]): Reimplemented on top of protocol_isEqual().
	* protocols.c (protocol_getMethodDescription): Use sel_isEqual()
	to compare selectors directly instead of getting names and then
	using strcmp.
	* objc/Protocol.h: Updated comments.
	
2010-10-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* init.c (__objc_init_protocol): New function which fixes up a
	protocol's class pointer, registers it with the runtime, register
	all protocol selectors and registers associated protocols too.
	(objc_init_statics): Detect if we are initializing protocols, and
	if so, use __objc_init_protocol instead of only fixing up the
	class pointer.
	(__objc_init_protocls): Use __objc_init_protocol.
	* objc-private/module-abi-8.h: Updated comments.
	* objc-private/runtime.h
	(__objc_register_selectors_from_description_list): New.
	* selector.c (__objc_register_selectors_from_description_list):
	New.  (struct objc_method_description_list): Declare.
	* Protocol.m ([-descriptionForInstanceMethod:]): Use sel_get_name
	when accessing the name of a method, which is now correctly a SEL.
	([-descriptionForClassMethod:]): Same change.
	* protocols.c (protocol_getMethodDescription): Same change.
	* objc/runtime.h: Updated comments.
	(sel_registerTypedName): Fixed typo in function name.
	
2010-10-13  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/23214
	* init.c (objc_init_statics): Do not skip the initialization of a
	statics list if the first object has already been initialized; in
	the case of Protocols, while the first one may have been
	initialized, some others may not have been initialized yet.

2010-10-13  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Added
	objc_get_uninstalled_dtable, objc_object_alloc.h and
	struct_objc_static_instances.h.

2010-10-13  Nicola Pero  <nicola.pero@meta-innovation.com>

	* encoding.c (method_copyReturnType): New.
	(method_copyArgumentType): New.
	(method_getReturnType): New.
	(method_getArgumentType): New.
	* methods.c (method_getDescription): New.
	* objc/runtime.h (method_copyReturnType): New.
	(method_copyArgumentType): New.
	(method_getReturnType): New.
	(method_getArgumentType): New.
	(method_getDescription): New.
	
2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* encoding.c: Tidied up comments.
	(objc_skip_variable_name): New static inline function.
	(objc_sizeof_type): Use objc_skip_variable_name instead of copying
	the same code over and over.
	(objc_alignof_type): Same.
	(objc_aligned_size): Same.
	(objc_promoted_size): Same.
	(objc_skip_typespec): Same.
	(objc_layout_structure_next_member): Same.
	(objc_skip_offset): Skip a '-' before the digits (if any).  Fixed
	historical bug where objc_skip_offset would skip one byte even if
	there is no offset: check that the first offset digit is actually
	a digit before skipping it.
	(objc_skip_type_qualifiers): Mark as inline.
	(objc_skip_typespec): Mark as inline.	
	
2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (C_SOURCE_FILES): Added methods.c.
	* encoding.c (method_getNumberOfArguments): New.
	(method_get_number_of_arguments): Call
	method_getNumberOfArguments.
	* ivars.c (ivar_getName): Check for NULL variable argument.
	(ivar_getOffset): Check for NULL variable argument.
	(ivar_getTypeEncoding): Check for NULL variable argument.
	(class_copyIvarList): New.
	* methods.c: New.
	* protocols.c (class_copyProtocolList): Check for Nil class_
	argument.
	* sendmsg.c: Use 'struct objc_method *' instead of Method_t, and
	'struct objc_method_list *' instead of MethodList_t.
	(class_getMethodImplementation): New.
	(class_respondsToSelector): New.
	(class_getInstanceMethod): New.
	(class_getClassMethod): New.
	* objc/runtime.h: Updated comments.
	(class_copyIvarList): New.
	(class_getInstanceMethod): New.
	(class_getClassMethod): New.
	(class_getMethodImplementation): New.
	(class_respondsToSelector): New.
	(method_getName): New.
	(method_getImplementation): New.
	(method_getTypeEncoding): New.
	(class_copyMethodList): New.
	(method_getNumberOfArguments): New.
	
2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c: Include objc/runtime.h and objc-private/module-abi-8.h
	instead of objc/objc-api.h.
	(objc_get_unknown_class_handler): Do not define.
	(class_isMetaClass): New.
	(class_getSuperclass): New.
	(class_getVersion): New.
	(class_setVersion): New.
	(class_getInstanceSize): New.
	* exceptions.c: Include objc/runtime.h instead of objc/objc-api.h.
	(is_kind_of_exception_matcher): Use objc_getSuperclass instead of
	objc_get_super_class.
	(get_ttype_entry): Use objc_getRequiredClass instead of
	objc_get_class.
	* ivars.c (class_getClassVariable): New.
	* objects.c: Include objc/runtime.h, objc/thr.h and
	objc-private/module-abi-8.h instead of objc/objc-api.h
	* objc/runtime.h (class_getClassVariable): New.
	(class_isMetaClass): New.
	(class_getSuperclass): New.
	(class_getVersion): New.
	(class_setVersion): New.
	(class_getInstanceSize): New.
	* objc-private/module-abi-8.h (HOST_BITS_PER_LONG): New (from
	objc/objc-api.h)
	(__CLS_INFO): Same.
	(__CLS_ISINFO): Same.
	(__CLS_SETINFO): Same.
	(CLS_ISMETA): Same.
	(CLS_ISCLASS): Same.
	(CLS_ISRESOLV): Same.
	(CLS_SETRESOLV): Same.
	(CLS_ISINITIALIZED): Same.
	(CLS_SETINITIALIZED): Same.
	(CLS_GETNUMBER): Same.
	(CLS_SETNUMBER): Same.

2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* archive.c: Do not include objc/objc.h.
	* class.c: Do not include objc/objc.h.
	* encoding.c: Include objc/runtime.h, ctype.h and
	objc-private/module-abi-8.h instead of objc/objc-api.h and
	objc/encoding.h.
	* error.c: Do not include objc/objc.h.
	* gc.c: Include tconfig.h and objc/encoding.h only if
	OBJC_WITH_GC.
	* hash.c: Include objc/runtime.h and objc/thr.h instead of
	objc/objc-api.h.  Do not include objc/objc.h.
	* init.c: Do not include objc/objc.h.
	* ivars.c: Include objc/runtime.h, objc-private/module-abi-8.h and
	objc/thr.h instead of objc/objc-api.h.  Do not include
	objc/objc.h.
	* linking.m: Tidied comment.
	* memory.c: Include objc/runtime.h instead of objc/objc-api.h.
	Do not include objc/objc.h.
	* objects.c: Do not include objc/objc.h.
	* objc-sync.c: Include objc/runtime.h instead of objc/objc-api.h.
	* protocols.c: Do not include objc/objc.h.
	* sarray.c: Include objc/runtime.h instead of objc/objc-api.h.  Do
	not include objc/objc.h.
	* selector.c: Do not include objc/objc.h.
	* sendmsg.c: Do not include objc/objc.h.	
	* thr.c: Include objc/runtime.h instead of objc/objc-api.h.
	Do not include objc/objc.h.
	* objc/objc-decls.h: Reindented code.
	* objc/runtime.h Include objc-decls.h.  Updated comments.
	(objc_malloc): New.
	(objc_atomic_malloc): New.
	(objc_calloc): New.
	(objc_realloc): New.
	(objc_free): New.
	* objc-private/runtime.h: Updated comments.
	
2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (C_SOURCE_FILES): Added protocols.c.
	* objc-private/protocols.h: New.
	* protocols.c: New.
	* init.c: Include objc-private/protocols.h.
	(__objc_exec_class): Call __objc_protocols_init on startup.
	(__objc_init_protocols): Call __objc_protocols_add_protocol.
	* objc-private/runtime.h: Use (struct objc_method_list *) instead
	of MethodList_t, and (struct objc_method *) instead of Method_t.
	* objc/deprecated/struct_objc_class.h: Define
	__objc_STRUCT_OBJC_CLASS_defined.
	* objc-private/module-abi-8.h (struct
	objc_method_description_list): New.
	(struct objc_class): Only define if
	__objc_STRUCT_OBJC_CLASS_defined is undefined.
	* objc/runtime.h (class_getName): New.
	(objc_getProtocol): New.
	(objc_copyProtocolList): New.
	(class_addProtocol): New.
	(class_conformsToProtocol): New.
	(class_copyProtocolList): New.
	(protocol_conformsToProtocol): New.
	(protocol_isEqual): New.
	(protocol_getName): New.
	(protocol_getMethodDescription): New.
	(protocol_copyMethodDescriptionList): New.
	(protocol_getProperty): New.
	(protocol_copyPropertyList): New.
	(protocol_copyProtocolList): New.
	* class.c (class_getName): New.
	* selector.c (sel_isEqual): New.
	
2010-10-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* selector.c (sel_getName): Return "<null selector>" for a NULL
	argument.
	(sel_get_name): Return 0 for a NULL argument.
	* objc/runtime.h (sel_getName): Updated documentation.

	* objc-private/hash.h (class_hash_table): Unused declaration
	removed.
	(module_hash_table): Same.
	* objc/deprecated/hash.h: Same changes.
	
2010-10-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* class.c (objc_getClassList): New.
	(objc_getRequiredClass): New.
	(objc_getMetaClass): New.
	(objc_lookupClass): New.
	(objc_getClass): New.
	(__objc_get_unknown_class_handler): New.
	(objc_setGetUnknownClassHandler): New.
	(objc_get_class): Use __objc_get_unknown_class_handler.
	(objc_lookup_class): Call objc_getClass.
	* objc/objc-api.h: Updated comment and copyright notice.
	* objc/runtime.h: Updated comments.
	(objc_getClass): New.
	(objc_lookupClass): New.
	(objc_getMetaClass): New.
	(objc_getRequiredClass): New.
	(objc_getClassList): New.
	(objc_setGetUnknownClassHandler): New.
	(objc_get_unknown_class_handler): New.
	* objc-private/runtime.h: Use __objc_private_runtime_INCLUDE_GNU
	instead of __objc_runtime_INCLUDE_GNU as include guard.
	* objc-private/error.h (_objc_abort): Mark as noreturn.
	
2010-10-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (C_SOURCE_FILES): Added ivars.c.
	* ivars.c: New.
	* objc/objc.h: Updated comments.
	* objc/runtime.h (object_getClass): New.
	(object_getClassName): New.
	(object_setClass): New.
	(class_getInstanceVariable): New.
	(object_getIndexedIvars): New.
	(object_getInstanceVariable): New.
	(object_setInstanceVariable): New.
	(object_getIvar): New.
	(object_setIvar): New.	
	(ivar_getName): New.
	(ivar_getOffset): New.
	(ivar_getTypeEncoding): New.
	* objc-private/module-abi-8.h (struct objc_class): Added.
	* objects.c (object_getClassName): New.
	(object_setClass): New.
	
2010-10-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc.h: Updated comments.
	* objc/objc-api.h: (object_copy): Added one argument; use a
	#define to maintain backwards-compatibility.  Moved
	_objc_object_alloc, _objc_object_copy, _objc_object_dispose and
	objc_get_uninstalled_dtable into
	objc/deprecated/objc_get_uninstalled_dtable.h and
	objc/deprecated/objc_object_alloc.h.  Include these files.
	* objc/deprecated/objc_get_uninstalled_dtable.h: New.
	* objc/deprecated/objc_object_alloc.h: New.
	* objc/runtime.h (set_getName): New.
	(sel_getType): New.
	(sel_getUid): New.
	(sel_registerName): New.
	(sel_registerTypedName): New.
	(sel_isEqual): New.
	(class_createInstance): New.
	(object_copy): New.
	(object_dispose): New.
	* objects.c: Do not include tconfig.h.  Include gc_typed.h if
	building the garbage collection version.
	(__objc_object_alloc): Removed.
	(__objc_object_copy): Removed.
	(__objc_object_dispose): Removed.
	(class_createInstance): New from code in class_create_instance.
	Cast second argument of GC_malloc_explicitly_typed.  Use
	objc_calloc.  Do not call _objc_object_alloc.
	(class_create_instance): Call class_createInstance.
	(object_copy): Added extraBytes argument.  Do not call
	_objc_object_copy.
	(object_dispose): Do not call _objc_object_dispose.
	* memory.c (objc_free): When using garbage collection, mark the
	argument as unused.
	* selector.c (sel_getName): New.
	(sel_get_name): Call sel_getName.
	(sel_getType): New.
	(sel_get_type): Call sel_getType.
	(sel_registerName): New.
	(sel_register_name): Call sel_registerName.
	(sel_registerTypedName): New.
	(sel_register_typed_name): Call sel_registerTypedName.
	(sel_getUid): New.
	(sel_get_uid): Call sel_getUid.
	
2010-10-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-api.h: Define Method, Method_t, Category and
	Category_t.  Prevent including this file at the same time as
	objc/runtime.h.  Updated comments.
	* objc/deprecated/struct_objc_method.h: Do not define Method,
	Method_t.
	* objc/deprecated/struct_objc_category.h: Do not define Category,
	Category_t.
	* objc-private/module-abi-8.h: New file containing a copy of all
	the structure definitions.  Not used yet.
	* objc/encoding.h (objc_aligned_size): Removed duplicate
	declaration.  Updated comments.
	* objc/runtime.h: Added Ivar, objc_property_t, Property, Method,
	Category, struct objc_method_description, _C_ID and similar,
	_C_CONST and similar and _F_CONST and similar.  Added
	objc_sizeof_type, objc_alignof_type, objc_aligned_size,
	objc_promoted_size, objc_skip_type_qualifier, objc_skip_typespec,
	objc_skip_offset, objc_skip_argspec, objc_get_type_qualifiers,
	struct objc_struct_layout, objc_layout_structure,
	objc_layout_structure_next_member, objc_layout_finish_structure,
	objc_layout_structure_get_info.  Prevent including this file at
	the same time as objc/objc-api.h.
	
2010-10-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (OBJC_DEPRECATED_H): Added struct_objc_category.h,
	struct_objc_ivar.h, struct_objc_ivar_list.h, struct_objc_method.h,
	struct_objc_method_list.h, struct_objc_module.h,
	struct_objc_protocol_list.h, struct_objc_symtab.h.
	* objc/deprecated/struct_objc_category.h: New.
	* objc/deprecated/struct_objc_ivar.h: New.
	* objc/deprecated/struct_objc_ivar_list.h: New.
	* objc/deprecated/struct_objc_method.h: New.
	* objc/deprecated/struct_objc_method_list.h: New.
	* objc/deprecated/struct_objc_module.h: New.
	* objc/deprecated/struct_objc_protocol_list.h: New.
	* objc/deprecated/struct_objc_symtab.h: New.
	* objc/deprecated/struct_objc_static_instances.h: New.
	* objc/objc-api.h: Definitions of deprecated structures moved into
	the above header fragment files in objc/deprecated/.  Include the
	files instead of definition the structures here.  Updated
	comments.
	* objc/runtime.h: Updated comments.  Do not include objc-api.h.
	(objc_set_enumeration_mutation_handler): Renamed to
	objc_setEnumerationMutationHandler.
	* objc-foreach.c (objc_set_enumeration_mutation_handler): Renamed
	to objc_setEnumerationMutationHandler.
	* objc/objc-exception.h (objc_set_exception_matcher): Renamed to
	objc_setExceptionMatcher.
	(objc_set_uncaught_exception_handler): Renamed to
	objc_setUncaughtExceptionHandler.
	* exception.c: Same changes.

2010-10-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-sync.c: Include objc-private/common.h.

2010-10-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-foreach.c: Include objc-private/common.h.
	* objc/deprecated/METHOD_NULL.h: New file.
	* objc/objc-api.h: Include deprecated/METHOD_NULL.h instead of
	defining METHOD_NULL here.
	* Makefile.in (OBJC_DEPRECATED_H): Added METHOD_NULL.h.
	* Object.m ([+instancesRespondTo:]): Use (Method_t)0 instead of
	METHOD_NULL.
	([-respondsTo:]): Same change.
	* objc/objc-api.h (method_get_imp): Converted it into a normal
	function so that we can hide the internals of struct objc_method.
	* sendmsg.c (method_get_imp): Implemented.

2010-10-09  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-api.h (struct objc_super, Super, Super_t,
	objc_msg_lookup_super, objc_msg_sendv, objc_msg_forward,
	objc_msg_forward2): Declarations moved to objc/message.h.  Include
	message.h here.
	* objc/message.h: Added such declarations; updated comments.

2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented fast enumeration for Objective-C.
	* Makefile.in (C_SOURCE_FILES): Added objc-foreach.c.
	(OBJC_H): Added runtime.h
	* objc-foreach.c: New file.
	* objc/runtime.h: New file.
	
2010-09-30  Kai Tietz  <kai.tietz@onevision.com>

	* objc/deprecated/struct_objc_class.h: Add padding
	to avoid warning with -Wpadded.

2010-09-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* encoding.c (objc_sizeof_type): Added support for vector type and
	for double long types.	
	(objc_alignof_type): Same change.
	(objc_skip_typespec): Same change.
	* objc/encoding.h (_C_GCINVISIBLE): Use '|' for _C_GCINVISIBLE
	instead of '!' since '!' is already used for _C_VECTOR.
	* objc/objc-api.h (_C_LNG_DBL): Added.
	
2010-09-26  Nicola Pero  <nicola.pero@meta-innovation.com>

	* libobjc_entry.c: File removed.

2010-09-26  Kai Tietz  <kai.tietz@onevision.com>

	* sendmsg.c (objc_msg_lookup): Remove inline.
	(objc_get_uninstalled_dtable): Likewise.
	* encoding.c (objc_skip_type_qualifiers): Likewise.
	(objc_skip_offset): Likewise.
	* archive.c (__objc_write_object): Likewise
	(__objc_write_class):
	(__objc_write_selector):
	(objc_read_char):
	(objc_read_unsigned_char):
	(objc_read_short):
	(objc_read_unsigned_short):
	(objc_read_int):
	(objc_read_long):
	(__objc_read_nbyte_uint):
	(objc_read_unsigned_int):
	(objc_read_unsigned_long):
	* objc/objc-decls.h (obc_EXPORT): Remove dllexport for DLL_EXPORT case.
	(objc_EXPORT): Likewise.
	* objc/message.h (objc-decls.h): Add include.
	* objc/objc-api.h: Mark API by objc_EXPORT.
	* libobjc.def (__objc_responds_to): Removed.

2010-09-18  Nicola Pero  <nicola.pero@meta-innovation.com>

	* hash.c: Include objc-private/hash.h instead of objc/hash.h.

	* objc/sarray.h: Moved into objc/deprecated/sarray.h;
	objc/sarray.h replaced with a placeholder including the file from
	the deprecated/ directory.
	* objc-private/sarray.h: New file (private copy of sarray.h).
	* hash.c: Include <assert.h> instead of "assert.h"
	* sarray.c: Include <assert.h> instead of "assert.h".  Include
	objc-private/sarray.h instead of objc/sarray.h.
	* selector.c: Include objc-private/sarray.h instead of
	objc/sarray.h.
	* sendmsg.c: Include <assert.h>.  Include objc-private/sarray.h
	instead of objc/sarray.h.
	* Makefile.in (OBJC_DEPRECATED_H): Added sarray.h.	

2010-09-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc-private/objc-list.h (list_remove_elem): Unused function
	removed.  (list_nth): Unused function removed.  (list_find):
	Unused function removed.  (list_lenght): Unused function removed.
	
2010-09-17  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/hash.h: Moved into objc/deprecated/hash.h; objc/hash.h
	replaced with a placeholder including the file from the
	deprecated/ directory.
	* objc/objc-api.h: Updated includes.
	* objc/typedstream.h: Updated includes.
	* objc-private/hash.h: New file (private copy of hash.h).
	* objc/objc-list.h: Moved into objc/deprecated/objc-list.h;
	objc/objc-list.h replaced with a placeholder including the file
	from the deprecated/ directory.
	* objc-private/objc-list.h: New file (private copy of objc-list.h).
	* init.c: Include objc-private/hash.h and objc-private/objc-list.h
	instead of objc/hash.h and objc/objc-list.h.
	* selector.c: Same change.
	* class.c: Added include <string.h>, which used to be implicitly included
	when hash.h was included.
	* exception.c: Same change.
	* objects.c: Same change.
	* sarray.c: Same change.
	* sendmsg.c: Same change.
	* Makefile.in (OBJC_DEPRECATED_H): Added hash.h and objc-list.h.

2010-09-14  Nicola Pero  <nicola.pero@meta-innovation.com>

	Implemented objc_sync_enter() and objc_sync_exit(), which are
	required by @synchronized() to work.
	* objc-sync.c: New file.
	* objc/objc-sync.h: New file.
	* objc-private/objc-sync.h: New file.
	* init.c (__objc_exec_class): Call __objc_sync_init() during the
	Objective-C runtime startup.
	* Makefile.in: Added objc-sync.c and objc-sync.h.
	* configure.ac: Added GCC_CHECK_TLS.
	* acinclude.m4: Include ../config/enable.m4 and ../config/tls.m4.
	* configure: Regenerated.
	* config.h.in: Regenerated.
	
2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Makefile.in (%_gc.lo): New pattern rules to build the
	garbage-collected version of the library.  Removed rules for
	specific files that are no longer needed.  Standardized all rules.
	(C_SOURCE_FILES, OBJC_SOURCE_FILES): New variables.
	(OBJS, OBJS_GC): Compute these from C_SOURCE_FILES and
	OBJC_SOURCE_FILES.
	(INCLUDES): Removed the unused include -I$(srcdir)/objc.

2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>
	
	* memory.c (objc_calloc): Fixed call to GC_malloc when building
	with Garbage Colletion.
	
2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* memory.c: Do not include objc-private/runtime.h.

2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>
	
	* objc/deprecated/objc_malloc.h: New file.
	* objc/deprecated/objc_valloc.h: New file.
	* objc/objc-api.h: Include the files instead of defining
	objc_valloc, _objc_malloc() and similar.
	* Makefile.in (OBJC_DEPRECATED_H): Added objc_valloc.h and
	objc_malloc.h.
	* memory.c: Removed the extra layer of indirection of _objc_malloc
	and similar.
	(objc_calloc): Use GC_malloc in the garbage-collected
	implementation as GC_malloc returns memory that is already freed.
	(objc_valloc): Deprecated.	
	
2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/deprecated/objc_error.h: New file.
	* objc/objc-api.h: Include deprecated/objc_error.h instead of
	defining objc_error and related.
	* error.c: New file.  Added _objc_abort function which replaces
	objc_error.  No change in functionality as they both print an
	error and abort.
	* misc.c: File removed.  Code moved into memory.c and error.c.
	* memory.c: New file.
	* objc-private/error.h: New file.
	* archive.c: Include objc-private/error.h and use _objc_abort
	instead of objc_error everywhere.
	* class.c: Same change.
	* encoding.c: Same change.
	* init.c: Same change, and simplified init_check_module_version.
	* memory.c: Same change.
	* sendmsg.c:  Same change.
	* thr.c: Same change.
	* Makefile.in (OBJ_DEPRECATED_H): Added objc_error.h.
	(OBJ_H): Reordered list.
	(OBJS): Removed misc.lo, added memory.lo and error.lo.
	(OBJS_GC): Removed misc_gc.lo, added memory_gc.lo and error_gc.lo.
	(misc_gc.lo): Rule removed.
	(error_gc.lo): Rule added.
	(memory_gc.lo): Rule added.
	
2010-09-12  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc.h (__GNU_LIBOBJC__): New #define providing an easy way
	to check the API version.  Added some comments.

	* objc-private/common.h: New file.
	* NXConstStr.m: Include objc-private/common.h.
	* Object.m: Same change.
	* Protocol.m: Same change.
	* archive.c: Same change.
	* class.c: Same change.
	* encoding.c: Same change.
	* exception.c: Same change.
	* gc.c: Same change.
	* hash.c: Same change.
	* init.c: Same change.
	* libobjc_entry.c: Same change.
	* linking.m: Same change.
	* misc.c: Same change (and added a comment).
	* nil_method.c: Same change.
	* objects.c: Same change.
	* sarray.c: Same change.
	* selector.c: Same change.
	* sendmsg.c: Same change.
	* thr.c: Same change.

2010-09-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-api.h: Removed obsolete #ifdef for NeXTSTEP.

2010-09-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* archive.c: Removed not needed includes.
	* class.c: Same change.
	* hash.c: Same change.
	* misc.c: Same change.
	* nil_method.c: Same change.
	* objects.c: Same change.
	* sarray.c: Same change.
	* sendmsg.c: Same change.
	* thr.c: Same change.

2010-09-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/runtime.h: Moved to objc-private/runtime.h.  Do not include
	all the objc/*.h files.
	* objc-private/runtime.h: New file.
	* archive.c: Include objc-private/runtime.h (and required objc/*.h
	files) instead of objc/runtime.h.
	* class.c: Same change.
	* hash.c: Same change.
	* init.c: Same change.
	* misc.c: Same change.
	* nil_method.c: Same change.
	* objects.c: Same change.
	* sarray.c: Same change.
	* selector.c: Same change.
	* sendmsg.c: Same change.
	* thr.c: Same change.
	
2010-09-11  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/deprecated/struct_objc_selector.h: New file.  Definition of
	'struct objc_selector' and 'sel_eq' moved here.
	* objc/deprecated/struct_objc_protocol.h: New file.  Definition of
	'struct objc_procotol' moved here.
	* objc/deprecated/struct_objc_class.h: New file.  Definition of
	'struct objc_class' moved here.
	* objc/deprecated/MetaClass.h: New file.  Definition of MetClass
	moved here.
	* objc/deprecated/STR.h: New file.  Definition of STR moved here.	
	* objc/message.h: New file.  Definitions for relval_t, apply_t,
	arglist, arglist_t and objc_msg_lookup were moved here.
	* objc/objc.h: Include the above files instead of defining the
	corresponding structs, types and functions here.  Added new opaque
	definitions for SEL and Class.  Use Class and not 'struct
	objc_class *' in the definition of 'struct objc_object'.
	Commented all types defined in the file.  Removed special
	definition of BOOL as 'int' on __vxworks; use 'unsigned char'
	there as well.
	* objc/deprecated/objc-unexpected-exception.h: Renamed to
	objc_unexpected_exception.h.
	* objc/objc-api.h: Updated include of
	objc-unexpetected-exception.h
	* objc/objc-exception.h: Updated comments.
	* Makefile.in (OBJC_H, OBJC_DEPRECATED_H): Added the new header
	files.  Reindented list of files.
	
2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-api.h (objc_trace): Unused variable removed.

2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/deprecated: New directory.
	* objc/deprecated/README: New file.
	* objc/README: New file.
	* objc/typedstream.h: Moved into objc/deprecated/typedstream.h;
	objc/typedstream.h replaced with a placeholder including the file
	from the deprecated/ directory.
	* objc/deprecated/objc-unexpected-exception.h: New file with the
	definition of _objc_unexpected_exception.	
	* objc/objc-api.h: Include deprecated/objc-unexcepted-exception.h
	instead of defining _objc_unexpected_exception.
	* objc/deprecated/Object.h: New file with the deprecated Object
	methods in a 'Deprecated' category.
	* objc/Object.h Include deprecated/Object.h instead of defining
	the deprecated methods.
	* Object.m: Moved deprecated methods into 'Deprecated' category.
	* objc-private: New directory.
	* objc-private/README: New file.
	* Makefile.in (OBJC_DEPRECATED_H): New variable.
	(install-headers): Create installation directory for
	OBJC_DEPRECATED_H headers, and install them.

2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-exception.h: Fixed include of objc.h.
	
2010-09-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/objc-exception.h: New file.
	* exception.c (objc_set_uncaught_exception_handler): Implemented.
	(objc_set_exception_matcher): Implemented.
	(objc_exception_throw): Use the uncaught exception handler if set.
	(PERSONALITY_FUNCTION): Use the exception matcher instead of the
	hardcoded isKindOf.
	(isKindOf): Renamed to is_kind_of_exception_matcher.  Tidied code
	up.  Removed segmentation fault when value is 'nil'.
	* objc/objc-api.h (_objc_unexpected_exception): Mark as
	deprecated.
	* Makefile.in (exception.lo, exception_gc.lo): Use
	-Wno-deprecated-declarations when compiling.
	(OBJC_H): Added objc-exception.h

2010-09-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/typedstream.h: Deprecate all functions in the file.  This
	file is obsolete.
	* objc/Object.h ([+streamVersion:], [-read:], [-write:],
	[-awake]): Documented that these methods are deprecated.  Added a
	brief description of the Object class and its relationship to the
	NSObject class.
	* Makefile.in: Compile archive.c and Object.m with
	-Wno-deprecated-declarations.

2010-09-08  Nicola Pero  <nicola.pero@meta-innovation.com>

	Removed obsolete intermediate threading layer.
	* thr.c: Use __gthread_objc_xxx functions directly instead of
	__objc_thread_xxx ones.
	* objc/thr.h: Removed prototypes of no longer existing
	__objc_thread_xxx functions.
	* Makefile.in: Removed thr-objc.lo.
	* thr-dce.c: File removed.
	* thr-decosf1.c: File removed.
	* thr-irix.c: File removed.
	* thr-mach.c: File removed.
	* thr-objc.c: File removed.
	* thr-os2.c: File removed.
	* thr-posix.c: File removed.
	* thr-pthreads.c: File removed.
	* thr-rtems.c: File removed.
	* thr-single.c: File removed.
	* thr-solaris.c: File removed.
	* thr-vxworks.c: File removed.
	* thr-win32.c: File removed.
	* README.threads: File removed.
	* THREADS.MACH: File removed.
	* THREADS: Updated.

2010-09-07  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Object.m (MAX_CLASS_NAME_LEN): Unused define removed.

2010-09-06  Iain Sandoe  <iains@gcc.gnu.org>

	* encoding.c: Add TARGET_ALIGN_NATURAL definition for m64 powerpc darwin.
	Add a comment as to why, update FIXME comments.

2010-09-06  Nicola Pero  <nicola.pero@meta-innovation.com>

	* makefile.dos: Obsolete file removed.
	
2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* aclocal.m4: Regenerate.

2010-03-23  Dave Korn  <dave.korn.cygwin@gmail.com>

	PR libobjc/30445
	* configure.ac (extra_ldflags_libobjc): Define appropriately for
	Cygwin and MinGW hosts.
	* Makefile.am (libobjc_s.a): Remove dead pre-libtool target.
	(libobjc.dll): Likewise.
	* configure: Regenerate.

2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2009-11-28  Jakub Jelinek  <jakub@redhat.com>

	* sarray.c (sarray_free): Use old_buckets variable.
	* encoding.c (objc_layout_structure_next_member): Remove unused
	bfld_type_size variable.

2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac (AC_PREREQ): Bump to 2.64.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* config.h.in: Regenerate.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (LIBTOOL): Add $(LIBTOOLFLAGS).

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
	New variables.
	($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.

2009-04-09  Nick Clifton  <nickc@redhat.com>

	* sendmsg.c: Change copyright header to refer to version 3 of
	the GNU General Public License with version 3.1 of the GCC
	Runtime Library Exception and to point readers at the COPYING3
	and COPYING3.RUNTIME files and the FSF's license web page.
	* NXConstStr.m: Likewise.
	* Object.m: Likewise.
	* Protocol.m: Likewise.
	* archive.c: Likewise.
	* class.c: Likewise.
	* encoding.c: Likewise.
	* exception.c: Likewise.
	* gc.c: Likewise.
	* hash.c: Likewise.
	* init.c: Likewise.
	* libobjc_entry.c: Likewise.
	* linking.m: Likewise.
	* misc.c: Likewise.
	* nil_method.c: Likewise.
	* objc/NXConstStr.h: Likewise.
	* objc/Object.h: Likewise.
	* objc/Protocol.h: Likewise.
	* objc/encoding.h: Likewise.
	* objc/hash.h: Likewise.
	* objc/objc-api.h: Likewise.
	* objc/objc-decls.h: Likewise.
	* objc/objc-list.h: Likewise.
	* objc/objc.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/sarray.h: Likewise.
	* objc/thr.h: Likewise.
	* objc/typedstream.h: Likewise.
	* objects.c: Likewise.
	* sarray.c: Likewise.
	* selector.c: Likewise.
	* thr-dce.c: Likewise.
	* thr-decosf1.c: Likewise.
	* thr-irix.c: Likewise.
	* thr-mach.c: Likewise.
	* thr-objc.c: Likewise.
	* thr-os2.c: Likewise.
	* thr-posix.c: Likewise.
	* thr-pthreads.c: Likewise.
	* thr-rtems.c: Likewise.
	* thr-single.c: Likewise.
	* thr-solaris.c: Likewise.
	* thr-vxworks.c: Likewise.
	* thr-win32.c: Likewise.
	* thr.c: Likewise.
	* libobjc.def: Change copyright header to refer to version 3 of
	the GNU General Public License and to point readers at the COPYING3
	file and the FSF's license web page.
	* makefile.dos: Likewise.

2009-04-09  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in: Change copyright header to refer to version
	3 of the GNU General Public License and to point readers at the
	COPYING3 file and the FSF's license web page.
	* configure.ac: Likewise.

2009-03-12  Richard Frith-Macdonald  <rfm@gnu.org>
	    David Ayers  <ayers@fsfe.org>

	PR libobjc/27466
	* objc/objc-api.h (_objc_unexpected_exception): Declare
	new hook.  Update copyright dates.
	* exception.c (objc_exception_throw): Use hook.  Update
	copyright dates.
	* libobjc.def (_objc_unexpected_exception): Export hook.
	Update copyright dates.
	
2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2008-11-21  Kai Tietz  <kai.tietz@onevision.com>

	*  Object.m (errno): Replaced by errno.h include.
	(compare): Cast self to id to prevent warning on comparison.
	* objc/objc.h (BOOL): Prevent redeclaration of BOOL, if it is
	already there.
	* sendmsg.c (__objc_print_dtable_stats): Remove type warnings.
	* thr-win32.c (__objc_thread_detach): Remove type warning.
	(__objc_thread_id): Likewise.
	* thr.c (__objc_thread_detach_functiont): Add __builtin_trap ()
	for noreturn.

2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
            Steve Ellcey  <sje@cup.hp.com>

	* configure: Regenerate for new libtool.
	* config.h.in: Regenerate for new libtool.

2008-07-18  Matthias Klose  <doko@ubuntu.com> 

	* Makefile.in: Ignore missing ../boehm-gc/threads.mk. 

2008-07-18  Matthias Klose  <doko@ubuntu.com> 

	* Makefile.in: Include ../boehm-gc/threads.mk. 
	(OBJC_BOEHM_GC_LIBS): Define, (libobjc_gc$(libsuffix).la): Use it.

2008-07-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (install-info): New stub target.

2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* configure: Regenerate.

2008-06-14  Kai Tietz  <kai.tietz@onevision.com>

	* exception.c (PERSONALITY_FUNCTION): Remove extra decrement
	if HAVE_GETIPINFO is not defined.

2008-06-10  Kai Tietz  <kai.tietz@onevision.com>

	* Object.m (compare): Add type id.
	* objc/Object.h: Likewise.
	* archive.c (objc_read_class): Use size_t to extend version to be
	size of pointer scalar width.
	* sendmsg.c (rtx): Undefine it before redefinition.
	(__objc_print_dtable_stats): Cast arguments to long as intended.

2008-05-30  Julian Brown  <julian@codesourcery.com>

	* exception.c (__objc_exception_class): Initialise as constant
	array for ARM EABI. Change macro to static const for non-ARM EABI.
	(ObjcException): Add note about structure layout. Remove landingPad
	and handlerSwitchValue for ARM EABI.
	(get_ttype_entry): Add __ARM_EABI_UNWINDER__ version
	of function.
	(CONTINUE_UNWINDING): Define for ARM EABI/otherwise cases.
	(PERSONALITY_FUNCTION): Use ARM EABI-specific arguments, and add
	ARM EABI unwinding support.
	(objc_exception_throw): Use memcpy to initialise exception class.

2008-05-25  Alan Modra  <amodra@bigpond.net.au>

	* encoding.c (strip_array_types): Rename from get_inner_array_type.
	(rs6000_special_round_type_align): Update.

2008-05-09  Julian Brown  <julian@codesourcery.com>

	* Makefile.in (LTLDFLAGS): New.
	(libobjc$(libsuffix).la, libobjc_gc$(libsuffix).la): Use above.

2008-04-18  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/35457
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2008-01-24  David Edelsohn  <edelsohn@gnu.org>

	* configure: Regenerate.

2007-10-14  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.ac: Don't run config-ml.in directly.
	(multilib_arg): New.
	* configure: Regenerated.

2007-08-06  Andrew Pinski  <pinskia@gmail.com>

	PR libobjc/30731
	* exception.c (parse_lsda_header): Use _uleb128_t/_sleb128_t instead
	of _Unwind_Word for variables which are used in
	read_uleb128/read_sleb128.
	(PERSONALITY_FUNCTION): Likewise.

2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>

	* aclocal.m4: Regenerated.

2007-06-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* configure.ac: Fix a typo in *-*-darwin clause.
	* configure: Regenerated.

2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.ac: Fix a typo.
	* configure: Regenerated.

2007-06-02  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

2007-06-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* Makefile.in: Replace all uses of libext with libsuffix.
	* configure.ac: Likewise.
	* configure: Regenerate.

	Revert:
	* Makefile.in: Remove all uses of $(libext).

2007-05-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* Makefile.in: Remove all uses of $(libext).

2007-05-23  Steve Ellcey  <sje@cup.hp.com>

	* configure: Regenerate.
	* aclocal.m4: Regenerate.

2007-04-21  Andrew Ruder  <andy@aeruder.net>

	* sendmsg.c (__objc_get_forward_imp): Call
	__objc_msg_forward2 for real.

2007-04-09  Andrew Ruder  <andy@aeruder.net>

	* sendmsg.c: Added __objc_msg_forward2, a hook that allows
	external libraries to provide a function that returns the real
	forwarding function based on both the selector and the receiver.
	* objc/objc-api.h: Define __objc_msg_forward2.

2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Makefile.in: Add dummy install-pdf target.

2007-02-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* objc/objc-list.h (list_free): Add keyword 'inline' to avoid
	unused warning.
	
2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* encoding.c (darwin_rs6000_special_round_type_align): New.

2006-10-14  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in: Use multi_basedir instead of toplevel_srcdir.
	* configure.ac: Use multi.m4 from aclocal rather than custom
	code.  Use multi_basedir instead of toplevel_srcdir.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Makefile.in: Added empty "pdf" target.

2006-07-18  Paolo Bonzini  <bonzini@gnu.org>

	* configure: Regenerate.

2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Add install-html target. Add install-html to .PHONY

2006-02-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR libobjc/26309
	* thr-objc.c (_XOPEN_SOURCE): Don't define on Tru64 UNIX.

2006-01-24  David Ayers  <d.ayers@inode.at>

	PR libobjc/9751
	* gc.c (class_ivar_set_gcinvisible): Replace strncpy with memcpy
	and insure the new strings are '\0' termintated.

2006-01-24  David Ayers  <d.ayers@inode.at>

	PR libobjc/13946
	* configure.ac: Add include directives for --enable-objc-gc.
	* Makefile.in: Ditto.
	* configure: Regenerate.

	* gc.c (__objc_class_structure_encoding): Increment the used bytes
	instead of the local pointer to them.

2005-12-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR objc/25360
	* objc/objc-api.c (_C_COMPLEX): New define.
	* encoding.c (objc_sizeof_type): Handle _C_Complex.
	(objc_alignof_type): Likewise.
	(objc_skip_typespec): Likewise.

2005-12-15  David Ayers  <d.ayers@inode.at>

	PR libobjc/14382
	* README (+load,+initialize): Fix documentation to reflect
	intended and implemented semantics for +load and +initialize.
	
2005-12-12  Andrew Pinski  <pinskia@physics.uc.edu>

	* encoding.c (TYPE_FIELDS): Fix to skip over just _C_STRUCT_B and
	the name.
	(get_inner_array_type): Fix to skip over _C_ARY_B and size.
	(rs6000_special_round_type_align): Update for the ABI fix.
	(objc_layout_finish_structure): Correct the encoding which is passed to
	ROUND_TYPE_ALIGN.

2005-12-11  Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/25347
	* encoding.c (objc_sizeof_type): Don't handle _C_UNION_B special
	but use the struct layout functions.
	(objc_alignof_type): Likewise.
	(objc_layout_structure): Handle _C_UNION_B also.
	(objc_layout_structure_next_member): Likewise.
	(objc_layout_finish_structure): Likewise.

2005-12-11  Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/25346
	* objc/objc-api.h (_C_BOOL): New define.
	* encoding.c (objc_sizeof_type): Handle _C_BOOL.
	(objc_alignof_type): Likewise.
	(objc_skip_typespec): Likewise.

2005-11-20  David Ayers  <d.ayers@inode.at>

	PR libobjc/19024
	* objc/hash.h: Remove deprecated hash API.
	* hash_compat.c: Remove.
	* Makefile.in: Remove reference to hash_compat.c.

	* configure.ac (VERSION): Bump library version to 2:0:0.
	* configure: Regenerate.

2005-11-09  Alexandre Oliva  <aoliva@redhat.com>

	PR other/4372
	* thr-objc.c (_XOPEN_SOURCE): Define.

2005-10-07  Ulrich Weigand  <uweigand@de.ibm.com>

	PR libobjc/23612
	* objc/objc-api.h (struct objc_ivar): Move definition to
	global scope.

2005-09-04  Andrew Pinski  <pinskia@physics.uc.edu>
            Rasmus Hahn  <rassahah@neofonie.de>

	PR libobjc/23108
	* archive.c (objc_write_type): Correct the element offset.
	(objc_read_type): Likewise.

2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>

	* All files: Update FSF address.

2005-08-13  Marcin Koziej  <creep@desk.pl>
            Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/22492
	* exception.c (PERSONALITY_FUNCTION): Fix the PC with finally.

2005-08-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* Makefile.in (extra_ldflags_libobjc): New.
	(libobjc$(libext).la): Add extra_ldflags_libobjc to the link line.
	(libobjc_gc$(libext).la): Likewise.
	* configure.ac (extra_ldflags_libgfortran): Set for *-darwin* to
	"-Wl,-single_module".
	* configure: Regenerate.
	* linking.m (_objcInit): Remove.

2005-07-26  Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/22606
	* Makefile.in (ALL_CFLAGS): Add -fexceptions.

2005-06-08  David Ayers  <d.ayers@inode.at>

	* objc/NXConstStr.h, objc/Object.h, objc/Protocol.h,
	objc/encoding.h, objc/hash.h, objc/objc-api.h,
	objc/runtime.h, objc/sarray.h, objc/thr.h, 
	objc/typedstream.h: Do not include Objective-C headers as
	system headers.

2005-06-07  David Ayers  <d.ayers@inode.at>

	* archive.c, init.c, selector.c: Include hash.h.
	* archive.c, class.c, encoding.c, gc.c, hash.c, hash_compat.c,
	init.c, misc.c, nil_method.c, objects.c, sarray.c, selector.c,
	sendmsg.c, thr-dce.c, thr-decosf1.c, thr-irix.c, thr-mach.c,
	thr-objc.c, thr-os2.c, thr-posix.c, thr-pthreads.c, thr-rtems.c,
	thr-single.c, thr-solaris.c, thr-vxworks.c, thr-win32.c, thr.c:
	Include Objective-C headers with quotes and objc/ directory
	prefix.

2005-05-19  Richard Henderson  <rth@redhat.com>

	* exception.c: Revert last change.

2005-05-19  David Ayers  <d.ayers@inode.at>

	* exception.c: Include tsystem.h for unwind.h.

2005-05-09  Mike Stump  <mrs@apple.com>

	* configure: Regenerate.

2005-04-12  Mike Stump  <mrs@apple.com>

	* configure: Regenerate.

2005-03-21  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in: Set gcc_version here.
	* configure.ac: Do not invoke TL_AC_GCC_VERSION.  Adjust quoting
	in definition of toolexeclibdir so that $(gcc_version) is expanded
	by the Makefile.
	* aclocal.m4, configure: Regenerate.

2005-03-03  David Ayers  <d.ayers@inode.at>

	* objc/hash.h (OBJC_IGNORE_DEPRECATED_API): Update deprecated
	version reference.  Correct typo.

2005-03-02  David Ayers  <d.ayers@inode.at>

	PR libobjc/19024
	* Makefile.in (OBJS): Add hash_compat.lo.
	(OBJS_GC): Add hash_compat_gc.lo.
	(hash_compat_gc.lo): New target and rule.
	* objc/hash.h (hash_new, hash_delete, hash_add, hash_remove)
	(hash_next, hash_value_for_key, hash_is_key_in_hash)
	(hash_ptr, hash_string, compare_ptrs, compare_strings): Prefix
	with objc_.  Add deprecated non prefixed inlined versions.
	(OBJC_IGNORE_DEPRECATED_API): New macro to hide deprecated
	declarations.
	* hash.c (hash_new, hash_delete, hash_add, hash_remove, hash_next)
	(hash_value_for_key, hash_is_key_in_hash): Prefix with objc_ and
	update callers.
	* hash_compat.c: New file.
	* archive.c: Update callers.
	* init.c: Likewise.
	* selector.c: Likewise.
	* libobjc.def: Add objc_ versions of hash functions.

2005-02-28  Andrew Pinski <pinskia@physics.uc.edu>

	PR libobjc/20252
	* Makefile.in (GTHREAD_FLAGS): Remove.
	(ALL_CFLAGS): Remove usage of GTHREAD_FLAGS.
	* thr-objc.c: Include config.h.
	* configure.ac: Instead of looking at GCC's makefile, figure out if
	GTHREAD_FLAGS should be defined by looking at the `thread model'
	of the current gcc.
	* configure: Regenerate.
	* config.h.in: Regenerate.

2005-02-28  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* configure.ac: Call GCC_TOPLEV_SUBDIRS.
	(Determine CFLAGS for gthread): Use $host_subdir.
	* configure: Regenerate.
	* Makefile.in (host_subdir): New.
	(INCLUDES): Use it.

2004-12-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/12035
	* gc.c: Remove definition of LOGWL, modWORDSZ, and divWORDSZ since
	they are not used.
	Include limits.h and stdlib.h.
	Define BITS_PER_WORD.

2004-12-12  Alexander Malmberg  <alexander@malmberg.org>

	* selector.c (__objc_init_selector_tables): Add missing void to
	definition.

2004-12-02  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
	* configure, aclocal.m4: Regenerate.

2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>

	* configure: Regenerate for libtool change.

2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>

	* configure: Regenerate for libtool reversion.

2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>

	* configure: Regenerate for libtool change.

2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4, config.h.in: Regenerate.

2004-10-08  Mike Stump  <mrs@apple.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	* aclocal.m4: Rename to ...
	* acinclude.m4: here and also use m4_include instead of sinclude.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* configure.ac: Add AM_MAINTAINER_MODE and AM_PROG_CC_C_O.
	* Makefile.in (configure): Add @MAINT@ infront of configure.ac

2004-10-08  Andrew Pinski  <pinskia@physics.uc.edu>

	* archive.c: Fix all the warnings about passing unsigned char*
	to char* and the other way too.

2004-09-16  Andrew Pinski  <pinskia@physics.uc.edu>

	PR libobjc/16448
	* exception.c: Include config.h
	(objc_exception_throw): Change _GLIBCXX_SJLJ_EXCEPTIONS to
	SJLJ_EXCEPTIONS.
	* configure.ac: Find out what exception handling code we use.
	* configure: Regenerate.
	* config.h.in: New file, regenerate.

2004-09-16  Andrew Pinski  <apinski@apple.com>

	* encoding.c (ALTIVEC_VECTOR_MODE): Define a bogus macro.

2004-08-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Switch from _GCC_TOPLEV_NONCANONICAL_TARGET to
	ACX_NONCANONICAL_TARGET.
	* configure: Regenerate.

2004-08-13  Ziemowit Laski  <zlaski@apple.com>

	* objc/sarray.h: Hoist include of assert.h near the top of file,
	and mark the remainder of the file 'extern "C"'.

2004-08-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* objc/Object.h: Move includes out of extern "C" blocks.
	* objc/encoding.h: Likewise.
	* objc/hash.h: Likewise.
	* objc/objc-api.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/sarray.h: Likewise.
	* objc/typedstream.h: Likewise.

2004-08-12  Ziemowit Laski  <zlaski@apple.com>

	* objc/NXConstStr.h: Update copyright date; bracket with
	'extern "C"' for C++ use; make include syntax consistent
	by using <...> instead of "..."; hoist <objc/...> includes
	above the 'extern "C"' block.
	* objc/Object.h: Likewise.
	* objc/Protocol.h: Likewise.
	* objc/encoding.h: Likewise.
	* objc/hash.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/sarray.h: Likewise.
	* objc/thr.h: Likewise.
	* objc/typedstream.h: Likewise.
	* objc/objc-api.h: Add 'extern "C"' block for C++ use.
	(objc_static_instances): For C++ case, do away with
	zero-sized array.
	(objc_method): Hoist definition to file scope.
	(_objc_load_callback, _objc_object_alloc, class_get_class_method,
	class_get_instance_method, class_create_instance,
	class_get_class_name, class_get_instance_size,
	class_get_meta_class, class_get_super_class, class_get_version,
	class_is_class, class_is_meta_class, class_set_version,
	class_get_gc_object_type, class_ivar_set_gcinvisible,
	get_imp): Rename 'class' parameter to '_class'.
	* objc/objc-list.h: Add 'extern "C"' block for C++ use.
	* objc/objc.h: Update copyright date.
	(arglist_t): Provide a union tag.

2004-07-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* thr.c (__objc_thread_detach_function): Do not mark as volatile
	but instead use the attribute noreturn.

2004-06-28  Zack Weinberg  <zack@codesourcery.com>

	* encoding.c: Rename target_flags with a #define to avoid
	conflict with a prior declaration.

2004-06-24  Andrew Pinski  <apinski@apple.com>

	* objc/encoding.h: Wrap the functions with extern "C" for C++
	mode.
	* objc/hash.h: Likewise.
	* objc/objc-api.h: Likewise.
	* objc/objc-list.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/sarray.h: Likewise.
	* objc/thr.h: Likewise.
	* objc/typedstream.h: Likewise.


2004-06-21  Nick Clifton  <nickc@redhat.com>

	* encoding.c (BITS_PER_UNIT): Define if a definition is not
	provided.

2004-06-20  Alexander Malmberg  <alexander@malmberg.org>

	* Makefile.in (exception.lo): Remove $(OBJC_GCFLAGS).
	(exception_gc.lo): New.
	(OBJS_GC): Add exception_gc.lo.

2004-06-17  Richard Henderson  <rth@redhat.com>

	* exception.c: New file.
	* Makefile.in (exception.lo): New.
	(OBJS): Add it.

2004-06-14  Andrew Pinski  <pinskia@physics.uc.edu>

	* linking.m (_objcInit): New empty function
	for Darwin only.

2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* configure.ac: Support --enable-shared=libobjc.
	* configure: Regenerate.

	PR libobjc/15901
	* configure.ac: Do not disable shared by default.
	* configure: Regenerate.

2004-06-03  Nicola Pero  <n.pero@mi.flashnet.it>

	* Protocol.m ([-isEqual:]): Small optimizations returning
	immediately if the argument is equal to self, and accessing
	the argument's name directly if it's a protocol.

2004-06-03  David Ayers  <d.ayers@inode.at>

	* Protocol.m ([-isEqual:]): Test the class of the argument.

2004-05-25  Andrew Pinski  <pinskia@physics.uc.edu>

	* configure.ac (includedir): Rename to ...
	(includedirname).
	* Makefile.in: s/includedir/includedirname/.

	PR target/11572
	* configure.ac (includedir): Set to "include"
	except for Darwin.
	(libext) Set to empty except for Darwin.
	* configure: Regenerate
	* Makefile.in: s/libobjc.la/libobjc$(libext).la/g.
	s/include/$(includedir)/g.

2004-05-25  Daniel Jacobowitz  <drow@false.org>

	* Makefile.in: Add .NOEXPORT.

2004-05-25  Andrew Pinski  <pinskia@physics.uc.edu>

	Merge from the libobjc-branch
	2004-02-09  Andrew Pinski  <pinskia@physics.uc.edu>

		* Makefile.in (OBJC_H): Change objc-deps.h to objc-decls.h.

	2004-02-03  Andrew Pinski  <pinskia@physics.uc.edu>

		* Makefile.in (OBJC_H): Add objc-deps.h.

	2004-01-27  Nicola Pero  <n.pero@mi.flashnet.it>

		* Protocol.m ([-conformsTo:]): If the argument is nil, return NO.
		([-hash], [-isEqual:]): New methods.

	2004-01-27  Richard Frith-Macdonald <rfm@gnu.org>

		* sarray.c (sarray_free): Add a better comment.

	2004-01-27  Adam Fedor  <fedor@gnu.org>

		* hash.c (hash_add): Cast cachep to int.
		* selector.c (__sel_register_typed_name): Cast
		soffset_decode to int.

	2004-01-27  Alexander Malmberg  <alexander@malmberg.org>

		* selector.c: Rename register_selectors_from_list to
		__objc_register_selectors_from_list. Update caller.
		(__objc_register_selectors_from_list): Lock __objc_runtime_mutex
		while registering selectors. Use __sel_register_typed_name instead
		of sel_register_typed_name. Check for NULL method_name:s.
		(pool_alloc_selector): New function.
		(__sel_register_typed_name): Use pool_alloc_selector to allocate
		selector structures.
		* sendmsg.c (class_add_method_list): Use
		__objc_register_selectors_from_list.
		* objc/runtime.h: Add __objc_register_selectors_from_list.

	2004-01-25  Adam Fedor  <fedor@gnu.org>
		    Nicola Pero  <n.pero@mi.flashnet.it>
		    Andrew Pinski  <pinskia@physics.uc.edu>

		* objc/objc-decls.h: New file.
		* objc/objc-api.h (_objc_lookup_class): Mark as export.
		(_objc_load_callback): Likewise.
		(_objc_object_alloc): Likewise.
		(_objc_object_copy): Likewise.
		(_objc_object_dispose): Likewise.

	2004-01-25  Andrew Pinski  <pinskia@physics.uc.edu>

		* archive.c: s/__inline__/inline
		* sendmsg.c: Likewise.

		* encoding.c: Remove FIXME about the warning
		about unused variable.
		* sendmsg.c: Add a FIXME comment saying that
		this should be using libffi.

		* Makefile.in (LIBTOOL): Use @LIBTOOL@ now as it works.


2004-05-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* archive.c (objc_read_class): Initialize class_name.
	(objc_read_selector): Initialize selector_name.

2004-05-09  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (toolexecdir): Remove trailing space.

2004-04-15  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR libobjc/14948
	* configure.ac: De-precious CC so multilibs work.
	* configure: Regenerate.

2004-04-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Restore toolexecdir.
	* Makefile.in: Restore toolexecdir.
	* configure: Regenerate.

2004-04-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Remove (unused) glibcpp_prefixdir.
	* configure: Regenerate.

	* configure.in: Rename to configure.ac.
	* Makefile.in: Update to match.

	* Makefile.in: Remove toolexecdir, glibcpp_toolexecdir (unused).
	Replace glibcpp_toolexeclibdir with toolexeclibdir.
	* configure.in: Remove glibcpp_toolexecdir (unused).
	Replace glibcpp_toolexeclibdir with toolexeclibdir.  Don't generate
	config.h or stamp-h (unused).  Move one comment to the right place.
	* configure: Regenerate.
	* config.h.in: Remove (unused).

	* config.h.in: Regenerate with autoheader.

	* Makefile.in: Remove (unused) gcc_version_trigger.
	* configure.in: Remove (unused) glibcpp_builddir.  Don't AC_SUBST
	gcc_version_trigger.
	* configure: Regenerate.

	* configure.in: Switch to modern style for AC_INIT, AC_OUTPUT.
	Sort file into sections.  Remove dnl where appropriate.  Fix
	other style issues.
	* configure: Regenerate.

	* configure.in: Replace old AC_PROG_CC hack with new one.
	Define toplevel_srcdir in terms of srcdir, not top_srcdir (there
	are no subdirectory output files, so this is fine).  Change prereq
	to autoconf 2.59.
	* aclocal.m4: Include ../config/no-executables.m4.
	* configure: Regenerate with autoconf 2.59.

	* configure.in: Improve comments on gthread_cflags.  Improve m4
	quotation, and replace 'if test' with 'case', for --enable-objc-gc.
	* configure: Regenerate.

	* configure.in: Move PACKAGE and VERSION settings up top.  Remove
	unused call to AC_PROG_LN_S.  Default RANLIB to ':'.  Remove
	redundant checks for values of RANLIB, AR, INSTALL.
	* configure: Regenerate.

	* configure.in: Clean up handling of
	--enable-version-specific-runtime-libs and related variables;
	replace 'if test' with 'case' where reasonable.  Fix comments.
	Remove useless libstdcxx_interface.
	* configure: Regenerate.

	* configure.in: Use _GCC_TOPLEV_NONCANONICAL_TARGET.
	Replace uses of target_alias with target_noncanonical.
	* aclocal.m4: Include ../config/acx.m4.
	* configure: Regenerate.
	* Makefile.in: Replace uses of target_alias with target_noncanonical.
	Fix copyright statement.

	* configure.in: Hand-inline bulky, confusing macros from
	aclocal.m4.  Replace references to "GNU Objective C" with "GCC".
	Update copyright notice.  Remove stuff for automake, which isn't
	used in this directory.  Remove emacs local variables.
	* aclocal.m4: Remove hand-inlined macros.  Update copyright notice.
	* configure: Regenerate.

2004-03-16  Manfred Hollstein  <mh@suse.com>

	* Makefile.in, configure.in, configure: Update copyright years.

2004-03-15  Manfred Hollstein  <mh@suse.com>

	* Makefile.in (LIBOBJC_VERSION, LIBOBJC_GC_VERSION): Use
	definition from configure.in.
	* configure.in (PACKAGE): Add definition.
	(VERSION): Add definition; substitute it in output files.
	* configure: Re-generate.

2004-03-05  Ziemowit Laski  <zlaski@apple.com>

	* objc/hash.h (hash_string, compare_strings):
	Add type-casts to make Objective-C++ happy.
	* objc/typedstream.h (objc_get_stream_class_version):
	Rename parameter from 'class' to 'class_name' to make
	Objective-C++ happy.

2004-03-01  Michael Matz  <matz@suse.de>

	* Makefile.in (ALL_CFLAGS): Add -fno-strict-aliasing.

2004-02-06  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-api.h (objc_super): The 'class' field shall
	be named 'super_class' #ifdef __cplusplus.

2004-01-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/10781
	* encoding.c (rs6000_special_round_type_align): Define.

2004-01-14  Adam Fedor  <fedor@gnu.org>

	PR libobjc/12155
	* selector.c (__objc_register_instance_methods_to_class): Free
	new_list if not used.

2004-01-09  Andrew Ruder  <aeruder@ksu.edu>

	PR libobjc/11904
	* sarray.c (sarray_free): Free array->is_copy_of latter.

2003-12-01  Zack Weinberg  <zack@codesourcery.com>

	PR 11433
	* Protocol.m (descriptionForInstanceMethod): Don't dereference
	instance_methods if it's NULL.
	(descriptionForClassMethod): Likewise for class_methods.

2003-10-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (runtime-info.h): Remove -Wp.

2003-10-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (CC1OBJ): Remove.
	(runtime-info.h): Invoke $(CC) so all MULTIFLAGS are handled
	correctly.
	Use .m extension for temporary file.
	Remove assembler temp file.

2003-10-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* objc/hash.h (hash_string): Don't use a cast as an lvalue.

2003-10-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (runtime-info.h): Use MULTIFLAGS.

2003-09-09  Alan Modra  <amodra@bigpond.net.au>

	* configure: Regenerate.

2003-08-27  Alexander Malmberg  <alexander@malmberg.org>

	* Makefile.in, aclocal.m4: Update to $(libdir)/gcc/ instead of
	(libdir)/gcc-lib/ when installing.
	* configure: Regenerate.

Thu Jul 10 10:27:43 2003  Nicola Pero  <n.pero@mi.flashnet.it>

	libobjc/9969
	* sendmsg.c (get_imp): Fixed rare threading problem.
	(__objc_responds_to): Similar fixes.
	(objc_msg_lookup): Similar fixes.
	(__objc_init_install_dtable): Lock the runtime before checking if the
	table is installed.

2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* hash.c, init.c, libobjc.def, libobjc_entry.c, linking.m,
	makefile.dos, misc.c, nil_method.c, objects.c, sarray.c,
	selector.c, sendmsg.c, thr-dce.c, thr-decosf1.c, thr-irix.c,
	thr-mach.c, thr-objc.c, thr-os2.c, thr-posix.c, thr-pthreads.c,
	thr-rtems.c, thr-single.c, thr-solaris.c, thr-vxworks.c,
	thr-win32.c, thr.c: Replace "GNU CC" with "GCC".
	* Makefile.in, NXConstStr.m, Object.m, Protocol.m, archive.c,
	class.c, encoding.c, gc.c, objc/NXConstStr.h, objc/Object.h,
	objc/Protocol.h, objc/encoding.h, objc/hash.h, objc/objc-api.h,
	objc/objc-list.h, objc/objc.h, ocjc/runtime.h, objc/sarray.h,
	objc/thr.h, objc/typedstream.h: Replace "GNU CC" with "GCC".

Tue May 13 14:56:03 2003  Richard Frith-Macdonald <rfm@gnu.org>
			  Nicola Pero  <n.pero@mi.flashnet.it>

	libobjc/10742
	* init.c (class_superclass_of_class): New function.
	(create_tree_of_subclasses_inherited_from): Use it.
	(__objc_tree_insert_class): Likewise.
	(class_is_subclass_of_class): Likewise.

2003-04-11  David Chad  <davidc@freebsd.org>
	    Loren J. Rittle  <ljrittle@acm.org>

	libobjc/8562
	* objc/hash.h (hash_string): Constify correctly.
	(compare_ptrs): Use direct compare.
	* objc/objc-list.h (list_nth): Rename index to indx to avoid shadow.
	* objc/sarray.h: Global rename index to indx to avoid shadow.

2003-03-12  Andreas Schwab  <schwab@suse.de>

	* aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in
	glibcpp_toolexeclibdir.
	* configure: Rebuilt.

2003-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
	config.status.
	* configure: Rebuilt.

2003-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* aclocal.m4 (glibcpp_toolexeclibdir): Instead of
	$(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless
	version_specific_libs is enabled.
	* configure: Rebuilt.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.
	(install-libs, install-headers): Prepend $(DESTDIR) to
	destination paths in all (un)installation commands.

2002-12-02  Zack Weinberg  <zack@codesourcery.com>

	* thr-objc.c: Include coretypes.h and tm.h.

2002-12-01  Zack Weinberg  <zack@codesourcery.com>

	* encoding.c, sendmsg.c: Include coretypes.h and tm.h.

2002-11-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.in: Remove skip-this-dir support.
	* configure: Regenerate.

2002-09-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (all): Fix multilib parallel build.

Thu Sep 12 12:44:37 2002  Nicola Pero  <n.pero@mi.flashnet.it>

	* sendmsg.c (nil_method): Declare not to take a variable number of
	args.
	(objc_msg_lookup): Cast nil_method to IMP before returning it.
	(objc_msg_lookup_super): The same.

2002-09-10  Jan Hubicka  <jh@suse.cz>

	* nil_method.c (nil_method): No longer defined with variable
	arguments.

2002-07-02  Rodney Brown  <rbrown64@csc.com.au>

	* objc/encoding.h: Fix formatting.
	* objc/hash.h: Likewise.
	* objc/objc-api.h: Likewise.
	* objc/runtime.h: Likewise.
	* objc/thr.h: Likewise.
	* archive.c: Likewise.
	* class.c: Likewise.
	* encoding.c: Likewise.
	* gc.c: Likewise.
	* hash.c: Likewise.
	* init.c: Likewise.
	* misc.c: Likewise.
	* nil_method.c: Likewise.
	* objects.c: Likewise.
	* sarray.c: Likewise.
	* selector.c: Likewise.
	* sendmsg.c: Likewise.
	* thr-mach.c: Likewise.
	* thr.c: Likewise.

2002-06-25  DJ Delorie  <dj@redhat.com>

	* aclocal.m4 (GLIBCPP_CONFIGURE): Split out
	GLIBCPP_TOPREL_CONFIGURE.
	* configure.in: Call it before AC_CANONICAL_SYSTEM.
	* configure: Regenerate.

2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Object.m (forward, read, write): Fix unused parameter warnings.
	* encoding.c: Include <stdlib.h>.
	(target_flags): Mark with attribute unused.
	(atoi): Delete.
	* runtime.h (__objc_selector_max_index): Change to unsigned int.
	(__objc_generate_gc_type_description): Prototype.
	* selector.c (__objc_selector_max_index): Change to unsigned int.

Mon Jun 17 18:37:42 2002  Nicola Pero  <n.pero@mi.flashnet.it>

	* sendmsg.c (__objc_get_forward_imp): Fix warning by making sure
	we always have a return value: if __objc_msg_forward does not
	supply a forwarding implementation, return the default
	__builtin_apply based one.

2002-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Object.m: Fix signed/unsigned warning.
	* Protocol.m: Likewise.
	* archive.c: Always include stdlib.h.
	(objc_read_short, objc_read_unsigned_short, objc_read_int,
	objc_read_long, __objc_read_nbyte_uint, __objc_read_nbyte_ulong):
	Fix signed/unsigned warning.
	(objc_write_type, objc_read_type, objc_write_types,
	objc_read_types): Ensure ctype 8-bit safety.
	(__objc_no_write, __objc_no_read): Mark unused parameters.
	* class.c (class_table_setup): Specify void arg.
	* encoding.c (atoi, objc_sizeof_type, objc_alignof_type,
	objc_skip_typespec, objc_skip_offset,
	objc_layout_structure_next_member): Ensure ctype 8-bit safety.
	(objc_layout_structure_next_member): Ensure variables are
	initialized.
	* gc.c (__objc_generate_gc_type_description,
	class_ivar_set_gcinvisible): Mark unused parameters.
	* init.c (__objc_send_load, __objc_destroy_class_tree_node): Mark
	unused parameters.
	(__objc_init_protocols) Fix signed/unsigned warning.
	* nil_method.c (nil_method): Mark unused parameters.
	* thr.h (objc_thread_callback): Specify void arg.
	* sarray.c (sarray_new, sarray_realloc, sarray_free): Fix
	signed/unsigned warning.
	(sarray_free): Fix formatting.
	* selector.c (sel_types_match): Ensure ctype 8-bit safety.
	* sendmsg.c (__objc_init_install_dtable) Mark unused parameters.

2002-06-09  Andreas Jaeger  <aj@suse.de>

	* encoding.c (objc_layout_structure_next_member): Remove unused
	variable.

2002-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (SHELL): Set to @SHELL@.
	(WARN_CFLAGS): New.
	(ALL_CFLAGS): Add $(WARN_CFLAGS).

2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* aclocal.m4: Allow for PWDCMD to override hardcoded pwd.
	* configure: Regenerate.

2002-05-08  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
	script entry, and set LD to it when configuring multilibs.
	* configure: Rebuilt.

2002-04-19  David O'Brien  <obrien@FreeBSD.org>

	* encoding.c (MAX, MIN, ROUNDING): #undef before defining.

2002-04-09  Hans-Peter Nilsson  <hp@bitrange.com>

	PR objc/6107
	* objc/objc-api.h (struct objc_protocol_list): Change type of
	member count from int to size_t.

2002-02-11  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR libobjc/4039
	* aclocal.m4: Replace with version copied from libstdc++-v3.
	* configure.in: Update for changes to aclocal and Makefile.
	* configure: Regenerate.
	* Makefile.in: Correct install of multilibs and shared libs, use
	INSTALL_DATA for include files.

Mon Dec 17 17:02:12 2001  Nicola Pero  <nicola@brainstorm.co.uk>

	* init.c (__objc_exec_class): Fixed bug in the loop on unclaimed
	categories - when an unclaimed category was found, the loop was
	doing two steps forward instead of one, so that in certain cases
	it was failing to properly load all the categories.  (Reported
	with fix by Alexander Malmberg <alexander@malmberg.org>).

2001-11-14  Aldy Hernandez  <aldyh@redhat.com>

	* encoding.c: Add target_flags.

2001-11-07  Aldy Hernandez  <aldyh@redhat.com>

	 * objc/objc-api.h (_C_VECTOR): New.

	 * encoding.c (VECTOR_TYPE): New.

Mon Oct 29 21:29:21 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* class.c: Rewritten the class table to use optimized, lock-free
	lookup.  This more than doubles the speed of class method
	invocations.  (class_table_setup), (class_table_insert),
	(class_table_replace), (class_table_get_safe),
	(class_table_next), (class_table_print),
	(class_table_print_histogram): New functions.
	(__objc_init_class_tables): Use class_table_setup.
	(__objc_add_class_to_hash): Use class_table_get_safe and
	class_table_insert.  (objc_lookup_class), (objc_get_class): Do not
	assert the existence of the table; do not lock the runtime; use
	class_table_get_safe.  (objc_next_class): Use class_table_next.
	(__objc_resolve_class_links): Use class_table_next.
	(class_pose_as): Use class_table_replace.

2001-09-10  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* gc.c: Removed the DEBUG declaration.

Wed Jul 18 12:48:56 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* thr.c (objc_mutex_lock): Invoke __objc_thread_id directly,
	rather than through objc_thread_id, to save a function call.
	(objc_mutex_trylock, objc_mutex_unlock, objc_condition_wait):
	Ditto.

Mon Jul 16 12:15:00 2001  Nicola Pero  <n.pero@mi.flashnet.it>

	* objc/objc-api.h (object_is_class): Fixed - buggy code was trying
	to cast an id to a Class, which can not be done.  Make the check
	by using CLS_ISMETA on the class pointer instead.
	(object_is_meta_class): Similar fix.

2001-06-09  Alexandre Oliva  <aoliva@redhat.com>, Stephen L Moshier  <moshier@mediaone.net>

	* configure.in (AC_EXEEXT): Work around in case it expands to
	nothing, as in autoconf 2.50.
	* acinclude.m4: Likewise.
	* configure: Rebuilt.

2001-06-08  Nicola Pero  <n.pero@mi.flashnet.it>

	* THREADS: Explain that when we compile libobjc inside GCC, we
	always use thr-objc.c as a backend, which uses GCC's thread code.

2001-06-06  Richard Frith-Macdonald  <rrfm@gnu.org>

	* init.c (__objc_send_message_in_list): When setting a new entry
	in __objc_load_methods use the method IMP as key, but check to see
	if the method is in the hashtable by looking at the IMP also.
	Also ... call the method after adding it to the hashtable rather
	than before ... thus preventing an obscure possibility of infinite
	recursion if a +load method itself loads a subclass.

2001-05-25  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* init.c (__objc_send_message_in_list): When setting a new entry
	in __objc_load_methods use the method name as key, not the method
	IMP (reported by Richard Frith-Macdonald <richard@brainstorm.co.uk>).

2001-05-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* objc-features.texi: Move to ../gcc/objc.texi.
	* fdl.texi: Remove.
	* Makefile.in: Don't generate documentation from
	objc-features.texi.

2001-05-01  Mark Mitchell  <mark@codesourcery.com>

	* fdl.texi: New file.
	* objc-features.texi: Simplify.
	* Makefile.in: Adjust accordingly.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* objc-features.texi: Use the GFDL.

Wed Mar 21 04:44:58 EST 2001  John Wehle  (john@feith.com)

	* encoding.c (REAL_TYPE): Define.

2001-03-19  David Edelsohn  <edelsohn@gnu.org>

	* encoding.c (TYPE_MODE): Define.

2001-03-14  Nicola Pero  <n.pero@mi.flashnet.it>

	* thr.c (objc_thread_add): New function.
	(objc_thread_remove): Ditto.
	* objc/thr.h: Declare them.
	* libobjc.def: Mention them.

2001-02-28  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* objc-features.texi: Document the @compatibility_alias compiler
	directive (description from Nicola Pero <n.pero@mi.flashnet.it>).

Fri Feb 23 18:12:00 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sendmsg.c (__objc_forward): Delete strlen() declaration.

2001-02-08  Geoffrey Keating  <geoffk@redhat.com>

	* configure.in: Don't run AC_PROG_CC_WORKS or AC_EXEEXT, because
	we're not interested in the result and they might fail.
	* configure: Regenerated.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* objc-features.texi: Use @email.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* sendmsg.c (__objc_print_dtable_stats): Don't use #ifdef inside
	printf.

2000-01-11  Richard Earnshaw  <rearnsha@arm.com>

	* encoding.c (STRUCTURE_SIZE_BOUNDARY): Redefine in a way that
	determines the value dynamically.

Wed Jan  3 00:49:10 2001  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* sendmsg.c: Added __objc_msg_forward, a hook that allows external
	libraries to provide a function that returns the real forwarding
	function. This can alleviate problems __builtin_apply() and
	friends have on various platforms. (Solution suggested by Helge
	Hess.)

	* objc/objc-api.h: Define __objc_msg_forward.

	* sendmsg.c: Define gen_rtx_REG.

2000-12-06      Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* thr-rtems.c: New file. Stub to compile.

2000-09-06  Alexandre Oliva  <aoliva@redhat.com>

	* configure: Rebuilt with new libtool.m4.

Tue Aug 15 00:38:56 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* configure.in: Create a config.h file. Check for <sched.h>.
	* configure: Regenerate.

	* config.h.in: Check for <sched.h>.

2000-08-14  Zack Weinberg  <zack@wolery.cumb.org>

	* configure: Regenerate after change to ../libtool.m4.

2000-08-14  Andreas Schwab  <schwab@suse.de>

	* objc-features.texi (Top): Move @menu at end of node.

2000-08-11  Manfred Hollstein  <manfredh@redhat.com>

	* objc-features.texi: Move @node Top before @menu.

Sun Aug  6 23:27:49 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* objc-features.texi: Documented the new -fconstant-string-class
	option.

Sun Aug  6 22:51:16 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* thr-posix.c: Integrated Chris Ball's <cball@fmco.com> changes to
	improve the Posix thread support for Objective-C.

2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>

	* aclocal.m4: Replace copy of ../libtool.m4 with
	sinclude(../libtool.m4).

Fri Jul 28 08:58:02 2000  Nicola Pero  <nicola@brainstorm.co.uk>

	* configure.in: Added libtool support; build shared libraries
	if --enable-shared was passed on command line.
	* Makefile.in: Modified most compilation commands to use libtool.
	* aclocal.m4: New symbolic link to the ../libtool.m4, from the
	libtool distribution.

Sat Jul 29 00:10:21 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* sarray.c, Object.m: Removed the explicit prototypes for strlen
	and memcpy on 64-bit platforms (Suggested by Rodney Brown
	<rdb@cup.hp.com>).

2000-05-12  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (GTHREAD_FLAGS): New.
	(ALL_CFLAGS): Add $(GTHREAD_FLAGS).
	(OBJC_THREAD_FILE): Changed to thr-objc.

	* configure.in (GTHREAD_FLAGS): New, check and replace it for
	Makefile.
	(OBJC_THREAD_FILE): Removed.

	* thr-objc.c: New.

2000-07-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* objc/hash.h: Include string.h.

2000-04-15  David Edelsohn  <edelsohn@gnu.org>

	* Object.m (strlen): 64-bit PowerPC is a 64bit platform as well.

2000-04-12  Jakub Jelinek  <jakub@redhat.com>

	* Object.m (strlen): Provide prototype on all 64bit platforms,
	not only alpha.
	* sarray.c (memcpy): Likewise.
	* encoding.c (objc_layout_finish_structure): Don't use
	ROUND_TYPE_ALIGN on sparc.

	* encoding.c (objc_layout_structure_next_member): Do the whole
	procedure even for the first member, so that we get correct
	alignment.

2000-03-29  Zack Weinberg  <zack@wolery.cumb.org>

	* objc/Protocol.h, objc/objc-list.h: Change #endif labels to
	comments.

2000-02-23  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in: Add -DIN_TARGET_LIBS to ALL_CFLAGS.

Thu Sep 23 07:19:12 1999   Chris Ball <cball@fmco.com>

	* thr-posix.c (__objc_mutex_deallocate): made deallocate work.

Tue Sep 21 07:47:10 1999  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (gc.o, gc_gc.o): Do not pass -fgnu-runtime to
	the compiler when building C code.

Fri Aug  6 23:32:29 1999  Daniel Jacobowitz <drow@drow.them.org>

	* Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix,
	libdir, libsubdir and tooldir.

Mon Jun 21 05:40:15 1999  John David Anglin <dave@hiauly1>

	* init.c (__objc_force_linking): Make global.

Thu May 20 03:20:59 1999  Jeffrey A Law  (law@cygnus.com)

	* configure.in (AC_EXEEXT): Remove call.
	(compiler_name): Explicitly check with no extension and .exe
	extension.
	* configure: Regenerate.

Sun Apr 25 01:15:34 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* Makefile.in (CC1OBJ): Define in terms of CC.
	(runtime-info.h): Use.

Fri April 8 08:21:07 1999 Ovidiu Predescu <ovidiu@cup.hp.com>

	* objc-features.texi: Updated the URL to Boehm's GC page.

Fri Mar 26 23:41:07 1999 Ovidiu Predescu <ovidiu@cup.hp.com>

	* archive.c (__objc_code_char, __objc_write_char): Explicitly specify
	the char as being signed (patch from Daniel Jacobowitz
	<drow@false.org>).

Wed Mar 24 22:41:28 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* configure.in (AC_PREREQ): Update to 2.13.
	(AC_EXEEXT): Call to find possible file extension.
	(compiler_name): Use.
	* configure: Regenerate.

Wed Jan 27 02:31:01 1999  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (ALL_CFLAGS): Add -DIN_GCC.

Tue Jan  5 01:38:53 1999  Jeffrey A Law  (law@cygnus.com)

	* configure.in (thread_file): Correct and simplify code to find
	the thread file.
	* configure: Rebuilt.

1998-11-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* configure.in (compiler_name): Add check to detect if this
	language's compiler has been built.
	* configure: Regenerate.

Mon Nov 23 16:50:28 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	*  configure.in: Use AC_PREREQ(2.12.1).

Thu Nov 19 20:33:37 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (runtime-info.h): Avoid GNU make extensions.

Sun Nov  8 17:46:14 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (INCLUDES): Add -I$(srcdir)/$(MULTISRCTOP)../include.

Thu Oct 22 14:34:06 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Use AC_CONFIG_AUX_DIR($topsrcdir).

Sat Oct 17 05:21:31 1998  Ovidiu Predescu  <ovidiu@slip.net>

	* objc-features.texi (Top): Changed the email address.
	* objc-features.texi (Garbage Collection): Use @uref instead of @url.

Mon Oct 11 21:25:27 1998  Ovidiu Predescu  <ovidiu@slip.net>

	* encoding.c: Redefine get_inner_array_type to get the first entry
	in the structure.

Thu Oct  8 12:21:14 1998  Richard Frith-Macdonald <richard@brainstorm.co.uk>

	* encoding.c (objc_skip_type_qualifiers): Handle _C_BYREF.
	(objc_get_type_qualifiers): Similarly.
	* objc/encoding.h (_C_BYREF): Define.
	(_F_BYREF): Define.

1998-10-07  David S. Miller  <davem@pierdol.cobaltmicro.com>

	* objc/sarray.h: Make boffset be an unsigned long when sparc so it
	works out on 64-bit systems.

Tue Oct  6 20:32:06 1998  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* Makefile.in (INCLUDES): Make it multilib-friendly.

Fri Oct  2 07:12:14 1998  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (INCLUDES): Add -I$(srcdir)/../gcc.

Thu Oct  1 22:33:03 1998 Robert Lipe  <robertl@dgii.com>
			 Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INCLUDES): Reference gcc via $MULTIBUILDTOP.
	(FLAGS_TO_PASS): Added.
	(runtime-info.h): Reference cc1ibj via $MULTIBUILDTOP.

	* archive.c: Change config.h to tconfig.h.

	* configure.in: Find gcc's object directory even for multilibs.

Wed Sep 30 18:17:17 1998  Robert Lipe  <robertl@dgii.com>

	* configure.in: Escape ^ in grep string.
	* configure: Rebuilt.

Wed Sep 30 09:14:52 1998  Jeffrey A Law  (law@cygnus.com)

	* All .h files pushed down into the objc/ subdirectory.
	* Makefile.in (copy_headers): Corresponding changes.
	* configure.in (AC_INIT): Corresponding changes.
	* configure: Rebuilt.

1998-09-30  Ben Elliston  <bje@cygnus.com>
	    Jeff Law	  <law@cygnus.com>

	* Makefile.in: Rewrite.

	* configure.in: Likewise.

	* configure: Regenerate.

	* All .c files.  Remove "objc" prefix when including objc header
	files.  Include tconfig.h, not ../tconfig.h.

Mon Sep 21 23:27:10 1998  Ovidiu Predescu <ovidiu@slip.net>

	* encoding.c (TREE_TYPE, ARRAY_TYPE): Define.
	(get_inner_array_type): Define.

1998-09-21  Ben Elliston  <bje@cygnus.com>

	* New directory.  Moved files from ../gcc/objc.
