		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 Burgess			andrew.burgess@embecosm.com
Doug Evans			dje@google.com
Simon Marchi			simon.marchi@polymtl.ca
Yao Qi				qiyao@sourceware.org
Tom Tromey			tom@tromey.com
Ulrich Weigand			Ulrich.Weigand@de.ibm.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):

	<none>


			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.

	aarch64		--target=aarch64-elf ,-Werror
			Alan Hayward		alan.hayward@arm.com

	alpha		--target=alpha-elf ,-Werror

	arm		--target=arm-elf ,-Werror
			Alan Hayward		alan.hayward@arm.com

	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 ,
	m68k		--target=m68k-elf ,-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 I-IV	--target=mips-elf ,-Werror
			Maciej W. Rozycki	macro@linux-mips.org

	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			qiyao@sourceware.org

	ns32k		Deleted

	or1k		--target=or1k-elf ,-Werror
			Stafford Horne		shorne@gmail.com

	pa		--target=hppa-elf ,-Werror

	powerpc		--target=powerpc-eabi ,-Werror

	riscv		--target=riscv32-elf ,-Werror
			--target=riscv64-elf ,-Werror
			Andrew Burgess		andrew.burgess@embecosm.com
			Palmer Dabbelt		palmer@sifive.com

	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
	sh		--target=sh-elf ,-Werror

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

	tic6x		--target=tic6x-elf ,-Werror
			Yao Qi			qiyao@sourceware.org

	v850		--target=v850-elf ,-Werror

	vax		--target=vax-netbsd ,-Werror

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

	xstormy16	--target=xstormy16-elf
	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		tgingold@free.fr
djgpp native		Eli Zaretskii		eliz@gnu.org
FreeBSD			John Baldwin		jhb@freebsd.org
GNU/Linux m68k		Andreas Schwab		schwab@linux-m68k.org
Solaris			Rainer Orth		ro@CeBiTec.Uni-Bielefeld.DE


Core: Generic components used by all of GDB

linespec		Keith Seitz             keiths@redhat.com

language support
  Ada			Joel Brobecker		brobecker@adacore.com
  D			Iain Buclaw		ibuclaw@gdcproject.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!

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
PowerPC			Kevin Buettner		kevinb@redhat.com
S390			Ulrich Weigand		uweigand@de.ibm.com
djgpp			DJ Delorie		dj@delorie.com
			[Please use this address to contact DJ about DJGPP]
ia64			Kevin Buettner		kevinb@redhat.com
AIX			Kevin Buettner		kevinb@redhat.com
GNU/Linux PPC native	Kevin Buettner		kevinb@redhat.com
Pascal support		Pierre Muller		muller@sourceware.org


			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
Marco Barisione					mbarisione@undo.io
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
Christian Biesinger				cbiesinger@google.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
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
Pedro Franco de Carvalho			pedromfc@linux.vnet.ibm.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					tgingold@free.fr
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
Alan Hayward					alan.hayward@arm.com
Bernhard Heckel					heckel_bernhard@web.de
Richard Henderson				rth@redhat.com
Aldy Hernandez					aldyh@redhat.com
Paul Hilfinger					hilfingr@eecs.berkeley.edu
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					luis.machado@linaro.org
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
Rainer Orth					ro@cebitec.uni-bielefeld.de
Karen Osmond					karen.osmond@gmail.com
Pawandeep Oza					oza.pawandeep@gmail.com
Patrick Palka					patrick@parcs.ath.cx
Weimin Pan					weimin.pan@oracle.com
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						qiyao@sourceware.org
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
Alfred M. Szmidt				ams@gnu.org
Ali Tamur					tamur@google.com
David Taylor					david.taylor@emc.com
Ian Lance Taylor				ian@airs.com
Walfred Tedeschi				walfred.tedeschi@intel.com
Petr Tesarik					ptesarik@suse.cz
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
Jon Turney					jon.turney@dronecode.org.uk
David Ung					davidu@mips.com
D Venkatasubramanian				dvenkat@noida.hcltech.com
Corinna Vinschen				vinschen@redhat.com
Jan Vrany					jan.vrany@fit.cvut.cz
Tom de Vries					tdevries@suse.de
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					ezannoni@gmail.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
Andrew Cagney (acting head maintainer,
  release manager, global, MIPS, PPC, d10v,
  d30v, sim, mi, multi-arch, unwinder)		cagney at gnu dot org
Paul Hilfinger (Ada)				hilfingr@eecs.berkeley.edu
David O'Brien (FreeBSD, host & native)		obrien@freebsd.org
Jason Thorpe (NetBSD, host & native)		thorpej@netbsd.org
Gaius Mulley (Modula-2)				gaius@glam.ac.uk
Kei Sakamoto (m32r)				sakamoto.kei@renesas.com
Orjan Friberg (CRIS)				orjanf@axis.com
Qinwei (score-elf)				qinwei@sunnorth.com.cn
Randolph Chung (HPPA)				tausq@debian.org
Elena Zannoni (Global, event loop, generic
  symtabs, DWARF readers, ELF readers, stabs
  readers, readline)				ezannoni@gmail.com
Adam Fedor (Objective C)			fedor@gnu.org
Corinna Vinschen (xstormy16-elf)		vinschen@redhat.com
Theodore A. Roth (avr)				troth@openavr.org
Stephane Carrez (m68hc11-elf, tui)		Stephane.Carrez@gmail.com
Alfred M. Szmidt (GNU Hurd)			ams@gnu.org
Stan Shebs (Global)				stanshebs@google.com


Folks that have been caught up in a paper trail:

David Carlton					carlton@bactrian.org

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