public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
From: swagiaal@sourceware.org
To: archer-commits@sourceware.org
Subject: [SCM]  archer-swagiaal-upstream: Merge branch 'master' into archer-swagiaal-upstream
Date: Wed, 15 Sep 2010 19:51:00 -0000	[thread overview]
Message-ID: <20100915195108.29635.qmail@sourceware.org> (raw)

The branch, archer-swagiaal-upstream has been updated
       via  25a3eb227b99d9930890a41dd1dd116753d49a0a (commit)
       via  61f0884b46ba2d3f8775995ec5433328a6d2e5cd (commit)
       via  2ccd65e25123e680eea9e47a645e2b6d2fa50c79 (commit)
       via  8fc361860682f78b8c1342b84c0f3920b6a26c81 (commit)
       via  c4b8673aa65273a6308f68e7ab43865d71832488 (commit)
       via  a31d2450deff59c1a13a5e75fb83c3cde5fa8ad0 (commit)
       via  4dd6838b3744148a9f02e8f501247833cf972738 (commit)
       via  058124e05ac6c31ad258e30ef0e7cea23b39c2e5 (commit)
       via  9ab6c083f5f3d8b2c2bc6239bac45a3944283d04 (commit)
       via  8e178d050f8a4a3d75f0dbfe4329009c3bcf6982 (commit)
       via  b791ba7ae4d0e38ac1a13f944c8a4a2b4f118b6a (commit)
       via  5196fb1be55974acdcb603bf7e142c5f6e808574 (commit)
       via  57d1b0d41f1acbc4c140c49b66301040cad3fc43 (commit)
       via  a902f2ad39ee4c1d82b093a3e2093fa21a157220 (commit)
       via  bc54c3d8368d52bb0218c64afc5632fd2f6c8509 (commit)
       via  5c05b641346f70bd4884766ad38b67735618fbe2 (commit)
       via  812ad48c254399696c0aa73e92753e5b40929c1b (commit)
       via  68a15546475fe0162e39a7aed6866bd3f7692c06 (commit)
      from  3238a2df35b4c5930c4f91ea539f851ce02abc4a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 25a3eb227b99d9930890a41dd1dd116753d49a0a
Merge: 3238a2d 61f0884
Author: Sami Wagiaalla <swagiaal@redhat.com>
Date:   Wed Sep 15 15:44:53 2010 -0400

    Merge branch 'master' into archer-swagiaal-upstream

-----------------------------------------------------------------------

Summary of changes:
 bfd/ChangeLog                             |    4 +
 bfd/config.bfd                            |    2 +-
 bfd/version.h                             |    2 +-
 config/ChangeLog                          |    4 +
 config/dfp.m4                             |   53 +++
 gdb/ChangeLog                             |   92 +++++-
 gdb/breakpoint.c                          |   12 +-
 gdb/cli-out.c                             |   60 ++-
 gdb/cli-out.h                             |    9 +-
 gdb/cli/cli-logging.c                     |  121 +++++-
 gdb/config.in                             |    3 +
 gdb/configure                             |    2 +-
 gdb/configure.ac                          |    2 +-
 gdb/infrun.c                              |  257 ++++++------
 gdb/python/py-breakpoint.c                |    4 +-
 gdb/record.c                              |  609 -----------------------------
 gdb/ser-pipe.c                            |   12 +-
 gdb/testsuite/ChangeLog                   |   16 +
 gdb/testsuite/gdb.base/ui-redirect.exp    |   41 ++
 gdb/testsuite/gdb.base/watchpoint.exp     |   27 ++-
 gdb/testsuite/gdb.dwarf2/dw2-filename.S   |   53 +++
 gdb/testsuite/gdb.dwarf2/dw2-filename.exp |   44 ++
 gdb/version.in                            |    2 +-
 libdecnumber/ChangeLog                    |    7 +
 libdecnumber/Makefile.in                  |    1 +
 libdecnumber/aclocal.m4                   |    1 +
 libdecnumber/configure                    |   38 ++-
 libdecnumber/configure.ac                 |   38 +--
 28 files changed, 674 insertions(+), 842 deletions(-)
 create mode 100644 config/dfp.m4
 create mode 100644 gdb/testsuite/gdb.base/ui-redirect.exp
 create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-filename.S
 create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-filename.exp

First 500 lines of diff:
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7edf390..26d45ff 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-02  Richard Henderson  <rth@redhat.com>
+
+	* config.bfd (x86_64-*-mingw*): Select 32-bit pei vectors too.
+
 2010-09-01  Pedro Alves  <pedro@codesourcery.com>
 
 	* netbsd-core.c (netbsd_core_core_file_pid): Renamed to ...
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 0bfb535..e42535f 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -634,7 +634,7 @@ case "${targ}" in
     ;;
   x86_64-*-mingw*)
     targ_defvec=x86_64pe_vec
-    targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec"
+    targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec i386pe_vec i386pei_vec bfd_elf32_i386_vec"
     want64=true
     targ_underscore=no
     ;;
diff --git a/bfd/version.h b/bfd/version.h
index d5cb1b3..df375d0 100644
--- a/bfd/version.h
+++ b/bfd/version.h
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20100902
+#define BFD_VERSION_DATE 20100904
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
diff --git a/config/ChangeLog b/config/ChangeLog
index 22a3641..af06955 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-03  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+	* dfp.m4: New file.
+
 2010-08-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	PR target/45084
diff --git a/config/dfp.m4 b/config/dfp.m4
new file mode 100644
index 0000000..4cace76
--- /dev/null
+++ b/config/dfp.m4
@@ -0,0 +1,53 @@
+dnl @synopsis GCC_AC_ENABLE_DECIMAL_FLOAT([target triplet])
+dnl
+dnl Enable C extension for decimal float if target supports it.
+dnl
+dnl @author Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+AC_DEFUN([GCC_AC_ENABLE_DECIMAL_FLOAT],
+[
+AC_ARG_ENABLE(decimal-float,
+[  --enable-decimal-float={no,yes,bid,dpd}
+			enable decimal float extension to C.  Selecting 'bid'
+			or 'dpd' choses which decimal floating point format
+			to use],
+[
+  case $enable_decimal_float in
+    yes | no | bid | dpd) ;;
+    *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
+Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
+  esac
+],
+[
+  case $1 in
+    powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux*)
+      enable_decimal_float=yes
+      ;;
+    *)
+      AC_MSG_WARN(decimal float is not supported for this target, ignored)
+      enable_decimal_float=no
+      ;;
+  esac
+])
+
+# x86's use BID format instead of DPD
+case x$enable_decimal_float in
+  xyes)
+    case $1 in
+      i?86*-*-* | x86_64*-*-*)
+	enable_decimal_float=bid
+	;;
+      *)
+	enable_decimal_float=dpd
+	;;
+    esac
+    ;;
+  xno)
+    # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
+    # dependency on libdecnumber.
+    enable_decimal_float=dpd
+    ;;
+esac
+AC_SUBST(enable_decimal_float)
+
+])
\ No newline at end of file
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2d2344c..f569efa 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,93 @@
+2010-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* breakpoint.c (can_use_hardware_watchpoint): Handle the first
+	value specially.
+
+2010-09-04  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	Code cleanup - split print_stop_reason.
+	* infrun.c (enum inferior_stop_reason): Remove.
+	(print_stop_reason): Remove by splitting into ...
+	(print_exited_reason, print_signal_exited_reason)
+	(print_no_history_reason, print_signal_received_reason)
+	(print_end_stepping_range_reason): ... these new functions.  Update
+	the preceding comment.
+	(handle_inferior_event): Change the calls to print_exited_reason,
+	print_signal_exited_reason, print_no_history_reason,
+	print_signal_received_reason, print_end_stepping_range_reason.
+	(handle_step_into_function, handle_step_into_function_backward):
+	Change the calls to print_end_stepping_range_reason.
+
+2010-09-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* breakpoint.c (save_breakpoints): Use RETURN_MASK_ALL.
+	* cli-out.c: Include vec.h.
+	(cli_field_fmt, cli_spaces, cli_text, cli_message, cli_flush): New
+	variable stream, initialize it, use it.
+	(cli_redirect): New function comment.  Replace the stream and
+	original_stream fields by the new streams field.  Remove the
+	original_stream != NULL conditional, assert error on NULL instead.
+	(out_field_fmt, field_separator): New variable stream, initialize it, use it.
+	(cli_out_data_ctor): Assert non-NULL stream.  Replace the stream and
+	original_stream fields by the new streams field.
+	(cli_out_set_stream): Replace the stream field by the new streams
+	field.
+	* cli-out.h: Include vec.h.
+	(ui_filep): New typedef, call DEF_VEC_P for it.
+	(struct cli_ui_out_data): Replace the stream and original_stream
+	fields by the new streams field.
+	* cli/cli-logging.c (set_logging_redirect): Call ui_out_redirect with
+	NULL first.  Extend the comment.
+	(handle_redirections): Call ui_out_redirect with output.
+	* python/py-breakpoint.c (bppy_get_commands): Move ui_out_redirect
+	calls outside of the TRY_CATCH block.
+
+2010-09-03  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 7.2 released.
+
+2010-09-02  Joel Brobecker  <brobecker@adacore.com>
+
+	Back out the following change:
+	| 2010-06-29  Hui Zhu  <teawater@gmail.com>
+	| * record.c (set_record_pic_cmdlist,
+	| show_record_pic_cmdlist): New variables.
+	| (set_record_pic_command,
+	| show_record_pic_command): New functions.
+	| (record_pic_function, record_pic_line, record_pic_enum,
+	| set_record_pic_type, record_pic_hide_nofunction,
+	| record_pic_hide_nosource, record_pic_hide_same): New variables.
+	| (record_pic_fputs): New function.
+	| (function_list, node_list, edge_list): New struct.
+	| (function_list, node_list, edge_list): New variables.
+	| (record_pic_cleanups, record_pic_node,
+	| record_pic_edge, cmd_record_pic): New functions.
+	| (_initialize_record): Add new commands for record pic.
+
+2010-09-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* config.in, configure: Regenerated.
+	* configure.ac: Check for waitpid.
+	* ser-pipe.c (pipe_close): Wait for the program to exit.
+
+2010-09-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+	* cli/cli-logging.c: Include gdb_assert.h.
+	(set_logging_overwrite): New function.
+	(logging_redirect): New comment.
+	(logging_no_redirect_file, set_logging_redirect)
+	(pop_output_files) <logging_no_redirect_file>: New.
+	(handle_redirections) <!logging_redirect>: New variable
+	no_redirect_file.  Remove file autoclose for tee_file_new.  No longer
+	discard cleanup for the close of former OUTPUT.  Set
+	LOGGING_NO_REDIRECT_FILE.
+	(handle_redirections) <logging_redirect>: gdb_assert
+	LOGGING_NO_REDIRECT_FILE.
+	(show_logging_command) <logging_redirect handling>: Adjust messages
+	for SAVED_FILENAME not NULL.
+	(_initialize_cli_logging): Install set_logging_overwrite and
+	set_logging_redirect.
+
 2010-09-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
 	* iq2000-tdep.c (iq2000_scan_prologue): Initialize SAL.END.
@@ -576,7 +666,7 @@
 
 2010-08-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
-	* cli-logging.c (logging_overwrite, logging_redirect): Make them
+	* cli/cli-logging.c (logging_overwrite, logging_redirect): Make them
 	static.
 
 2010-08-13  Ken Werner  <ken.werner@de.ibm.com>
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index a034d6a..1d3f7fc 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -8327,10 +8327,12 @@ can_use_hardware_watchpoint (struct value *v)
     {
       if (VALUE_LVAL (v) == lval_memory)
 	{
-	  if (value_lazy (v))
-	    /* A lazy memory lvalue is one that GDB never needed to fetch;
-	       we either just used its address (e.g., `a' in `a.b') or
-	       we never needed it at all (e.g., `a' in `a,b').  */
+	  if (v != head && value_lazy (v))
+	    /* A lazy memory lvalue in the chain is one that GDB never
+	       needed to fetch; we either just used its address (e.g.,
+	       `a' in `a.b') or we never needed it at all (e.g., `a'
+	       in `a,b').  This doesn't apply to HEAD; if that is
+	       lazy then it was not readable, but watch it anyway.  */
 	    ;
 	  else
 	    {
@@ -11487,7 +11489,7 @@ save_breakpoints (char *filename, int from_tty,
 	fprintf_unfiltered (fp, "  commands\n");
 	
 	ui_out_redirect (uiout, fp);
-	TRY_CATCH (ex, RETURN_MASK_ERROR)
+	TRY_CATCH (ex, RETURN_MASK_ALL)
 	  {
 	    print_command_lines (uiout, tp->commands->commands, 2);
 	  }
diff --git a/gdb/cli-out.c b/gdb/cli-out.c
index de0559f..7867311 100644
--- a/gdb/cli-out.c
+++ b/gdb/cli-out.c
@@ -26,6 +26,7 @@
 #include "cli-out.h"
 #include "gdb_string.h"
 #include "gdb_assert.h"
+#include "vec.h"
 
 typedef struct cli_ui_out_data cli_out_data;
 
@@ -224,11 +225,13 @@ cli_field_fmt (struct ui_out *uiout, int fldno,
 	       va_list args)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream;
 
   if (data->suppress_output)
     return;
 
-  vfprintf_filtered (data->stream, format, args);
+  stream = VEC_last (ui_filep, data->streams);
+  vfprintf_filtered (stream, format, args);
 
   if (align != ui_noalign)
     field_separator ();
@@ -238,20 +241,26 @@ static void
 cli_spaces (struct ui_out *uiout, int numspaces)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream;
 
   if (data->suppress_output)
     return;
-  print_spaces_filtered (numspaces, data->stream);
+
+  stream = VEC_last (ui_filep, data->streams);
+  print_spaces_filtered (numspaces, stream);
 }
 
 static void
 cli_text (struct ui_out *uiout, const char *string)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream;
 
   if (data->suppress_output)
     return;
-  fputs_filtered (string, data->stream);
+
+  stream = VEC_last (ui_filep, data->streams);
+  fputs_filtered (string, stream);
 }
 
 static void ATTRIBUTE_PRINTF (3, 0)
@@ -262,8 +271,13 @@ cli_message (struct ui_out *uiout, int verbosity,
 
   if (data->suppress_output)
     return;
+
   if (ui_out_get_verblvl (uiout) >= verbosity)
-    vfprintf_unfiltered (data->stream, format, args);
+    {
+      struct ui_file *stream = VEC_last (ui_filep, data->streams);
+
+      vfprintf_unfiltered (stream, format, args);
+    }
 }
 
 static void
@@ -280,25 +294,24 @@ static void
 cli_flush (struct ui_out *uiout)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream = VEC_last (ui_filep, data->streams);
 
-  gdb_flush (data->stream);
+  gdb_flush (stream);
 }
 
+/* OUTSTREAM as non-NULL will push OUTSTREAM on the stack of output streams
+   and make it therefore active.  OUTSTREAM as NULL will pop the last pushed
+   output stream; it is an internal error if it does not exist.  */
+
 static int
 cli_redirect (struct ui_out *uiout, struct ui_file *outstream)
 {
   cli_out_data *data = ui_out_data (uiout);
 
   if (outstream != NULL)
-    {
-      data->original_stream = data->stream;
-      data->stream = outstream;
-    }
-  else if (data->original_stream != NULL)
-    {
-      data->stream = data->original_stream;
-      data->original_stream = NULL;
-    }
+    VEC_safe_push (ui_filep, data->streams, outstream);
+  else
+    VEC_pop (ui_filep, data->streams);
 
   return 0;
 }
@@ -315,10 +328,11 @@ out_field_fmt (struct ui_out *uiout, int fldno,
 	       const char *format,...)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream = VEC_last (ui_filep, data->streams);
   va_list args;
 
   va_start (args, format);
-  vfprintf_filtered (data->stream, format, args);
+  vfprintf_filtered (stream, format, args);
 
   va_end (args);
 }
@@ -329,8 +343,9 @@ static void
 field_separator (void)
 {
   cli_out_data *data = ui_out_data (uiout);
+  struct ui_file *stream = VEC_last (ui_filep, data->streams);
 
-  fputc_filtered (' ', data->stream);
+  fputc_filtered (' ', stream);
 }
 
 /* This is the CLI ui-out implementation functions vector */
@@ -364,8 +379,11 @@ struct ui_out_impl cli_ui_out_impl =
 void
 cli_out_data_ctor (cli_out_data *self, struct ui_file *stream)
 {
-  self->stream = stream;
-  self->original_stream = NULL;
+  gdb_assert (stream != NULL);
+
+  self->streams = NULL;
+  VEC_safe_push (ui_filep, self->streams, stream);
+
   self->suppress_output = 0;
 }
 
@@ -385,8 +403,10 @@ struct ui_file *
 cli_out_set_stream (struct ui_out *uiout, struct ui_file *stream)
 {
   cli_out_data *data = ui_out_data (uiout);
-  struct ui_file *old = data->stream;
+  struct ui_file *old;
+  
+  old = VEC_pop (ui_filep, data->streams);
+  VEC_quick_push (ui_filep, data->streams, stream);
 
-  data->stream = stream;
   return old;
 }
diff --git a/gdb/cli-out.h b/gdb/cli-out.h
index b4cdd82..75875c4 100644
--- a/gdb/cli-out.h
+++ b/gdb/cli-out.h
@@ -22,14 +22,19 @@
 #define CLI_OUT_H
 
 #include "ui-out.h"
+#include "vec.h"
+
+/* Used for cli_ui_out_data->streams.  */
+
+typedef struct ui_file *ui_filep;
+DEF_VEC_P (ui_filep);
 
 /* These are exported so that they can be extended by other `ui_out'
    implementations, like TUI's.  */
 
 struct cli_ui_out_data
   {
-    struct ui_file *stream;
-    struct ui_file *original_stream;
+    VEC (ui_filep) *streams;
     int suppress_output;
   };
 
diff --git a/gdb/cli/cli-logging.c b/gdb/cli/cli-logging.c
index af63dcc..fc486d3 100644
--- a/gdb/cli/cli-logging.c
+++ b/gdb/cli/cli-logging.c
@@ -21,6 +21,7 @@
 #include "defs.h"
 #include "gdbcmd.h"
 #include "ui-out.h"
+#include "gdb_assert.h"
 
 #include "gdb_string.h"
 
@@ -46,6 +47,15 @@ show_logging_filename (struct ui_file *file, int from_tty,
 }
 
 static int logging_overwrite;
+
+static void
+set_logging_overwrite (char *args, int from_tty, struct cmd_list_element *c)
+{
+  if (saved_filename)
+    warning (_("Currently logging to %s.  Turn the logging off and on to "
+	       "make the new setting effective."), saved_filename);
+}
+
 static void
 show_logging_overwrite (struct ui_file *file, int from_tty,
 			struct cmd_list_element *c, const char *value)
@@ -55,7 +65,72 @@ Whether logging overwrites or appends to the log file is %s.\n"),
 		    value);
 }
 
+/* Value as configured by the user.  */
 static int logging_redirect;
+
+/* The on-disk file in use if logging is currently active together with
+   redirection turned off (and therefore using tee_file_new).  For active
+   logging with redirection the on-disk file is directly in GDB_STDOUT and
+   this variable is NULL.  */
+static struct ui_file *logging_no_redirect_file;
+
+static void
+set_logging_redirect (char *args, int from_tty, struct cmd_list_element *c)
+{
+  struct cleanup *cleanups = NULL;
+  struct ui_file *output, *new_logging_no_redirect_file;
+
+  if (saved_filename == NULL
+      || (logging_redirect != 0 && logging_no_redirect_file == NULL)
+      || (logging_redirect == 0 && logging_no_redirect_file != NULL))
+    return;
+
+  if (logging_redirect != 0)
+    {
+      gdb_assert (logging_no_redirect_file != NULL);
+
+      /* ui_out_redirect still has not been called for next gdb_stdout.  */
+      cleanups = make_cleanup_ui_file_delete (gdb_stdout);
+
+      output = logging_no_redirect_file;
+      new_logging_no_redirect_file = NULL;
+
+      if (from_tty)
+	fprintf_unfiltered (saved_output.out, "Redirecting output to %s.\n",
+			    logging_filename);
+    }
+  else
+    {
+      gdb_assert (logging_no_redirect_file == NULL);
+      output = tee_file_new (saved_output.out, 0, gdb_stdout, 0);
+      if (output == NULL)
+	perror_with_name (_("set logging"));
+      new_logging_no_redirect_file = gdb_stdout;


hooks/post-receive
--
Repository for Project Archer.


             reply	other threads:[~2010-09-15 19:51 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-15 19:51 swagiaal [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-11-16 18:17 swagiaal
2010-05-10 19:31 swagiaal
2010-05-10 19:10 swagiaal
2010-03-17 15:14 swagiaal
2010-02-17 16:03 swagiaal
2010-01-28 19:18 swagiaal
2010-01-27 19:36 swagiaal

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=20100915195108.29635.qmail@sourceware.org \
    --to=swagiaal@sourceware.org \
    --cc=archer-commits@sourceware.org \
    /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).