Please feel free to add, edit, delete this file.
Please do not make ChangeLog entries.

COPYING, COPYING.LIB, README
	http://gnu.org.

Makefile.*; configure; configure.ac; src-release
	Any global maintainer can approve changes to these
	files, but they should be aware	that they need to
	be kept in sync with their counterparts in the GCC
	repository.  Also please notify the following of
	any committed patches:
		binutils@sourceware.org
		gdb-patches@sourceware.org

bfd/; binutils/; elfcpp/; gas/; gold/; gprof/; ld/; opcodes/; cpu/;
libctf/; BFD's and libctf's parts of include/

	binutils: http://sourceware.org/binutils/
	Patches to binutils@sourceware.org.
	Please notify the following of any interface changes:
		gdb-patches@sourceware.org

cgen/; cgen parts of opcodes/, sim/ & include/
	cgen: http://sourceware.org/cgen/
	Patches to cgen@sourceware.org
	May need separate opcodes/ or sim/ approval for
		commits of regenerated files there.

config.guess; config.sub; readline/readline/support/config.{sub,guess}
	config: http://savannah.gnu.org/projects/config
	Patches to config-patches@gnu.org.
	Changes need to be done in tandem with the official CONFIG
	sources or submitted to the master file maintainer and brought
	in via a merge.  When updating any of these files, please be
	sure to update all of them.
	Please notify the following of any committed patches:
		binutils@sourceware.org
		gdb-patches@sourceware.org

depcomp; mkinstalldirs
        Send bug reports and patches to bug-automake@gnu.org.

gdb/; gdbserver/; gdbsupport/; gnulib/; readline/; sim/; GDB's part of include/
	GDB: http://www.gnu.org/software/gdb/
	Patches to gdb-patches@sourceware.org.
	See also gdb/MAINTAINERS and sim/MAINTAINERS.

include/
	The rule is that if the file exists in the gcc tree
	then gcc owns it.  Thus you have to look at the gcc tree
	to know whether any particular file is owned by gcc.
	See also binutils/, gdb/, sid/, gcc/, libiberty/ etc.

intl/; config.rhost; libiberty/; libiberty's part of include/;
compile; depcomp; install-sh; missing; ylwrap; config/
	gcc: http://gcc.gnu.org
	Changes need to be done in tandem with the official GCC
	sources or submitted to the master file maintainer and brought
	in via a merge.  Note: approved patches in gcc's libiberty or
	intl are automatically approved in this libiberty and intl also;
	feel free to merge them yourself if needed sooner than the next
	merge.  Otherwise, changes are automatically merged, usually
	within a day.

libdecnumber/
	See libiberty.  The master copy of this directory is in the GCC
	repository.

ltconfig; ltmain.sh; ltcf-*.sh
	libtool: http://www.gnu.org/software/libtool/
	Changes need to be done in tandem with the official LIBTOOL
	sources or submitted to the master file maintainer and brought
	in via a merge.

move-if-change
	Send bug reports and patches to bug-gnulib@gnu.org.

symlink-tree
	gcc: http://gcc.gnu.org
	See libiberty.

newlib/; libgloss/
	http://sourceware.org/newlib/
	Patches to newlib@sourceware.org.

sid/; SID's part of cgen/
	sid: http://sourceware.org/sid/
	Patches to sid@sourceware.org

texinfo/texinfo.tex
	texinfo: http://ftp.gnu.org.
	Latest version can be found on ftp://ftp.gnu.org and can be
	imported at any (reasonable) time.
	Please not use GCC's texinfo.  Please do not import texinfo.

tcl/; tix/; itcl/; tk/; libgui/
	insight: http://sourceware.org/insight/
	Contact insight@sourceware.org.

winsup/
	cygwin: http://sourceware.org/cygwin
	Patches to cygwin-patches@cygwin.com.
	General discussion cygwin@cygwin.com.

config-ml.in; makefile.vms; mkdep; setup.com;
etc/; utils/;
	Any global maintainer can approve changes to these
	files and directories.

modules file
	If you understand the file format (or can cut-and-paste existing
	entries), modify it. If it scares you, get someone who does
	understand it to help you.  Be prepared to fix it if you do break it.

/* Local variables: */
/* change-log-default-name: "/dev/null" */
/* End: */
