public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Luis Machado <lgustavo@codesourcery.com>
To: Sergio Durigan Junior <sergiodj@redhat.com>
Cc: GDB Patches <gdb-patches@sourceware.org>, <palves@redhat.com>
Subject: Re: [PATCH 2/6] Share parts of gdb/terminal.h with gdbserver
Date: Tue, 03 Jan 2017 21:27:00 -0000	[thread overview]
Message-ID: <2c08952e-2466-6b5e-5098-95fd64d4c445@codesourcery.com> (raw)
In-Reply-To: <87lgurq213.fsf@redhat.com>

On 01/03/2017 03:14 PM, Sergio Durigan Junior wrote:
> Hey Luis, thanks for the review.
>
> Comments below.
>
> On Monday, December 26 2016, Luis Machado wrote:
>
>> On 12/22/2016 09:39 PM, Sergio Durigan Junior wrote:
>>> As part of the bigger work of sharing fork_inferior with gdbserver,
>>> some parts of gdb/terminal.h also needed to be moved to a common
>>> place.  These parts are:
>>>
>>> - The code responsible for determining some terminal-based define's
>>>   based on available features;
>>>
>>> - job control;
>>>
>>> - terminal-related functions needed by fork_inferior;
>>>
>>> gdb/ChangeLog:
>>> 2016-12-22  Sergio Durigan Junior  <sergiodj@redhat.com>
>>>
>>> 	* Makefile.in (HFILES_NO_SRCDIR): Add "common/common-terminal.h".
>>> 	* common/common-terminal.h: New file, with parts of "terminal.h".
>>> 	* terminal.h: Move terminal-related defines to
>>> 	"common/common-terminal.h".
>>> 	(new_tty_prefork): Move to "common/common-terminal.h".
>>> 	(new_tty): Likewise.
>>> 	(new_tty_postfork): Likewise.
>>> 	(job_control): Likewise.
>>> 	(create_tty_session): Likewise.
>>> 	(gdb_setpgid): Likewise.
>>> 	* utils.c: Include "terminal.h".
>>>
>>> gdb/ChangeLog:
>>
>> gdb/gdbserver/ChangeLog
>
> Thanks, will fix.
>
>>> 2016-12-22  Sergio Durigan Junior  <sergiodj@redhat.com>
>>>
>>> 	* terminal.c: New file.
>>> ---
>>>  gdb/Makefile.in                              |  1 +
>>>  gdb/{terminal.h => common/common-terminal.h} | 55 +++++++++++++--------
>>>  gdb/gdbserver/terminal.c                     | 72 +++++++++++++++++++++++++++
>>>  gdb/terminal.h                               | 73 +---------------------------
>>>  gdb/utils.c                                  |  1 +
>>>  5 files changed, 109 insertions(+), 93 deletions(-)
>>>  copy gdb/{terminal.h => common/common-terminal.h} (66%)
>>>  create mode 100644 gdb/gdbserver/terminal.c
>>>
>>> diff --git a/gdb/Makefile.in b/gdb/Makefile.in
>>> index 051f07d..51c0f73 100644
>>> --- a/gdb/Makefile.in
>>> +++ b/gdb/Makefile.in
>>> @@ -1469,6 +1469,7 @@ HFILES_NO_SRCDIR = \
>>>  	common/common-regcache.h \
>>>  	common/common-types.h \
>>>  	common/common-utils.h \
>>> +	common/common-terminal.h \
>>>  	common/errors.h \
>>>  	common/environ.h \
>>>  	common/fileio.h \
>>> diff --git a/gdb/terminal.h b/gdb/common/common-terminal.h
>>> similarity index 66%
>>> copy from gdb/terminal.h
>>> copy to gdb/common/common-terminal.h
>>
>> Creating a new common/common-terminal.[h|c] may be cleaner than
>> git-copying and then modifying it. With a new file we get all the
>> included changes, whereas with git-copying we get a number of
>> unrelated changes that need to be removed.
>
> I actually created a new file and moved the necessary things by hand.  I
> think git marked this as a copy because I have a special setting on my
> $HOME/.gitconfig telling it to detect copies on diff's.  But if you look
> below, you'll see that gdb/terminal.h is still there.
>
> Anyway, I can send a different diff if you want.
>

No need. It just looked slightly off. But i got it once i noticed that 
git handled the copy on its own.

>>> index 0deced4..0ec8a23 100644
>>> --- a/gdb/terminal.h
>>> +++ b/gdb/common/common-terminal.h
>>> @@ -16,9 +16,8 @@
>>>     You should have received a copy of the GNU General Public License
>>>     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
>>>
>>> -#if !defined (TERMINAL_H)
>>> -#define TERMINAL_H 1
>>> -
>>> +#ifndef COMMON_TERMINAL_H
>>> +#define COMMON_TERMINAL_H
>>>
>>>  /* If we're using autoconf, it will define HAVE_TERMIOS_H,
>>>     HAVE_TERMIO_H and HAVE_SGTTY_H for us.  One day we can rewrite
>>> @@ -76,37 +75,51 @@
>>>  #endif /* sgtty */
>>>  #endif
>>>
>>> -struct inferior;
>>> +#include <sys/types.h>
>>> +
>>> +/* Do we have job control?  Can be assumed to always be the same
>>> +   within a given run of GDB.  Use in gdb/inflow.c and
>>> +   common/common-inflow.c.  */
>>>
>>> -extern void new_tty_prefork (const char *);
>>> +extern int job_control;
>>>
>>>  extern void new_tty (void);
>>>
>>> -extern void new_tty_postfork (void);
>>> +/* NEW_TTY_PREFORK is called before forking a new child process,
>>> +   so we can record the state of ttys in the child to be formed.
>>> +   TTYNAME is null if we are to share the terminal with gdb;
>>
>> This mentions gdb, but it may be used for gdbserver as well? We may
>> need generic wording here to account for that fact. This happens in
>> other places as well...
>
> Right, I'll fix these comments.
>
>>> +   or points to a string containing the name of the desired tty.
>>>
>>> -extern void copy_terminal_info (struct inferior *to, struct inferior *from);
>>> +   NEW_TTY is called in new child processes under Unix, which will
>>> +   become debugger target processes.  This actually switches to
>>> +   the terminal specified in the NEW_TTY_PREFORK call.  */
>>>
>>> -/* Do we have job control?  Can be assumed to always be the same within
>>> -   a given run of GDB.  In inflow.c.  */
>>> -extern int job_control;
>>> +extern void new_tty_prefork (const char *ttyname);
>>>
>>> -extern pid_t create_tty_session (void);
>>> +/* NEW_TTY_POSTFORK is called after forking a new child process, and
>>> +   adding it to the inferior table, to store the TTYNAME being used by
>>> +   the child, or null if it sharing the terminal with gdb.  */
>>>
>>> -/* Set the process group of the caller to its own pid, or do nothing if
>>> -   we lack job control.  */
>>> -extern int gdb_setpgid (void);
>>> +extern void new_tty_postfork (void);
>>>
>>> -/* Set up a serial structure describing standard input.  In inflow.c.  */
>>> -extern void initialize_stdin_serial (void);
>>> +/* Create a new session if the inferior will run in a different tty.
>>> +   A session is UNIX's way of grouping processes that share a controlling
>>> +   terminal, so a new one is needed if the inferior terminal will be
>>> +   different from GDB's.
>>
>> ... like here.
>>
>>>
>>> -extern void gdb_save_tty_state (void);
>>> +   Returns the session id of the new session, 0 if no session was created
>>> +   or -1 if an error occurred.  */
>>>
>>> -/* Take a snapshot of our initial tty state before readline/ncurses
>>> -   have had a chance to alter it.  */
>>> -extern void set_initial_gdb_ttystate (void);
>>> +extern pid_t create_tty_session (void);
>>>
>>>  /* Set the process group of the caller to its own pid, or do nothing
>>>     if we lack job control.  */
>>> +
>>
>> Spurious newline?
>
> Not really.  Even though this is a cosmetic change and could be removed
> from the patch, I decided to leave it there.  Our coding standards
> explain this:
>
>   https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Blank_Line_After_Block_Comment_Preceding_Variable_Definitions
>

Ok. Thanks for clarifying this. GDB's codebase seems to be inconsistent 
here. Some places add a newline while others don't.

>>>  extern int gdb_setpgid (void);
>>>
>>> -#endif /* !defined (TERMINAL_H) */
>>> +/* Determine whether we have job control, and set variable JOB_CONTROL
>>> +   accordingly.  */
>>> +
>>> +extern void have_job_control (void);
>>> +
>>> +#endif /* ! COMMON_TERMINAL_H */
>>> diff --git a/gdb/gdbserver/terminal.c b/gdb/gdbserver/terminal.c
>>> new file mode 100644
>>> index 0000000..9813018
>>> --- /dev/null
>>> +++ b/gdb/gdbserver/terminal.c
>>> @@ -0,0 +1,72 @@
>>> +/* Terminal interface definitions for the GDB remote server.
>>> +   Copyright (C) 2016 Free Software Foundation, Inc.
>>> +
>>> +   This file is part of GDB.
>>> +
>>> +   This program is free software; you can redistribute it and/or modify
>>> +   it under the terms of the GNU General Public License as published by
>>> +   the Free Software Foundation; either version 3 of the License, or
>>> +   (at your option) any later version.
>>> +
>>> +   This program is distributed in the hope that it will be useful,
>>> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> +   GNU General Public License for more details.
>>> +
>>> +   You should have received a copy of the GNU General Public License
>>> +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
>>> +
>>> +#include "server.h"
>>> +#include "common-terminal.h"
>>> +
>>> +/* See common/common-terminal.h.  */
>>> +
>>> +void
>>> +new_tty (void)
>>> +{
>>> +  /* To be implemented.  */
>>> +}
>>> +
>>> +/* See common/common-terminal.h.  */
>>> +
>>> +void
>>> +new_tty_prefork (const char *ttyname)
>>> +{
>>> +  /* To be implemented.  */
>>> +}
>>> +
>>> +/* See common/common-terminal.h.  */
>>> +
>>> +void
>>> +new_tty_postfork (void)
>>> +{
>>> +  /* To be implemented.  */
>>> +}
>>
>> Are these going to be implemented at some point or is this something
>> that may not be addressed until much later on?
>
> They're not exactly on my radar, but they're a part of the local/remote
> feature parity, so they will be tackled soon, I'd figure.
>
>> It wouldn't be great to have a number of these lying around with no
>> clear plan to have them addressed.
>
> I agree.
>
>> Are these counterparts of what gdb always has? Does it make sense to
>> unify those functions instead of adding placeholders for a potentially
>> different implementation?
>
> I'll try to give these a try and implementing them.  My only concern is
> that I don't want these to explode into a giant new task to implement
> inferior I/O on gdbserver, but it may be possible to just touch the
> necessary bits and make it simple.
>

The rule is that the patch sender automatically volunteers for 
additional bits of work. :-P

Honestly, if it gets too complicated, then it should be fine to have the 
placeholders. But then it would be nice to add some more interesting 
comments on how these ought to be implemented in the future, along with 
bits on how these should be synched with what gdb already supports.

Just an idea.

  reply	other threads:[~2017-01-03 21:27 UTC|newest]

Thread overview: 157+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-23  3:39 [PATCH 0/6] Implement the ability to start inferiors with a shell on gdbserver Sergio Durigan Junior
2016-12-23  3:39 ` [PATCH 2/6] Share parts of gdb/terminal.h with gdbserver Sergio Durigan Junior
2016-12-26 21:35   ` Luis Machado
2017-01-03 21:14     ` Sergio Durigan Junior
2017-01-03 21:27       ` Luis Machado [this message]
2017-01-03 21:38         ` Sergio Durigan Junior
2016-12-23  3:39 ` [PATCH 1/6] Share gdb/environ.[ch] " Sergio Durigan Junior
2016-12-26 21:34   ` Luis Machado
2016-12-23  3:39 ` [PATCH 3/6] Share parts of gdb/inflow.c " Sergio Durigan Junior
2016-12-26 21:34   ` Luis Machado
2017-01-03 21:16     ` Sergio Durigan Junior
2016-12-23  3:45 ` [PATCH 5/6] Share fork_inferior et al " Sergio Durigan Junior
2017-01-03 23:32   ` Luis Machado
2017-01-05 20:11     ` Sergio Durigan Junior
2018-02-21  3:58   ` [RFC] "gdbserver ... BASENAME_EXE" no longer works (was: "[PATCH 5/6] Share fork_inferior et al with gdbserver") Joel Brobecker
2018-02-21  6:15     ` [RFC] "gdbserver ... BASENAME_EXE" no longer works Sergio Durigan Junior
2018-02-21  7:37       ` Joel Brobecker
2016-12-23  3:45 ` [PATCH 4/6] Share parts of gdb/gdbthread.h with gdbserver Sergio Durigan Junior
2016-12-26 21:35   ` Luis Machado
2017-01-03 21:31     ` Sergio Durigan Junior
2016-12-23  3:49 ` [PATCH 6/6] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2016-12-23  8:07   ` Eli Zaretskii
2017-01-03 20:48     ` Sergio Durigan Junior
2017-01-04 16:08       ` Eli Zaretskii
2017-01-05 20:12         ` Sergio Durigan Junior
2016-12-26 21:34   ` Luis Machado
2017-01-03 21:35     ` Sergio Durigan Junior
2016-12-27  0:26   ` Tom Tromey
2017-01-03 21:32     ` Sergio Durigan Junior
2016-12-23  7:50 ` [PATCH 0/6] Implement the ability to start inferiors with a shell " Eli Zaretskii
2017-01-03 20:23   ` Sergio Durigan Junior
2017-01-18 15:36 ` [PATCH v2] " Sergio Durigan Junior
2017-01-18 15:36   ` [PATCH v2 2/6] Share parts of gdb/terminal.h with gdbserver Sergio Durigan Junior
2017-02-01 18:37     ` Luis Machado
2017-02-07 22:39       ` Sergio Durigan Junior
2017-01-18 15:36   ` [PATCH v2 6/6] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2017-01-18 16:43     ` Eli Zaretskii
2017-02-01 19:07     ` Luis Machado
2017-01-18 15:36   ` [PATCH v2 3/6] Share parts of gdb/inflow.c with gdbserver Sergio Durigan Junior
2017-02-01 18:41     ` Luis Machado
2017-01-18 15:36   ` [PATCH v2 1/6] Share gdb/environ.[ch] " Sergio Durigan Junior
2017-02-01 20:35     ` Luis Machado
2017-01-18 15:42   ` [PATCH v2 4/6] Share parts of gdb/gdbthread.h " Sergio Durigan Junior
2017-02-01 18:54     ` Luis Machado
2017-02-07 22:42       ` Sergio Durigan Junior
2017-02-08  9:07         ` Luis Machado
2017-01-18 15:44   ` [PATCH v2 5/6] Share fork_inferior et al " Sergio Durigan Junior
2017-02-01 21:39     ` Luis Machado
2017-02-07 22:23       ` Sergio Durigan Junior
2017-01-26 22:47   ` [PATCH v2] Implement the ability to start inferiors with a shell on gdbserver Sergio Durigan Junior
2017-01-27  7:45     ` Eli Zaretskii
2017-01-27 17:59       ` Sergio Durigan Junior
2017-02-08  3:25   ` [PATCH v3 0/6] " Sergio Durigan Junior
2017-02-08  3:25     ` [PATCH v3 3/6] Share parts of gdb/inflow.c with gdbserver Sergio Durigan Junior
2017-02-15 16:02       ` Pedro Alves
2017-02-16 22:06         ` Sergio Durigan Junior
2017-02-08  3:25     ` [PATCH v3 1/6] Share gdb/environ.[ch] " Sergio Durigan Junior
2017-02-15 15:36       ` Pedro Alves
2017-03-07 20:50         ` Sergio Durigan Junior
2017-02-08  3:25     ` [PATCH v3 2/6] Share parts of gdb/terminal.h " Sergio Durigan Junior
2017-02-15 15:54       ` Pedro Alves
2017-02-16 21:37         ` Sergio Durigan Junior
2017-02-08  3:32     ` [PATCH v3 5/6] Share fork_inferior et al " Sergio Durigan Junior
2017-02-15 17:28       ` Pedro Alves
2017-02-16 12:23         ` Philipp Rudo
2017-02-16 12:26           ` Pedro Alves
2017-02-16 12:37             ` Philipp Rudo
2017-03-07 19:51         ` Sergio Durigan Junior
2017-03-13 15:34           ` Pedro Alves
2017-02-08  3:33     ` [PATCH v3 4/6] Share parts of gdb/gdbthread.h " Sergio Durigan Junior
2017-02-15 16:15       ` Pedro Alves
2017-02-21 21:27         ` Sergio Durigan Junior
2017-02-08  3:33     ` [PATCH v3 6/6] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2017-02-08 17:34       ` Eli Zaretskii
2017-02-09  0:02         ` Sergio Durigan Junior
2017-02-17 16:05       ` Pedro Alves
2017-02-17 16:27         ` Eli Zaretskii
2017-03-07 20:59         ` Sergio Durigan Junior
2017-03-13 15:12           ` Pedro Alves
2017-02-13 19:50     ` [PATCH v3 0/6] Implement the ability to start inferiors with a shell " Sergio Durigan Junior
2017-03-08  5:29     ` [PATCH v4 0/5] " Sergio Durigan Junior
2017-03-08  5:29       ` [PATCH v4 4/5] Share fork_inferior et al with gdbserver Sergio Durigan Junior
2017-03-13 17:04         ` Pedro Alves
2017-03-17  1:02           ` Sergio Durigan Junior
2017-03-17 10:27             ` Pedro Alves
2017-03-08  5:29       ` [PATCH v4 2/5] Share parts of gdb/inflow.c " Sergio Durigan Junior
2017-03-08  5:29       ` [PATCH v4 3/5] Share parts of gdb/gdbthread.h " Sergio Durigan Junior
2017-03-08  5:29       ` [PATCH v4 1/5] Share parts of gdb/terminal.h " Sergio Durigan Junior
2017-03-08  5:29       ` [PATCH v4 5/5] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2017-03-08 15:49         ` Eli Zaretskii
2017-03-13 17:26         ` Pedro Alves
2017-03-30  1:50 ` [PATCH v5 0/5] Implement the ability to start inferiors with a shell " Sergio Durigan Junior
2017-03-30  1:50   ` [PATCH v5 1/5] Move parts of inferior job control to common/ Sergio Durigan Junior
2017-03-31 17:11     ` Pedro Alves
2017-03-31 17:31       ` Sergio Durigan Junior
2017-03-31 18:21         ` Pedro Alves
2017-03-31 21:20           ` Sergio Durigan Junior
2017-04-07 17:51             ` Pedro Alves
2017-04-12  0:25               ` Sergio Durigan Junior
2017-04-12  1:17                 ` [PATCH] Create gdb_termios.h (and cleanup gdb/{,gdbserver/}terminal.h) Sergio Durigan Junior
2017-04-12 10:28                   ` Pedro Alves
2017-04-12 22:00                     ` Sergio Durigan Junior
2017-03-30  1:50   ` [PATCH v5 3/5] C++-fy and prepare for sharing fork_inferior Sergio Durigan Junior
2017-04-07 18:30     ` Pedro Alves
2017-04-12  0:24       ` Sergio Durigan Junior
2017-04-12  5:04         ` Sergio Durigan Junior
2017-04-12  5:19           ` [obv/commit] Fix build breakage from last commit (window-nat.c:windows_create_inferior) Sergio Durigan Junior
2017-04-12 10:14           ` [PATCH] fork-child.c: Avoid unnecessary heap-allocation / string copying (Re: [PATCH v5 3/5] C++-fy and prepare for sharing fork_inferior) Pedro Alves
2017-04-12 22:26             ` Sergio Durigan Junior
2017-04-13  3:42               ` Pedro Alves
2017-04-13  4:33                 ` Sergio Durigan Junior
2017-04-13 10:51                   ` Pedro Alves
2017-04-13 18:30                     ` Sergio Durigan Junior
2017-04-14  1:03           ` [obv/commit] Fix build breakage on Cygwin (PR gdb/21385) Sergio Durigan Junior
2017-03-30  1:50   ` [PATCH v5 2/5] Share parts of gdb/gdbthread.h with gdbserver Sergio Durigan Junior
2017-03-31 17:15     ` Pedro Alves
2017-04-07  2:53       ` Sergio Durigan Junior
2017-04-07 17:33         ` Pedro Alves
2017-03-30  1:55   ` [PATCH v5 4/5] Share fork_inferior et al " Sergio Durigan Junior
2017-03-30  1:55   ` [PATCH v5 5/5] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2017-05-04  5:31 ` [PATCH v6 0/4] Implement the ability to start inferiors with a shell " Sergio Durigan Junior
2017-05-04  5:32   ` [PATCH v6 1/4] Move parts of inferior job control to common/ Sergio Durigan Junior
2017-05-04  5:32   ` [PATCH v6 2/4] Share parts of gdb/gdbthread.h with gdbserver Sergio Durigan Junior
2017-05-05 19:04     ` Pedro Alves
2017-05-06 14:15       ` Sergio Durigan Junior
2017-05-04  5:32   ` [PATCH v6 3/4] Share fork_inferior et al " Sergio Durigan Junior
2017-05-05 19:05     ` Pedro Alves
2017-05-31  3:43       ` Sergio Durigan Junior
2017-06-07 10:16         ` Pedro Alves
2017-06-07 12:23           ` Pedro Alves
2017-06-07 21:01             ` Sergio Durigan Junior
2017-06-07 21:06               ` Pedro Alves
2017-06-07 21:00           ` Sergio Durigan Junior
2017-05-04  5:38   ` [PATCH v6 4/4] Implement proper "startup-with-shell" support on gdbserver Sergio Durigan Junior
2017-05-05 19:21     ` Pedro Alves
2017-06-04 22:18 ` [PATCH v7 0/4] Implement the ability to start inferiors with a shell " Sergio Durigan Junior
2017-06-04 22:18   ` [PATCH v7 4/4] Implement proper "startup-with-shell" support " Sergio Durigan Junior
2017-06-05  2:31     ` Eli Zaretskii
2017-06-04 22:18   ` [PATCH v7 1/4] Move parts of inferior job control to common/ Sergio Durigan Junior
2017-06-04 22:18   ` [PATCH v7 2/4] Share parts of gdb/gdbthread.h with gdbserver Sergio Durigan Junior
2017-06-04 22:18   ` [PATCH v7 3/4] Share fork_inferior et al " Sergio Durigan Junior
2017-06-07 12:29     ` Pedro Alves
2017-06-07 21:06       ` Sergio Durigan Junior
2017-06-07 21:41         ` Sergio Durigan Junior
2017-06-07 22:05           ` Pedro Alves
2017-06-07 22:08             ` Sergio Durigan Junior
2017-06-07 22:14               ` Pedro Alves
2017-06-07 22:15         ` Sergio Durigan Junior
2017-06-07 22:29           ` Pedro Alves
2017-06-08  0:00             ` Sergio Durigan Junior
2019-02-14 15:38               ` Thomas Schwinge
2017-06-08 16:40     ` Yao Qi
2017-06-08 18:49       ` Sergio Durigan Junior
2017-06-08 21:02       ` [commit/obvious] Fix possible bug when no args have been provided to the executable Sergio Durigan Junior
2017-06-09 22:19       ` [commit/obvious] Include <signal.h> on gdbserver/fork-child.c (and fix regressions) Sergio Durigan Junior
2017-06-21 17:01     ` [PATCH v7 3/4] Share fork_inferior et al with gdbserver Simon Marchi
2017-06-21 17:19       ` Sergio Durigan Junior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2c08952e-2466-6b5e-5098-95fd64d4c445@codesourcery.com \
    --to=lgustavo@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=sergiodj@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).