		GDB Maintainers
		===============


		   Overview
		   --------

This file describes different groups of people who are, together, the
maintainers and developers of the GDB project.  Don't worry - it sounds
more complicated than it really is.

There are four groups of GDB developers, covering the patch development and
review process:

  - The Global Maintainers.

    These are the developers in charge of most daily development.  They
    have wide authority to apply and reject patches, but defer to the
    Responsible Maintainers (see below) within their spheres of
    responsibility.

  - The Responsible Maintainers.

    These are developers who have expertise and interest in a particular
    area of GDB, who are generally available to review patches, and who
    prefer to enforce a single vision within their areas.

  - The Authorized Committers.

    These are developers who are trusted to make changes within a specific
    area of GDB without additional oversight.

  - The Write After Approval Maintainers.

    These are developers who have write access to the GDB source tree.  They
    can check in their own changes once a developer with the appropriate
    authority has approved the changes; they can also apply the Obvious
    Fix Rule (below).

All maintainers are encouraged to post major patches to the gdb-patches
mailing list for comments, even if they have the authority to commit the
patch without review from another maintainer.  This especially includes
patches which change internal interfaces (e.g. global functions, data
structures) or external interfaces (e.g. user, remote, MI, et cetera).

The term "review" is used in this file to describe several kinds of feedback
from a maintainer: approval, rejection, and requests for changes or
clarification with the intention of approving a revised version.  Review is
a privilege and/or responsibility of various positions among the GDB
Maintainers.  Of course, anyone - whether they hold a position but not the
relevant one for a particular patch, or are just following along on the
mailing lists for fun, or anything in between - may suggest changes or
ask questions about a patch!

There's also a couple of other people who play special roles in the GDB
community, separately from the patch process:

  - The Official FSF-appointed GDB Maintainers.

    These maintainers are the ones who take the overall responsibility
    for GDB, as a package of the GNU project.  Other GDB contributors
    work under the official maintainers' supervision.  They have final
    and overriding authority for all GDB-related decisions, including
    anything described in this file.  As individuals, they may or not
    be generally involved in day-to-day development.

  - The Release Manager.

    This developer is in charge of making new releases of GDB.

  - The Patch Champions.

    These volunteers make sure that no contribution is overlooked or
    forgotten.

Most changes to the list of maintainers in this file are handled by
consensus among the global maintainers and any other involved parties.
In cases where consensus can not be reached, the global maintainers may
ask the official FSF-appointed GDB maintainers for a final decision.


			The Obvious Fix Rule
			--------------------

All maintainers listed in this file, including the Write After Approval
developers, 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.

For documentation changes, about the only kind of fix that is obvious
is correction of a typo or bad English usage.


	     The Official FSF-appointed GDB Maintainers
	     ------------------------------------------

These maintainers as a group have final authority for all GDB-related
topics; they may make whatever changes that they deem necessary, or
that the FSF requests.

The current official FSF-appointed GDB maintainers are listed below,
in alphabetical order.  Their affiliations are provided for reference
only - their maintainership status is individual and not through their
affiliation, and they act on behalf of the GNU project.

       Pedro Alves (Red Hat)
       Joel Brobecker (AdaCore)
       Doug Evans (Google)
       Eli Zaretskii

		  Global Maintainers
		  ------------------

The global maintainers may review and commit any change to GDB, except in
areas with a Responsible Maintainer available.  For major changes, or
changes to areas with other active developers, global maintainers are
strongly encouraged to post their own patches for feedback before
committing.

The global maintainers are responsible for reviewing patches to any area
for which no Responsible Maintainer is listed.

Global maintainers also have the authority to revert patches which should
not have been applied, e.g. patches which were not approved, controversial
patches committed under the Obvious Fix Rule, patches with important bugs
that can't be immediately fixed, or patches which go against an accepted and
documented roadmap for GDB development.  Any global maintainer may request
the reversion of a patch.  If no global maintainer, or responsible
maintainer in the affected areas, supports the patch (except for the
maintainer who originally committed it), then after 48 hours the maintainer
who called for the reversion may revert the patch.

No one may reapply a reverted patch without the agreement of the maintainer
who reverted it, or bringing the issue to the official FSF-appointed
GDB maintainers for discussion.

At the moment there are no documented roadmaps for GDB development; in the
future, if there are, a reference to the list will be included here.

The current global maintainers are (in alphabetical order):

Pedro Alves                     palves@redhat.com
Joel Brobecker			brobecker@adacore.com
Kevin Buettner			kevinb@redhat.com
Andrew Cagney			cagney@gnu.org
Doug Evans			dje@google.com
Simon Marchi			simon.marchi@ericsson.com
Yao Qi				yao.qi@arm.com
Stan Shebs			stanshebs@google.com
Ulrich Weigand			Ulrich.Weigand@de.ibm.com
Elena Zannoni			elena.zannoni@oracle.com
Eli Zaretskii			eliz@gnu.org


			Release Manager
			---------------

The current release manager is: Joel Brobecker  <brobecker@adacore.com>

His responsibilities are:

    * organizing, scheduling, and managing releases of GDB.

    * deciding the approval and commit policies for release branches,
      and can change them as needed.



			Patch Champions
			---------------

These volunteers track all patches submitted to the gdb-patches list.  They
endeavor to prevent any posted patch from being overlooked; work with
contributors to meet GDB's coding style and general requirements, along with
FSF copyright assignments; remind (ping) responsible maintainers to review
patches; and ensure that contributors are given credit.

Current patch champions (in alphabetical order):

	Randolph Chung     <tausq@debian.org>



			Responsible Maintainers
			-----------------------

These developers have agreed to review patches in specific areas of GDB, in
which they have knowledge and experience.  These areas are generally broad;
the role of a responsible maintainer is to provide coherent and cohesive
structure within their area of GDB, to assure that patches from many
different contributors all work together for the best results.

Global maintainers will defer to responsible maintainers within their areas,
as long as the responsible maintainer is active.  Active means that
responsible maintainers agree to review submitted patches in their area
promptly; patches and followups should generally be answered within a week.
If a responsible maintainer is interested in reviewing a patch but will not
have time within a week of posting, the maintainer should send an
acknowledgement of the patch to the gdb-patches mailing list, and
plan to follow up with a review within a month.  These deadlines are for
initial responses to a patch - if the maintainer has suggestions
or questions, it may take an extended discussion before the patch
is ready to commit.  There are no written requirements for discussion,
but maintainers are asked to be responsive.

If a responsible maintainer misses these deadlines occasionally (e.g.
vacation or unexpected workload), it's not a disaster - any global
maintainer may step in to review the patch.  But sometimes life intervenes
more permanently, and a maintainer may no longer have time for these duties.
When this happens, he or she should step down (either into the Authorized
Committers section if still interested in the area, or simply removed from
the list of Responsible Maintainers if not).

If a responsible maintainer is unresponsive for an extended period of time
without stepping down, please contact the Global Maintainers; they will try
to contact the maintainer directly and fix the problem - potentially by
removing that maintainer from their listed position.

If there are several maintainers for a given domain then any one of them
may review a submitted patch.

Target Instruction Set Architectures:

The *-tdep.c files.  ISA (Instruction Set Architecture) and OS-ABI
(Operating System / Application Binary Interface) issues including CPU
variants.

The Target/Architecture maintainer works with the host maintainer when
resolving build issues.  The Target/Architecture maintainer works with
the native maintainer when resolving ABI issues.

	alpha		--target=alpha-elf ,-Werror

	arm		--target=arm-elf ,-Werror

	avr		--target=avr ,-Werror

	cris		--target=cris-elf ,-Werror ,
			(sim does not build with -Werror)

	frv		--target=frv-elf ,-Werror

	h8300		--target=h8300-elf ,-Werror

	i386		--target=i386-elf ,-Werror

	ia64		--target=ia64-linux-gnu ,-Werror
			(--target=ia64-elf broken)

	lm32		--target=lm32-elf ,-Werror

	m32c		--target=m32c-elf ,-Werror

	m32r		--target=m32r-elf ,-Werror

	m68hc11		--target=m68hc11-elf ,-Werror ,
			Stephane Carrez		Stephane.Carrez@gmail.com

	m68k		--target=m68k-elf ,-Werror

	m88k		--target=m88k-openbsd ,-Werror

	mcore		Deleted

	mep		--target=mep-elf ,-Werror
			Kevin Buettner		kevinb@redhat.com

	microblaze	--target=microblaze-xilinx-elf ,-Werror
			--target=microblaze-linux-gnu ,-Werror
			Michael Eager		eager@eagercon.com

	mips		--target=mips-elf ,-Werror
			Maciej W. Rozycki	macro@imgtec.com

	mn10300		--target=mn10300-elf broken
			(sim/ dies with make -j)

	moxie		--target=moxie-elf ,-Werror
			Anthony Green		green@moxielogic.com

	ms1		--target=ms1-elf ,-Werror
			Kevin Buettner		kevinb@redhat.com

	nios2		--target=nios2-elf ,-Werror
			--target=nios2-linux-gnu ,-Werror
			Yao Qi			yao.qi@arm.com

	ns32k		Deleted

	pa		--target=hppa-elf ,-Werror

	powerpc		--target=powerpc-eabi ,-Werror

	rl78		--target=rl78-elf ,-Werror

	rx		--target=rx-elf ,-Werror

	s390		--target=s390-linux-gnu ,-Werror
			Andreas Arnez		arnez@linux.vnet.ibm.com

	score	--target=score-elf
			Qinwei		qinwei@sunnorth.com.cn

	sh		--target=sh-elf ,-Werror
			--target=sh64-elf ,-Werror

	sparc		--target=sparc64-solaris2.10 ,-Werror
			(--target=sparc-elf broken)

	spu		--target=spu-elf ,-Werror
			Ulrich Weigand		uweigand@de.ibm.com

	tic6x		--target=tic6x-elf ,-Werror
			Yao Qi			yao.qi@arm.com

	v850		--target=v850-elf ,-Werror

	vax		--target=vax-netbsd ,-Werror

	x86-64		--target=x86_64-linux-gnu ,-Werror

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

	xtensa		--target=xtensa-elf

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

The Bourne shell script gdb_mbuild.sh can be used to rebuild all the
above targets.


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 can be built as a cross debugger on
their platform.

Darwin			Tristan Gingold		gingold@adacore.com
djgpp native		Eli Zaretskii		eliz@gnu.org
FreeBSD			John Baldwin		jhb@freebsd.org
GNU Hurd		Alfred M. Szmidt	ams@gnu.org
GNU/Linux m68k		Andreas Schwab		schwab@linux-m68k.org



Core: Generic components used by all of GDB

linespec		Keith Seitz             keiths@redhat.com

language support
  Ada			Joel Brobecker		brobecker@adacore.com
			Paul Hilfinger		hilfinger@gnat.com
  D			Iain Buclaw		ibuclaw@gdcproject.org
  Objective C support   Adam Fedor		fedor@gnu.org
  Rust			Tom Tromey		tom@tromey.com
shared libs		Kevin Buettner		kevinb@redhat.com
MI interface		Vladimir Prus		vladimir@codesourcery.com

documentation		Eli Zaretskii		eliz@gnu.org
  (including NEWS)
testsuite
  gdbtk (gdb.gdbtk)     Keith Seitz             keiths@redhat.com

SystemTap		Sergio Durigan Junior	sergiodj@redhat.com



Reverse debugging / Record and Replay / Tracing:

record btrace		Markus T. Metzger	markus.t.metzger@intel.com



UI: External (user) interfaces.

gdbtk (c & tcl)		Fernando Nasser         fnasser@redhat.com
			Keith Seitz		keiths@redhat.com
libgui (w/foundry, sn)	Keith Seitz		keiths@redhat.com


Misc:

gdb/gdbserver		Daniel Jacobowitz	drow@false.org

Makefile.in, configure*	ALL

mmalloc/		ALL Host maintainers

sim/			See sim/MAINTAINERS

readline/		Master version: ftp://ftp.cwru.edu/pub/bash/
			ALL
			Host maintainers (host dependant parts)
			(but get your changes into the master version)

tcl/ tk/ itcl/		ALL

contrib/ari		Pierre Muller		muller@sourceware.org


		Authorized Committers
		---------------------

These are developers working on particular areas of GDB, who are trusted to
commit their own (or other developers') patches in those areas without
further review from a Global Maintainer or Responsible Maintainer.  They are
under no obligation to review posted patches - but, of course, are invited
to do so!

PowerPC			Andrew Cagney		cagney@gnu.org
ARM			Richard Earnshaw	rearnsha@arm.com
Blackfin		Mike Frysinger		vapier@gentoo.org
CRIS			Hans-Peter Nilsson	hp@axis.com
IA64			Jeff Johnston		jjohnstn@redhat.com
MIPS			Joel Brobecker		brobecker@adacore.com
m32r			Kei Sakamoto		sakamoto.kei@renesas.com
PowerPC			Kevin Buettner		kevinb@redhat.com
CRIS			Orjan Friberg		orjanf@axis.com
HPPA			Randolph Chung		tausq@debian.org
S390			Ulrich Weigand		uweigand@de.ibm.com
djgpp			DJ Delorie		dj@delorie.com
			[Please use this address to contact DJ about DJGPP]
tui			Stephane Carrez		Stephane.Carrez@gmail.com
ia64			Kevin Buettner		kevinb@redhat.com
AIX			Kevin Buettner		kevinb@redhat.com
GNU/Linux PPC native	Kevin Buettner		kevinb@redhat.com
FreeBSD native & host	David O'Brien		obrien@freebsd.org
event loop		Elena Zannoni		elena.zannoni@oracle.com
generic symtabs		Elena Zannoni		elena.zannoni@oracle.com
dwarf readers		Elena Zannoni		elena.zannoni@oracle.com
elf reader		Elena Zannoni		elena.zannoni@oracle.com
stabs reader		Elena Zannoni		elena.zannoni@oracle.com
readline/		Elena Zannoni		elena.zannoni@oracle.com
NetBSD native & host	Jason Thorpe		thorpej@netbsd.org
Pascal support		Pierre Muller		muller@sourceware.org
avr			Theodore A. Roth	troth@openavr.org
Modula-2 support	Gaius Mulley		gaius@glam.ac.uk


			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.

Pedro Alves					pedro_alves@portugalmail.pt
David Anderson					davea@sgi.com
John David Anglin				dave.anglin@nrc-cnrc.gc.ca
Andreas Arnez					arnez@linux.vnet.ibm.com
Shrinivas Atre					shrinivasa@kpitcummins.com
Sterling Augustine				saugustine@google.com
John Baldwin					jhb@freebsd.org
Scott Bambrough					scottb@netwinder.org
Thiago Jung Bauermann				bauerman@br.ibm.com
Jon Beniston					jon@beniston.com
Gary Benson					gbenson@redhat.com
Gabriel Krisman Bertazi				gabriel@krisman.be
Jan Beulich					jbeulich@novell.com
Anton Blanchard					anton@samba.org
Jim Blandy					jimb@codesourcery.com
David Blaikie					dblaikie@gmail.com
Philip Blundell					philb@gnu.org
Eric Botcazou					ebotcazou@libertysurf.fr
Per Bothner					per@bothner.com
Don Breazeal					donb@codesourcery.com
Joel Brobecker					brobecker@adacore.com
Dave Brolley					brolley@redhat.com
Samuel Bronson                                  naesten@gmail.com
Paul Brook					paul@codesourcery.com
Julian Brown					julian@codesourcery.com
Iain Buclaw					ibuclaw@gdcproject.org
Kevin Buettner					kevinb@redhat.com
Andrew Burgess					andrew.burgess@embecosm.com
Andrew Cagney					cagney@gnu.org
David Carlton					carlton@bactrian.org
Stephane Carrez					Stephane.Carrez@gmail.com
Michael Chastain				mec.gnu@mindspring.com
Renquan Cheng					crq@gcc.gnu.org
Eric Christopher				echristo@apple.com
Randolph Chung					tausq@debian.org
Nick Clifton					nickc@redhat.com
J.T. Conklin					jtc@acorntoolworks.com
Brendan Conoboy					blc@redhat.com
Ludovic Courtès					ludo@gnu.org
Tiago Stürmer Daitx				tdaitx@linux.vnet.ibm.com
Sanjoy Das					sanjoy@playingwithpointers.com
Jean-Charles Delay				delay@adacore.com
DJ Delorie					dj@redhat.com
Chris Demetriou					cgd@google.com
Philippe De Muyter				phdm@macqel.be
Dhananjay Deshpande				dhananjayd@kpitcummins.com
Markus Deuling					deuling@de.ibm.com
Klee Dienes					kdienes@apple.com
Gabriel Dos Reis                                gdr@integrable-solutions.net
Sergio Durigan Junior				sergiodj@redhat.com
Michael Eager					eager@eagercon.com
Richard Earnshaw				rearnsha@arm.com
Steve Ellcey					sje@cup.hp.com
Frank Ch. Eigler				fche@redhat.com
Ben Elliston					bje@gnu.org
Doug Evans					dje@google.com
Adam Fedor					fedor@gnu.org
Max Filippov					jcmvbkbc@gmail.com
Brian Ford					ford@vss.fsi.com
Matthew Fortune					matthew.fortune@imgtec.com
Orjan Friberg					orjanf@axis.com
Andreas From					andreas.from@ericsson.com
Nathan Froyd					froydnj@codesourcery.com
Mike Frysinger					vapier@gentoo.org
Gary Funck					gary@intrepid.com
Martin Galvan					martingalvan@sourceware.org
Chen Gang					gang.chen.5i5j@gmail.com
Mircea Gherzan					mircea.gherzan@intel.com
Paul Gilliam					pgilliam@us.ibm.com
Tristan Gingold					gingold@adacore.com
Anton Gorenkov					xgsa@yandex.ru
Raoul Gough					RaoulGough@yahoo.co.uk
Anthony Green			 		green@redhat.com
Matthew Green					mrg@eterna.com.au
Matthew Gretton-Dann				matthew.gretton-dann@arm.com
Maxim Grigoriev					maxim2405@gmail.com
Jerome Guitton					guitton@act-europe.fr
Ben Harris					bjh21@netbsd.org
Bernhard Heckel					heckel_bernhard@web.de
Richard Henderson				rth@redhat.com
Aldy Hernandez					aldyh@redhat.com
Paul Hilfinger					hilfinger@gnat.com
Matt Hiller					hiller@redhat.com
Kazu Hirata					kazu@cs.umass.edu
James Hogan					james.hogan@imgtec.com
Jeff Holcomb					jeffh@redhat.com
Stafford Horne					shorne@gmail.com
Don Howard					dhoward@redhat.com
Nick Hudson					nick.hudson@dsl.pipex.com
Martin Hunt					hunt@redhat.com
Meador Inge					meadori@codesourcery.com
Jim Ingham					jingham@apple.com
Baurzhan Ismagulov				ibr@radix50.net
Manoj Iyer					manjo@austin.ibm.com
Daniel Jacobowitz				drow@false.org
Andreas Jaeger					aj@suse.de
Janis Johnson					janisjo@codesourcery.com
Jeff Johnston					jjohnstn@redhat.com
Ruslan Kabatsayev				b7.10110111@gmail.com
Geoff Keating					geoffk@redhat.com
Mark Kettenis					kettenis@gnu.org
Marc Khouzam					marc.khouzam@ericsson.com
Toshihito Kikuchi					k.toshihito@yahoo.de
Jim Kingdon					kingdon@panix.com
Anton Kolesov					anton.kolesov@synopsys.com
Paul Koning					paul_koning@dell.com
Marcin Kościelnicki				koriakin@0x04.net
Jan Kratochvil					jan.kratochvil@redhat.com
Maxim Kuvyrkov					maxim@kugelworks.com
Pierre Langlois 				pierre.langlois@arm.com
Jonathan Larmour				jifl@ecoscentric.com
Jeff Law					law@redhat.com
Justin Lebar					justin.lebar@gmail.com
David Lecomber					david@streamline-computing.com
Don Lee						don.lee@sunplusct.com
Yan-Ting Lin					currygt52@gmail.com
Robert Lipe					rjl@sco.com
Lei Liu						lei.liu2@windriver.com
Sandra Loosemore				sandra@codesourcery.com
Carl Love                  cel@us.ibm.com
H.J. Lu						hjl.tools@gmail.com
Michal Ludvig                                   mludvig@suse.cz
Edjunior B. Machado				emachado@linux.vnet.ibm.com
Luis Machado					lgustavo@codesourcery.com
Jose E. Marchesi                                jose.marchesi@oracle.com
Glen McCready					gkm@redhat.com
Greg McGary					greg@mcgary.org
Roland McGrath					roland@hack.frob.com
Bryce McKinlay					mckinlay@redhat.com
Jason Merrill					jason@redhat.com
Markus T. Metzger				markus.t.metzger@intel.com
David S. Miller					davem@redhat.com
Mark Mitchell					mark@codesourcery.com
Marko Mlinar                                    markom@opencores.org
Alan Modra					amodra@gmail.com
Fawzi Mohamed					fawzi.mohamed@nokia.com
Jason Molenda					jmolenda@apple.com
Chris Moller					cmoller@redhat.com
Phil Muldoon					pmuldoon@redhat.com
Pierre Muller					muller@sourceware.org
Gaius Mulley                                    gaius@glam.ac.uk
Masaki Muranaka					monaka@monami-software.com
Joseph Myers					joseph@codesourcery.com
Fernando Nasser					fnasser@redhat.com
Adam Nemet					anemet@caviumnetworks.com
Will Newton					will.newton@linaro.org
Nathanael Nerode				neroden@gcc.gnu.org
Hans-Peter Nilsson				hp@bitrange.com
David O'Brien					obrien@freebsd.org
Alexandre Oliva					aoliva@redhat.com
Karen Osmond					karen.osmond@gmail.com
Pawandeep Oza					oza.pawandeep@gmail.com
Patrick Palka					patrick@parcs.ath.cx
Denis Pilat					denis.pilat@st.com
Andrew Pinski					apinski@cavium.com
Kevin Pouget					kevin.pouget@st.com
Paul Pluzhnikov					ppluzhnikov@google.com
Marek Polacek					mpolacek@redhat.com
Siddhesh Poyarekar				siddhesh@redhat.com
Vladimir Prus                                   vladimir@codesourcery.com
Yao Qi						yao.qi@arm.com
Qinwei						qinwei@sunnorth.com.cn
Ramana Radhakrishnan				ramana.radhakrishnan@arm.com
Siva Chandra Reddy				sivachandra@google.com
Matt Rice					ratmice@gmail.com
Frederic Riss					frederic.riss@st.com
Aleksandar Ristovski				aristovski@qnx.com
Tom Rix						trix@redhat.com
Nick Roberts					nickrob@snap.net.nz
Pierre-Marie de Rodat				derodat@adacore.com
Xavier Roirand 					roirand@adacore.com
Bob Rossi 					bob_rossi@cox.net
Theodore A. Roth				troth@openavr.org
Ian Roxborough					irox@redhat.com
Maciej W. Rozycki				macro@linux-mips.org
Kamil Rytarowski				n54@gmx.com
Grace Sainsbury					graces@redhat.com
Kei Sakamoto					sakamoto.kei@renesas.com
Mark Salter					msalter@redhat.com
Richard Sandiford				richard@codesourcery.com
Iain Sandoe					iain@codesourcery.com
Peter Schauer					Peter.Schauer@mytum.de
Andreas Schwab					schwab@linux-m68k.org
Thomas Schwinge					tschwinge@gnu.org
Keith Seitz					keiths@redhat.com
Carlos Eduardo Seo				cseo@linux.vnet.ibm.com
Ozkan Sezer					sezeroz@gmail.com
Marcus Shawcroft				marcus.shawcroft@arm.com
Stan Shebs					stanshebs@google.com
Joel Sherrill					joel.sherrill@oarcorp.com
Mark Shinwell					shinwell@codesourcery.com
Craig Silverstein				csilvers@google.com
Aidan Skinner					aidan@velvet.net
Jiri Smid					smid@suse.cz
Andrey Smirnov					andrew.smirnov@gmail.com
David Smith					dsmith@redhat.com
Stephen P. Smith				ischis2@cox.net
Jackie Smith Cashion				jsmith@redhat.com
Petr Sorfa					petrs@caldera.com
Andrew Stubbs					ams@codesourcery.com
Emi Suzuki					emi-suzuki@tjsys.co.jp
David Taylor					david.taylor@emc.com
Ian Lance Taylor				ian@airs.com
Walfred Tedeschi				walfred.tedeschi@intel.com
Gary Thomas					gthomas@redhat.com
Jason Thorpe					thorpej@netbsd.org
Caroline Tice					ctice@apple.com
Kai Tietz					ktietz@redhat.com
Andreas Tobler					andreast@fgznet.ch
Antoine Tremblay				antoine.tremblay@ericsson.com
Jon Turney					jon.turney@dronecode.org.uk
David Ung					davidu@mips.com
D Venkatasubramanian				dvenkat@noida.hcltech.com
Corinna Vinschen				vinschen@redhat.com
Sami Wagiaalla					swagiaal@redhat.com
Keith Walker					keith.walker@arm.com
Ricard Wanderlof				ricardw@axis.com
Jiong Wang					jiong.wang@arm.com
Wei-cheng Wang					cole945@gmail.com
Kris Warkentin					kewarken@qnx.com
Philippe Waroquiers				philippe.waroquiers@skynet.be
Ulrich Weigand					uweigand@de.ibm.com
Ken Werner					ken.werner@de.ibm.com
Tim Wiederhake					tim.wiederhake@intel.com
Mark Wielaard					mjw@redhat.com
Nathan Williams					nathanw@wasabisystems.com
Bob Wilson					bob.wilson@acm.org
Jim Wilson					wilson@tuliptree.org
Andy Wingo					wingo@igalia.com
Mike Wrighton					wrighton@codesourcery.com
Kwok Cheung Yeung				kcy@codesourcery.com
Elena Zannoni					elena.zannoni@oracle.com
Eli Zaretskii					eliz@gnu.org
Jie Zhang					jzhang918@gmail.com
Wu Zhou						woodzltc@cn.ibm.com
Yoshinori Sato					ysato@users.sourceforge.jp
Hui Zhu						teawater@gmail.com
Khoo Yit Phang					khooyp@cs.umd.edu

			Past Maintainers

Whenever removing yourself, or someone else, from this file, consider
listing their areas of development here for posterity.

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, global)	jtc at acorntoolworks dot com
Frank Ch. Eigler (sim)				fche at redhat dot com
Per Bothner (Java)				per at bothner dot com
Anthony Green (Java)				green at redhat dot com
Fernando Nasser (testsuite/, mi, cli, KOD)      fnasser at redhat dot com
Mark Salter (testsuite/lib+config)		msalter at redhat dot com
Jim Kingdon (web pages)				kingdon at panix dot com
Jim Ingham (gdbtk, libgui)			jingham at apple dot com
Mark Kettenis (global, i386-elf, m88k-openbsd,
  GNU/Linux x86, FreeBSD, hurd native, threads) kettenis at gnu dot org
Ian Roxborough (in-tree tcl, tk, itcl)		irox at redhat dot com
Robert Lipe (SCO/Unixware)			rjl at sco dot com
Peter Schauer (global, AIX, xcoffsolib,
  Solaris/x86)					Peter.Schauer at mytum dot de
Scott Bambrough (ARM)				scottb at netwinder dot org
Philippe De Muyter (coff)			phdm at macqel dot be
Michael Chastain (testsuite)			mec.gnu at mindspring dot com
Fred Fish (global)
Jim Blandy (global)				jimb@red-bean.com
Michael Snyder (global)
Christopher Faylor (MS Windows, host & native)
Daniel Jacobowitz (global, GNU/Linux MIPS,
  C++, GDBserver)				drow at false dot org
Maxim Grigoriev (xtensa)			maxim2405 at gmail dot com


Folks that have been caught up in a paper trail:

David Carlton					carlton@bactrian.org

;; Local Variables:
;; coding: utf-8
;; End:
