2007-07-19  Release Manager

	* GCC 4.2.1 released.

2007-05-13  Release Manager

	* GCC 4.2.0 released.

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.
