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/;
BFD's part 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/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/; 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: */
