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

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

Makefile.in; configure; configure.in
	Please notify the following of any committed patches.
		binutils@sources.redhat.com
		gdb-patches@sources.redhat.com

bfd/; binutils/; gas/; gprof/; ld/; opcodes/; BFD's part of include/
	binutils: http://sources.redhat.com/binutils/
	Patches to binutils@sources.redhat.com.
	Please notify the following of any interface changes:
		gdb-patches@sources.redhat.com

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

config.guess; config.sub; dejagnu/config.guess;
readline/support/config.sub; readline/support/config.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.
	Please notify the following of any committed patches:
		binutils@sources.redhat.com
		gdb-patches@sources.redhat.com

dejagnu/
	Notify http://dejagnu.sourceforge.net/ of generic changes.
	Generic patches to gdb-patches@sources.redhat.com;
	Other dependents of dejagnu include sid@, binutils@, gcc@, etc.

gdb/; mmalloc/; readline/; sim/; GDB's part of include/ & dejagnu/
	gdb: http://sources.redhat.com/gdb/
	Patches to gdb-patches@sources.redhat.com.
	See also gdb/MAINTAINERS, sim/MAINTAINERS, mmalloc/MAINTAINERS.

include/
	See binutils/, gdb/, sid/, gcc/, libiberty/ etc.

libiberty/; libiberty's part of include/ 
	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
	are automatically approved in this libiberty also; feel free
	to merge them yourself if needed sooner than the next merge.
	Otherwise, changes are automatically merged, usually within
	a day.

ltconfig; ltmain.sh
	libtool: http://gnu.org
	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.

mkinstalldirs; move-if-change
	autoconf: http://gnu.org
	Patches to autoconf-patches@gnu.org.
	Changes need to be done in tandem with the official AUTOCONF
	sources or submitted to the master file maintainer and brought
	in via a merge.

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

newlib/; libgloss/
	http://sources.redhat.com/newlib/
	Patches to newlib@sources.redhat.com.

sid/; SID's part of cgen/ & dejagnu/
	sid: http://sources.redhat.com/sid/
	Patches to sid@sources.redhat.com

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://sources.redhat.com/insight/
	Contact insight@sources.redhat.com.

winsup/
	cygwin: http://sources.redhat.com/cygwin
	Patches to cygwin-patches@sources.redhat.com.
	General discussion cygwin@sources.redhat.com.
	See also winsup/MAINTAINERS.

expect/; config-ml.in; mpw-README; mpw-build.in; mpw-config.in;
mpw-configure; mpw-install; setup.com; missing; makefile.vms; utils/;
config/; config.if; makefile.vms; missing; ylwrap; mkdep; etc/;
install-sh; intl/
	Ask DJ Delorie <dj@redhat.com> after reading the libiberty entry.

modules file
	Obviously changes to this file should not go through
	overseers@sources.redhat.com.  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: */
