		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 word "contributor" is used in this document to refer to any GDB
developer listed above as well as folks who may have suggested some
patches but aren't part of one of those categories for any reason.

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 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.
Approval 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, ask
questions about a patch or say if they believe a patch is fit for upstreaming!

To ensure that patches are only pushed when approved, and to properly credit
the contributors who take the time to improve this project, the following
trailers are used to identify who contributed and how.  The trailers (or tags)
currently in use are:

 - Tested-By:

   Used when a contributor has tested the patch and finds that it
   fixes the claimed problem.  It may also be used to indicate that
   the contributor has performed regression testing.  By itself, this
   tag says nothing about the quality of the fix implemented by the
   patch, nor the amount of testing that was actually performed.

   Usage: "Tested-By: Your Name <your@email>"

 - Acked-By:

   Used when a responsible or global maintainer has taken a superficial
   look at a patch and agrees with its direction, but has not done further
   review on the subject.
   This trailer can be specific to one or more areas of the project, as
   defined by the "Responsible maintainers" section of this file.  If
   that is the case, the area(s) should be added at the end of the tag in
   parenthesis in a comma-separated list.

   Usage: "Acked-By: Your Name <your@email> (area1, area2)"

 - Reviewed-By:

   Used when a contributor has looked at the code and agrees with
   the changes, but either doesn't have the authority or doesn't
   feel comfortable approving the patch.
   This trailer can be specific to one or more areas of the project, as
   defined by the "Responsible maintainers" section of this file.  If
   that is the case, the area(s) should be added at the end of the tag in
   parenthesis in a comma-separated list.

   Usage: "Reviewed-By: Your Name <your@email> (area1, area2)"

 - Approved-By:

   Used by responsible maintainers or global maintainers when a patch is
   ready to be upstreamed.  If a patch requires multiple approvals, only
   the last reviewer should use this tag, making it obvious to the
   contributor that the patch is ready to be pushed.
   This trailer can be specific to one or more areas of the project, as
   defined by the "Responsible maintainers" section of this file.  If
   that is the case, the area(s) should be added at the end of the tag in
   parenthesis in a comma separated list.  Patches must have all areas
   approved before being pushed.  If a patch has had some areas approved,
   it is recommended that the final approver makes it explicit that the
   patch is ready for pushing.
   Responsible, Global and Official FSF-appointed maintainers may approve
   their own patches, but it is recommended that they seek external approval
   before doing so.

   Usage: "Approved-By: Your Name <your@email>"

 - Co-Authored-By:

   Used when the commit includes meaningful contributions from multiple people.

   Usage: "Co-Authored-By: Contributor's Name <their@email>"

 - Bug:

   This trailer is added with a link to the GDB bug tracker bug for
   added context on relevant commits.

   Usage: "Bug: <link>"

Sometimes, contributors may request small changes, such as fixing typos, before
granting the review or approval trailer. When the contributor thinks that
these changes are so small that it isn't necessary to send a new version, they
may add some text like "with these changes, I'm ok with the patch", followed by
their trailer.  In those situations, the trailer is only valid after the
changes are made.


			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
       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			pedro@palves.net
John Baldwin			jhb@freebsd.org
Kevin Buettner			kevinb@redhat.com
Andrew Burgess			aburgess@redhat.com
Luis Machado			luis.machado@arm.com
Simon Marchi			simon.marchi@polymtl.ca
Tom Tromey			tom@tromey.com
Tom de Vries			tdevries@suse.de
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
			Alan Hayward		alan.hayward@arm.com
			Luis Machado		luis.machado@arm.com

	alpha		--target=alpha-elf

	amdgpu		--target=amdgcn*-*-*
			Lancelot Six		lancelot.six@amd.com

	arc		--target=arc-elf
			Shahab Vahedi		shahab@synopsys.com

	arm		--target=arm-elf
			Alan Hayward		alan.hayward@arm.com
			Luis Machado		luis.machado@arm.com

	avr		--target=avr

	bpf		--target=bpf-unknown-none
			Jose E. Marchesi	jose.marchesi@oracle.com

	cris		--target=cris-elf

	frv		--target=frv-elf

	h8300		--target=h8300-elf

	i386		--target=i386-elf

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

	lm32		--target=lm32-elf

	loongarch	--target=loongarch32-elf
			--target=loongarch64-elf
			Tiezhu Yang		yangtiezhu@loongson.cn

	m32c		--target=m32c-elf

	m32r		--target=m32r-elf

	m68hc11		--target=m68hc11-elf
	m68k		--target=m68k-elf

	mcore		Deleted

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

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

	mips I-IV	--target=mips-elf
			Maciej W. Rozycki	macro@orcam.me.uk

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

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

	ms1		Deleted

	nios2		--target=nios2-elf
			--target=nios2-linux-gnu
			Yao Qi			qiyao@sourceware.org

	ns32k		Deleted

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

	pa		--target=hppa-elf

	powerpc		--target=powerpc-eabi

	riscv		--target=riscv32-elf
			--target=riscv64-elf
			Andrew Burgess		aburgess@redhat.com
			Palmer Dabbelt		palmer@dabbelt.com

	rl78		--target=rl78-elf

	rx		--target=rx-elf

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

	sh		--target=sh-elf

	sparc		--target=sparcv9-solaris2.11
			(--target=sparc-elf broken)

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

	v850		--target=v850-elf

	vax		--target=vax-netbsd

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

	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
  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@sergiodj.net



Reverse debugging / Record and Replay / Tracing:

record
  full			Guinevere Larsen	blarsen@redhat.com
  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
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.

Tankut Baris Aktemur				tankut.baris.aktemur@intel.com
David Anderson					davea@sgi.com
John David Anglin				dave.anglin@nrc-cnrc.gc.ca
Andreas Arnez					arnez@linux.ibm.com
Shrinivas Atre					shrinivasa@kpitcummins.com
Sterling Augustine				saugustine@google.com
Scott Bambrough					scottb@netwinder.org
Marco Barisione					mbarisione@undo.io
Thiago Jung Bauermann				thiago.bauermann@linaro.org
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
Richard Bunt					richard.bunt@linaro.org
Andrew Burgess					aburgess@redhat.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
Hannes Domani					ssbssa@yahoo.de
Gabriel Dos Reis				gdr@integrable-solutions.net
Sergio Durigan Junior				sergiodj@sergiodj.net
Michael Eager					eager@eagercon.com
Richard Earnshaw				rearnsha@arm.com
Bernd Edlinger					bernd.edlinger@hotmail.de
Steve Ellcey					sje@cup.hp.com
Frank Ch. Eigler				fche@redhat.com
Ben Elliston					bje@gnu.org
Doug Evans					dje@google.com
Simon Farre					simon.farre.cx@gmail.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
Alexandra Hájková				ahajkova@redhat.com
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
Magne Hov					mhov@undo.io
Don Howard					dhoward@redhat.com
Nick Hudson					nick.hudson@dsl.pipex.com
Martin Hunt					hunt@redhat.com
Abdul Basit Ijaz				abdul.b.ijaz@intel.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
Sam James					sam@gentoo.org
Janis Johnson					janisjo@codesourcery.com
Jeff Johnston					jjohnstn@redhat.com
Ruslan Kabatsayev				b7.10110111@gmail.com
Geoff Keating					geoffk@redhat.com
Nils-Christian Kempke				nils-christian.kempke@intel.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
Guinevere Larsen				blarsen@redhat.com
Jeff Law					law@redhat.com
Justin Lebar					justin.lebar@gmail.com
David Lecomber					david@streamline-computing.com
Don Lee						don.lee@sunplusct.com
Kévin Le Gouguec				legouguec@adacore.com
Enze Li						enze.li@hotmail.com
Yan-Ting Lin					currygt52@gmail.com
Robert Lipe					rjl@sco.com
Lei Liu						lei.liu2@windriver.com
Yang Liu					liuyang22@iscas.ac.cn
Toby Lloyd Davies				tlloyddavies@undo.io
Sandra Loosemore				sloosemore@baylibre.com
Carl Love					cel@linux.ibm.com
H.J. Lu						hjl.tools@gmail.com
Michal Ludvig					mludvig@suse.cz
Edjunior B. Machado				emachado@linux.vnet.ibm.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
Patrick Monnerat				patrick@monnerat.net
Phil Muldoon					pmuldoon@redhat.com
Pierre Muller					muller@sourceware.org
Gaius Mulley					gaius@glam.ac.uk
Masaki Muranaka					monaka@monami-software.com
Joseph Myers					josmyers@redhat.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
Tsukasa Oi					research_trasio@irq.a4lg.com
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
Yvan Roux					yvan.roux@foss.st.com
Ian Roxborough					irox@redhat.com
Maciej W. Rozycki				macro@orcam.me.uk
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
Will Schmidt					will_schmidt@vnet.ibm.com
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
Alok Kumar Sharma				AlokKumar.Sharma@amd.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
Lancelot Six					lsix@lancelotsix.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
Mihails Strasuns				mihails.strasuns@intel.com
Andrew Stubbs					ams@codesourcery.com
Emi Suzuki					emi-suzuki@tjsys.co.jp
Torbjörn Svensson				torbjorn.svensson@foss.st.com
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					petr@tesarici.cz
Samuel Thibault					samuel.thibault@ens-lyon.org
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
Shahab Vahedi					shahab@synopsys.com
D Venkatasubramanian				dvenkat@noida.hcltech.com
Corinna Vinschen				vinschen@redhat.com
Jan Vrany					jan.vrany@fit.cvut.cz
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					mark@klomp.org
Felix Willgerodt				felix.willgerodt@intel.com
Nathan Williams					nathanw@wasabisystems.com
Bob Wilson					bob.wilson@acm.org
Jim Wilson					wilson@tuliptree.org
Andy Wingo					wingo@igalia.com
Ciaran Woodward					ciaranwoodward@xmos.com
Mike Wrighton					wrighton@codesourcery.com
Tiezhu Yang					yangtiezhu@loongson.cn
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
Rogerio Alves					rcardoso@linux.ibm.com

			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
Joel Brobecker (Global, Ada)			brobecker@adacore.com
Doug Evans (Global)				dje@google.com
Yao Qi (Global)					qiyao@sourceware.org


Folks that have been caught up in a paper trail:

David Carlton					carlton@bactrian.org

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