		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@ericsson.com
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)

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

	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
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
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
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
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:
