2018-10-31  Joseph Myers  <joseph@codesourcery.com>

	PR bootstrap/82856
	* configure.ac: Remove AC_PREREQ.
	* aclocal.m4, config.h.in, configure: Regenerate.

2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

2018-04-19  Jakub Jelinek  <jakub@redhat.com>

	* configure: Regenerated.

2018-04-18  David Malcolm  <dmalcolm@redhat.com>

	PR jit/85384
	* configure: Regenerate.

2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>

	PR target/84148
	* configure: Regenerate.

2018-01-03  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2017-11-23  Tom de Vries  <tom@codesourcery.com>

	* class.c (CLASS_TABLE_HASH): Wrap in "do {} while (0)".

2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>

	* Makefile.in: Regenerate.
	* aclocal.m4: Likeiwse.
	* configure: Likewise.
	* configure.ac: Set CET_FLAGS. Update XCFLAGS.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* encoding.c (_darwin_rs6000_special_round_type_align): Prefix mode
	names with E_ in case statements.

2017-02-07  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79256
	PR middle-end/79278
	* encoding.c (objc_layout_structure_next_member): Adjust
	ADJUST_FIELD_ALIGN usage.

2017-01-18  Matthias Klose  <doko@ubuntu.com>

	PR libobjc/78697
	* configure.ac: Allow default for --with-target-bdw-gc-include.
	* configure: Regenerate.

	PR libobjc/78698
	* configure.ac: Use the libgc.la file when available.
	* configure: Regenerate.

2017-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR other/79046
	* configure: Regenerated.
	* configure.ac: Add GCC_BASE_VER.
	* Makefile.in (gcc_version): Use @get_gcc_base_ver@ instead of cat to
	get version from BASE-VER file.
	* configure: Regenerated.

2017-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2016-12-01  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Don't use pkg-config to check for bdw-gc.
	* configure: Regenerate.

2016-11-30  Matthias Klose  <doko@ubuntu.com>

	* configure.ac: Set BDW_GC_CFLAGS and BDW_GC_LIBS after checking
	for the existence of the pkg-config modules.
	* Regenerate.

2016-11-30  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac (--enable-objc-gc): If not given, default to
	enable_objc_gc=no.
	* configure: Regenerated.

2016-11-30  Matthias Klose  <doko@ubuntu.com>

	* configure.ac (--enable-objc-gc): Allow to configure with a
	system provided boehm-gc.
	* configure: Regenerate.
	* Makefile.in (OBJC_BOEHM_GC_LIBS): Get value from configure.
	* gc.c: Include system bdw-gc headers.
	* memory.c: Likewise.
	* objects.c: Likewise.

2016-11-15  Matthias Klose  <doko@ubuntu.com>

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

2016-01-04  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2015-11-07  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	PR libobjc/24775
	* encoding.c (_darwin_rs6000_special_round_type_align): Use
	__CHAR_BIT__ instead of BITS_PER_UNIT.
	(objc_sizeof_type): Likewise.
	(objc_layout_structure): Likewise.
	(objc_layout_structure_next_member): Likewise.
	(objc_layout_finish_structure): Likewise.
	(objc_layout_structure_get_info): Likewise.

2015-11-03  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	PR libobjc/24775
	* encoding.c (objc_layout_finish_structure): Remove usage of
	ROUND_TYPE_SIZE.

2015-09-12  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	PR libobjc/24775
	* sendmsg.c (tm.h): Remove include.

2015-09-12  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	PR libobjc/24775
	* sendmsg.c (gen_rtx): Remove macro.
	(gen_rtx_MEM): Likewise.
	(gen_rtx_REG): Likewise.
	(rtx): Likewise.

2015-09-12  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	PR libobjc/24775
	* sendmsg.c: Remove check of STRUCT_VALUE macro.

2015-05-13  Eric Botcazou  <ebotcazou@adacore.com>

	* configure.ac: Remove manual SJLJ check.
	* config.h.in: Regenerate.
	* configure: Likewise.
	* exception.c: Replace SJLJ_EXCEPTIONS by __USING_SJLJ_EXCEPTIONS__.

2015-05-13  Michael Haubenwallner  <michael.haubenwallner@ssi-schaefer.com>

	* aclocal.m4: Regenerated with automake-1.11.6.

2015-05-04  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* configure: Regenerate.

2015-05-01  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* acinclude.m4: Include bitfields.m4.
	* config.h.in: Regenerate.
	* configure: Likewise.
	* configure.ac: Invoke gt_BITFIELD_TYPE_MATTERS.
	* encoding.c: Check HAVE_BITFIELD_TYPE_MATTERS.

2015-04-29  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* encoding.c (objc_layout_structure_next_member): Check the value of
	PCC_BITFIELD_TYPE_MATTERS not if it is defined.

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.

Copyright (C) 1998-2018 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
