			GDB Maintainers


			Blanket Write Privs
			   (alphabetic)

Jim Blandy			jimb@redhat.com
Kevin Buettner			kevinb@redhat.com
Andrew Cagney			ac131313@redhat.com
J.T. Conklin			jtc@redback.com
Fred Fish			fnf@ninemoons.com
Mark Kettenis           	kettenis@gnu.org
Peter Schauer			Peter.Schauer@regent.e-technik.tu-muenchen.de
Stan Shebs			shebs@apple.com
Michael Snyder			msnyder@redhat.com
Elena Zannoni			ezannoni@redhat.com
Eli Zaretskii			eliz@gnu.org


			Various Maintainers

Note individuals who maintain parts of the debugger need approval to
check in changes outside of the immediate domain that they maintain.

If there is no maintainer for a given domain then the responsibility
falls to the head maintainer.

If there are several maintainers for a given domain then
responsibility falls to the first maintainer.  The first maintainer is
free to devolve that responsibility among the other maintainers.


                        The Obvious Fix Rule

All maintainers listed in this file are allowed to check in obvious
fixes.

An "obvious fix" means that there is no possibility that anyone will
disagree with the change.

A good mental test is "will the person who hates my work the most be
able to find fault with the change" - if so, then it's not obvious and
needs to be posted first. :-)

Something like changing or bypassing an interface is _not_ an obvious
fix, since such a change without discussion will result in
instantaneous and loud complaints.


Target/Architecture:

Generic ISA (Instruction Set Architecture) issues, API variants, CPU
variants.  *-tdep.c. The Target/Architecture maintainer works with the
host maintainer when resolving build issues.  The Target/Architecture
maintainer works with the native maintainer when resolving API issues.

	a29k		Deleted.

	alpha		--target=alpha-dec-osf4.0a -Werror
			Maintenance only

	arc		--target=arc-elf ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	arm		--target=arm-elf -w
			Fernando Nasser		fnasser@redhat.com
			Scott Bambrough		scottb@netwinder.org
			Richard Earnshaw	rearnsha@arm.com
			Not multi-arch

	avr		--target=avr ,-Werror
			Theodore A. Roth	troth@verinet.com

	cris		--target=cris-elf ,-Werror
			Orjan Friberg		orjanf@axis.com

	d10v		--target=d10v-elf ,-Werror
			Maintenance only

	d30v		--target=d30v-elf ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	djgpp		--target=i586-pc-msdosdjgpp ,-Werror
			(See native and host)

	fr30		--target=fr30-elf -Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	h8300		--target=h8300hms -Werror
			Maintenance only
			Not multi-arch, work in progress

	h8500		--target=h8500hms -Werror
			Maintenance only
			Not multi-arch, work in progress

	i386		--target=i386-elf,i386-aout ,-Werror
			Mark Kettenis           kettenis@gnu.org

	i960		--target=i960-coff ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	ia64		--target=ia64-linux ,-Werror
			Kevin Buettner		kevinb@redhat.com

	m32r		--target=m32r-elf -Werror
			Michael Snyder		msnyder@redhat.com
			Not multi-arch

	m68hc11		--target=m68hc11-elf ,-Werror
			Stephane Carrez		stcarrez@nerim.fr

	m68k		--target=m68k-elf ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	m88k		--target=m88k ,-Werror
			Known problem in 5.1
			Maintenance only
			OBSOLETE candidate, not multi-arch

	mcore		--target=mcore-elf,mcore-pe ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	mips		--target=mips-elf,mips64-elf ,-Werror
			Andrew Cagney		cagney@redhat.com

	mn10200		--target=mn10200-elf ,-Werror
			Maintenance only
			OBSOLETE candidate, not multi-arch

	mn10300		--target=mn10300-elf ,-Werror
			Maintenance only

	ns32k		--target=ns32k-netbsd ,-Werror
			Maintenance only

	pa		(--target=hppa1.1-hp-proelf broken)
			Maintenance only
			OBSOLETE candidate, not multi-arch

	powerpc		--target=powerpc-eabi ,-Werror
			Kevin Buettner		kevinb@redhat.com

	rs6000		--target=rs6000-ibm-aix4.1 ,-Werror
			(see rs6000 native and ppc target)

	s390		--target=s390-linux ,-Werror
			(contact DJ Barrow	djbarrow@de.ibm.com)

	sh		--target=sh-elf ,-Werror
			Elena Zannoni		ezannoni@redhat.com

	sparc		--target=sparc-elf,sparc64-elf ,-Werror
			Maintenance only

	tic80		Deleted.

	v850		--target=v850-elf ,-Werror
			Maintenance only

	vax		--target=vax-dec-vms5.5 ,-Werror
			Maintenance only

	w65		Deleted.

	x86-64		(--target=x86_64-linux-gnu broken)
			Maintenance only

	xstormy16	--target=xstormy16-elf ,-Werror
			Corinna Vinschen	vinschen@redhat.com

	z8k		--target=z8k-coff ,-Werror
			Known problem in 5.1
			Maintenance only
			OBSOLETE candidate, not multi-arch

All developers recognized by this file can make arbitrary changes to
OBSOLETE targets.

All maintainers can test and thence approve non-trivial changes to
``maintenance only'' targets submitted by recognized developers.

All recognized developers can make mechanical changes (by virtue of
the obvious fix rule) to ``maintenance only'' targets.  The change
shall be sanity checked by compiling with one of the listed targets.

The Bourne shell script:

cat MAINTAINERS | tr -s '[\t]' '[ ]' | sed -n '
/^[ ]*[-a-z0-9\.]*[ ]*[(]*--target=.*/ !d
s/^.*--target=//
s/).*$//
h
:loop
  g
  /^[^ ]*,/ !b end
  s/,[^ ]*//
  p
  g
  s/^[^,]*,//
  h
b loop
:end
p
'

can be used to generate a complete list of --target=
--enable-gdb-build-warnings= pairs of the form:

	arc-elf ,-Werror
	...
	hppa1.1-hp-proelf broken
	...

While the ``broken'' targets are included in the listing, the are not
expected to build.


Host/Native:

The Native maintainer is responsible for target specific native
support - typically shared libraries and quirks to procfs/ptrace/...
The Native maintainer works with the Arch and Core maintainers when
resolving more generic problems.

The host maintainer ensures that gdb (including mmalloc) can be built
as a cross debugger on their platform.

AIX			Peter Schauer		Peter.Schauer@regent.e-technik.tu-muenchen.de
			Kevin Buettner		kevinb@redhat.com

djgpp native		Eli Zaretskii		eliz@gnu.org
			DJ Delorie		dj@redhat.com
MS Windows (NT, CE, '00, 9x, Me) host & native
			Chris Faylor		cgf@redhat.com
GNU/Linux/x86 native & host
			Mark Kettenis		kettenis@gnu.org
			Jim Blandy		jimb@redhat.com
GNU/Linux PPC native	Kevin Buettner		kevinb@redhat.com
GNU/Linux MIPS native & host
			Daniel Jacobowitz	dan@debian.org
GNU/Linux m68k		Andreas Schwab		schwab@suse.de
FreeBSD native & host	Mark Kettenis		kettenis@gnu.org
			David O'Brien		obrien@freebsd.org
hurd native		Mark Kettenis		kettenis@gnu.org
NetBSD native & host	Jason Thorpe		thorpej@wasabisystems.com
SCO/Unixware		Robert Lipe		rjl@sco.com
GNU/Linux ARM native	Scott Bambrough		scottb@netwinder.org
Solaris/x86 native & host (devolved)
			Peter Schauer		Peter.Schauer@regent.e-technik.tu-muenchen.de
Solaris/SPARC native & host (devolved)
                        Michael Snyder          msnyder@redhat.com



Core: Generic components used by all of GDB

generic arch support	Andrew Cagney		cagney@redhat.com
			Any host/target maintainer can add to
			gdbarch.{c,h,sh}.  Send tricky ones to cagney.
target vector		Andrew Cagney		cagney@redhat.com
main (main.c, top.c)	Elena Zannoni		ezannoni@redhat.com
event loop		Elena Zannoni           ezannoni@redhat.com

generic symtabs		Jim Blandy		jimb@redhat.com
			Elena Zannoni		ezannoni@redhat.com
  dwarf readers		Jim Blandy		jimb@redhat.com
			Elena Zannoni		ezannoni@redhat.com
  elf reader		Jim Blandy		jimb@redhat.com
			Elena Zannoni		ezannoni@redhat.com
  stabs reader		Jim Blandy		jimb@redhat.com
			Elena Zannoni		ezannoni@redhat.com
  coff reader		Philippe De Muyter	phdm@macqel.be
  xcoff reader		Any maintainer can modify this; please send tricky
			ones to Kevin Buettner <kevinb@redhat.com>
  linespec		Jim Blandy		jimb@redhat.com
			Elena Zannoni		ezannoni@redhat.com
			Fernando Nasser		fnasser@redhat.com
  HP/UX readers		Any [past] maintainer can modify this.
			Please send tricky ones to the symtabs maintainers.

tracing bytecode stuff  Jim Blandy              jimb@redhat.com
tracing			Michael Snyder		msnyder@redhat.com
threads			Michael Snyder		msnyder@redhat.com
			Mark Kettenis		kettenis@gnu.org
breakpoints		Michael Snyder		msnyder@redhat.com
			Jim Blandy		jimb@redhat.com
language support	(Blanket Write Privs Maintainers)
  C++			Daniel Jacobowitz	dan@debian.org
  Java support (devolved)
			Per Bothner		per@bothner.com
			Anthony Green 		green@redhat.com
  Pascal support	Pierre Muller		muller@sources.redhat.com
  Scheme support	Jim Blandy		jimb@redhat.com

shared libs (devolved)	Jim Blandy		jimb@redhat.com
			Kevin Buettner		kevinb@redhat.com
  xcoffsolib		Peter Schauer		Peter.Schauer@regent.e-technik.tu-muenchen.de

remote.c		Andrew Cagney		cagney@redhat.com
include/remote-sim.h, remote-sim.c
			Andrew Cagney		cagney@redhat.com
sds protocol		Fernando Nasser		fnasser@redhat.com
rdi/adp protocol	Fernando Nasser		fnasser@redhat.com
documentation		Eli Zaretskii		eliz@gnu.org
testsuite		Fernando Nasser		fnasser@redhat.com
  config                Mark Salter             msalter@redhat.com
  lib                   Mark Salter             msalter@redhat.com
  gdbtk (gdb.gdbtk)     Keith Seitz             keiths@redhat.com
  c++ (gdb.c++)		Michael Chastain	mec@shout.net
  mi tests (gdb.mi)     Elena Zannoni           ezannoni@redhat.com
                        Andrew Cagney           cagney@redhat.com
  stabs (gdb.stabs)     Elena Zannoni           ezannoni@redhat.com
  threads (gdb.threads) Michael Snyder          msnyder@redhat.com
  trace (gdb.trace)     Michael Snyder          msnyder@redhat.com
  hp tests (gdb.hp)	(vacant)
  Java tests (gdb.java)	Anthony Green 		green@redhat.com
Kernel Object Display	Fernando Nasser		fnasser@redhat.com


UI: External (user) interfaces.

command interpreter	Fernando Nasser		fnasser@redhat.com
gdbtk (c & tcl)		Jim Ingham		jingham@apple.com
			Fernando Nasser         fnasser@redhat.com
			Keith Seitz		keiths@redhat.com
libgui (w/foundry, sn)	Jim Ingham              jingham@apple.com
			Keith Seitz		keiths@redhat.com
mi (gdb/mi)		Andrew Cagney		cagney@redhat.com
			Elena Zannoni           ezannoni@redhat.com
			Fernando Nasser		fnasser@redhat.com
tui			(vacant)
			Technical Contact Point	wdb@cup.hp.com


Misc:

gdb/gdbserver		Daniel Jacobowitz	dan@debian.org

Web pages.		Jim Kingdon		jkingdon@engr.sgi.com  ++
			(anyone can edit; kingdon is just lead maintainer)

Makefile.in, configure*	ALL

mmalloc/		ALL Host maintainers

NEWS			ALL

sim/			See sim/MAINTAINERS

readline/		Master version: ftp://ftp.cwru.edu/pub/bash/
			Elena Zannoni		ezannoni@redhat.com
			Host maintainers (host dependant parts)
			(but get your changes into the master version)

tcl/ tk/ itcl/		Ian Roxborough		irox@redhat.com

			Write After Approval
			   (alphabetic)

To get recommended for the Write After Approval list you need a valid
FSF assignment and have submitted one good patch.

David Anderson					davea@sgi.com
Scott Bambrough					scottb@netwinder.org
Jim Blandy					jimb@redhat.com
Philip Blundell					philb@gnu.org
Per Bothner					per@bothner.com
Joel Brobecker					brobecker@act-europe.fr
Dave Brolley					brolley@redhat.com
Kevin Buettner					kevinb@redhat.com
Andrew Cagney					ac131313@redhat.com
Stephane Carrez					stcarrez@nerim.fr
Michael Chastain				mec@shout.net
Eric Christopher				echristo@redhat.com
Nick Clifton					nickc@redhat.com
Philippe De Muyter				phdm@macqel.be
Chris G. Demetriou				cgd@broadcom.com
Klee Dienes					kdienes@apple.com
DJ Delorie					dj@redhat.com
Richard Earnshaw				rearnsha@arm.com
Frank Ch. Eigler				fche@redhat.com
Ben Elliston					bje@redhat.com
Anthony Green			 		green@redhat.com
Matthew Green					mrg@eterna.com.au
Chris Faylor					cgf@redhat.com
Fred Fish					fnf@ninemoons.com
Orjan Friberg					orjanf@axis.com
Ben Harris					bjh21@netbsd.org
Richard Henderson				rth@redhat.com
Aldy Hernandez					aldyh@redhat.com
Paul Hilfinger					hilfinger@gnat.com
Matt Hiller					hiller@redhat.com
Kazu Hirata					kazu@hxi.com
Jeff Holcomb					jeffh@redhat.com
Don Howard					dhoward@redhat.com
Martin Hunt					hunt@redhat.com
Jim Ingham					jingham@apple.com
Daniel Jacobowitz				dan@debian.org
Andreas Jaeger					aj@suse.de
Geoff Keating					geoffk@redhat.com
Mark Kettenis					kettenis@gnu.org
Jim Kingdon					jkingdon@engr.sgi.com  ++
Jeff Law					law@redhat.com
Jonathan Larmour				jlarmour@redhat.co.uk
Robert Lipe					rjl@sco.com
H.J. Lu						hjl@lucon.org
Michal Ludvig                                   mludvig@suse.cz
Glen McCready					gkm@redhat.com
Greg McGary					greg@mcgary.org
Jason Merrill					jason@redhat.com
David S. Miller					davem@redhat.com
Jason Molenda					jmolenda@apple.com
Pierre Muller					muller@sources.redhat.com
Fernando Nasser					fnasser@redhat.com
David O'Brien					obrien@freebsd.org
Alexandre Oliva					aoliva@redhat.com
Tom Rix						trix@redhat.com
Theodore A. Roth				troth@verinet.com
Ian Roxborough					irox@redhat.com
Grace Sainsbury					graces@redhat.com
Mark Salter					msalter@redhat.com
Peter Schauer					Peter.Schauer@regent
Andreas Schwab					schwab@suse.de
Keith Seitz					keiths@redhat.com
Jiri Smid					smid@suse.cz
David Smith					dsmith@redhat.com
Stephen P. Smith				ischis2@home.com
Jackie Smith Cashion				jsmith@redhat.com
Stan Shebs					shebs@apple.com
Michael Snyder					msnyder@redhat.com
Petr Sorfa					petrs@caldera.com
Gary Thomas					gthomas@redhat.com
Jason Thorpe					thorpej@wasabisystems.com
Tom Tromey					tromey@redhat.com
Corinna Vinschen				vinschen@redhat.com
Keith Walker					keith.walker@arm.com
Elena Zannoni					ezannoni@redhat.com
Eli Zaretskii					eliz@gnu.org



			Past Maintainers

Jimmy Guo (gdb.hp, tui)				guo at cup dot hp dot com
Jeff Law (hppa)					law at cygnus dot com
Daniel Berlin (C++ support)			dan at cgsoftware dot com
Nick Duffek (powerpc, SCO, Sol/x86)		nick at duffek dot com
David Taylor (d10v, sparc, utils, defs,
  expression evaluator, language support)	taylor at candd dot org
J.T. Conklin (dcache, NetBSD, remote)		jtc at redback dot com
Frank Ch. Eigler (sim)				fche at redhat dot com



Folks that have been caught up in a paper trail:

Jim Kingdon					jkingdon@engr.sgi.com

--

(*) Indicates folks that don't have a Kerberos/SSH account in the GDB
group.
