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-2017 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.
