public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@novell.com>
To: <nickc@redhat.com>
Cc: <binutils@sources.redhat.com>,<ian@wasabisystems.com>
Subject: Re: [PATCH] gas should honor original section type (was Re: ELF	section identification and gld)
Date: Wed, 15 Dec 2004 10:15:00 -0000	[thread overview]
Message-ID: <s1c00eca.045@emea1-mh.id2.novell.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 8647 bytes --]

>Unfortunately this patch appears to introduce quite a few new testsuite

>failures in other toolchains.  In particular I found lots of failures
of 
>the new section5 test because it only checks for REL in the output and

>does not include RELA.  (This affected toolchains such as: 
>alpha-linux-gnu and sh-elf).
>
>Other toolchains had even more difficulties.  The patch introduced 51

>new unexpected failures for GAS tests and 47 new unexpected failures
for 
>LD tests for the mmix-mmixware toolchain.  The mips64-linux toolchain

>had 13 and 15 new unexpected failures respectively, and the 
>sparc64-linux-gnu toolchain has 21 and 9 new failures.
>
>Please could you investigate and resolve these issues and then
resubmit 
>your patch ?

This patch attempts to address this. Built and tested on
i686-pc-linux-gnu
and as cross version for mmix-mmixware (and verified that the same
failure
cause applies to the other mentioned architectures). The previous
version
was simply overdoing its job.

One thing I'd like to note before any complaints come up: A side effect
of
the change is that on a sequence like

.section .xyz, "a"
.section .xyz, "a", @progbits

a warning will now be issued on the second directive, even though
implicitly
the missing section type in the first will (at a late stage during
assembly)
be set to SHT_PROGBITS, too. I consider this warning valid, though,
for
consistency reasons (one shouldn't use both implicit and explicit
setting of
the type).

Jan

gas/
2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* config/obj-elf.c (obj_elf_change_section): Only set type and
	attributes on new sections. Emit warning when type of
re-declared
	section doesn't match.

gas/testsuite/
2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* section5.[els]: New.

---
/home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/config/obj-elf.c	2004-11-18
15:05:33.000000000 +0100
+++ 2004-12-03.13.35/gas/config/obj-elf.c	2004-12-14
16:07:27.000000000 +0100
@@ -622,11 +622,6 @@ obj_elf_change_section (const char *name
 	attr |= ssect->attr;
     }
 
-  if (type != SHT_NULL)
-    elf_section_type (sec) = type;
-  if (attr != 0)
-    elf_section_flags (sec) = attr;
-
   /* Convert ELF type and flags to BFD flags.  */
   flags = (SEC_RELOC
 	   | ((attr & SHF_WRITE) ? 0 : SEC_READONLY)
@@ -647,6 +642,9 @@ obj_elf_change_section (const char *name
     {
       symbolS *secsym;
 
+      elf_section_type (sec) = type;
+      elf_section_flags (sec) = attr;
+
       /* Prevent SEC_HAS_CONTENTS from being inadvertently set.  */
       if (type == SHT_NOBITS)
 	seg_info (sec)->bss = 1;
@@ -663,19 +661,26 @@ obj_elf_change_section (const char *name
       else
 	symbol_table_insert (section_symbol (sec));
     }
-  else if (attr != 0)
+  else
     {
-      /* If section attributes are specified the second time we see a
-	 particular section, then check that they are the same as we
-	 saw the first time.  */
-      if (((old_sec->flags ^ flags)
-	   & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
-	      | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE |
SEC_STRINGS
-	      | SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
-	      | SEC_THREAD_LOCAL)))
-	as_warn (_("ignoring changed section attributes for %s"),
name);
-      if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned)
entsize)
-	as_warn (_("ignoring changed section entity size for %s"),
name);
+      if (type != SHT_NULL
+	  && (unsigned) type != elf_section_type (old_sec))
+	as_warn (_("ignoring changed section type for %s"), name);
+
+      if (attr != 0)
+	{
+	  /* If section attributes are specified the second time we see
a
+	     particular section, then check that they are the same as
we
+	     saw the first time.  */
+	  if (((old_sec->flags ^ flags)
+	       & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
+		  | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE |
SEC_STRINGS
+		  | SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
+		  | SEC_THREAD_LOCAL)))
+	    as_warn (_("ignoring changed section attributes for %s"),
name);
+	  if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned)
entsize)
+	    as_warn (_("ignoring changed section entity size for %s"),
name);
+	}
     }
 
 #ifdef md_elf_section_change_hook
---
/home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/elf.exp	2004-10-06
09:35:51.000000000 +0200
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/elf.exp	2004-12-14
16:07:27.000000000 +0100
@@ -2,7 +2,7 @@
 # elf tests
 #
 
-proc run_list_test { name suffix opts readelf_pipe } {
+proc run_list_test { name suffix opts readelf_opts readelf_pipe } {
     global READELF
     global srcdir subdir
     set testname "elf $name list"
@@ -14,8 +14,8 @@ proc run_list_test { name suffix opts re
 	verbose "output is [file_contents "dump.out"]" 2
 	return
     }
-    send_log "$READELF -s dump.o > dump.out\n"
-    catch "exec $READELF -s dump.o $readelf_pipe > dump.out\n"
comp_output
+    send_log "$READELF $readelf_opts dump.o $readelf_pipe >
dump.out\n"
+    catch "exec $READELF $readelf_opts dump.o $readelf_pipe >
dump.out\n" comp_output
     if ![string match "" $comp_output] then {
 	send_log "$comp_output\n"
 	fail $testname
@@ -57,9 +57,10 @@ if { ([istarget "*-*-*elf*"]		
     run_dump_test "group1b" 
     run_dump_test "section0" 
     run_dump_test "section1" 
-    run_list_test "section2" "$target_machine" "-al" ""
-    run_dump_test "section3"
+    run_list_test "section2" "$target_machine" "-al" "-s" ""
+    run_dump_test "section3" 
     run_dump_test "section4"
+    run_list_test "section5" "" "-al" "-SW" "| grep
\"\\\\.test\\\[\\\[:digit:\\\]\\\]\""
     run_dump_test "symver" 
-    run_list_test "type" "" "" "| grep \"1 \\\[FONT\\\]\"" 
+    run_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\"" 
 }
---
/home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.e	1970-01-01
01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.e	2004-12-06
11:57:54.000000000 +0100
@@ -0,0 +1,8 @@
+.* \.test0[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[
	]+[[:digit:]]+.*
+.* \.test1[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[
	]+[[:digit:]]+.*
+.* \.rela?\.test1[ 	]+RELA?[ 	]+.*
+.* \.test2[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[
	]+[[:digit:]]+.*
+.* \.rela?\.test2[ 	]+RELA?[ 	]+.*
+.* \.test3[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}WA[
	]+[[:digit:]]+.*
+.* \.rela?\.test3[ 	]+RELA?[ 	]+.*
+.* \.test4[ 	]+NOBITS[ 	]+([[:xdigit:]]+[ 	]+){4}WA[
	]+[[:digit:]]+.*
---
/home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.l	1970-01-01
01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.l	2004-08-27
18:09:29.000000000 +0200
@@ -0,0 +1,37 @@
+.*: Assembler messages:
+.*:7: Warning: .*
+.*:7: Warning: .*
+.*:10: Warning: .*
+.*:13: Warning: .*
+.*:16: Warning: .*
+.*:18: Warning: .*
+.*:20: Warning: .*
+.*:22: Warning: .*
+.*:24: Warning: .*
+.*GAS.*
+
+
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test0[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test1,[ 	]*"",[
	]*@progbits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test2[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test3,[ 	]*"aw"[
	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test4,[ 	]*"aw",[
	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test1,[ 	]*"aw",[
	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test2,[ 	]*"w"[
	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test3,[ 	]*"aw",[
	]*@progbits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test4,[ 	]*"aw"[
	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.data,[ 	]*"a"[
	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.bss,[ 	]*"a"[
	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.data,[ 	]*"aw",[
	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.bss,[ 	]*"aw",[
	]*@progbits[ 	]*
---
/home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.s	1970-01-01
01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.s	2004-08-27
18:06:16.000000000 +0200
@@ -0,0 +1,24 @@
+.section	.test0
+.section	.test1, "", @progbits
+.section	.test2
+.section	.test3, "aw"
+.section	.test4, "aw", @nobits
+
+.section	.test1, "aw", @nobits
+test1:	.long	test1
+
+.section	.test2, "w"
+test2:	.long	test2
+
+.section	.test3, "aw", @progbits
+test3:	.long	test3
+
+.section	.test4, "aw"
+
+.section	.data, "a"
+
+.section	.bss, "a"
+
+.section	.data, "aw", @nobits
+
+.section	.bss, "aw", @progbits


[-- Attachment #2: binutils-mainline-elf-section.patch --]
[-- Type: application/octet-stream, Size: 7901 bytes --]

This patch attempts to address this. Built and tested on i686-pc-linux-gnu
and as cross version for mmix-mmixware (and verified that the same failure
cause applies to the other mentioned architectures). The previous version
was simply overdoing its job.

One thing I'd like to note before any complaints come up: A side effect of
the change is that on a sequence like

.section .xyz, "a"
.section .xyz, "a", @progbits

a warning will now be issued on the second directive, even though implicitly
the missing section type in the first will (at a late stage during assembly)
be set to SHT_PROGBITS, too. I consider this warning valid, though, for
consistency reasons (one shouldn't use both implicit and explicit setting of
the type).

Jan

gas/
2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* config/obj-elf.c (obj_elf_change_section): Only set type and
	attributes on new sections. Emit warning when type of re-declared
	section doesn't match.

gas/testsuite/
2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* section5.[els]: New.

--- /home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/config/obj-elf.c	2004-11-18 15:05:33.000000000 +0100
+++ 2004-12-03.13.35/gas/config/obj-elf.c	2004-12-14 16:07:27.000000000 +0100
@@ -622,11 +622,6 @@ obj_elf_change_section (const char *name
 	attr |= ssect->attr;
     }
 
-  if (type != SHT_NULL)
-    elf_section_type (sec) = type;
-  if (attr != 0)
-    elf_section_flags (sec) = attr;
-
   /* Convert ELF type and flags to BFD flags.  */
   flags = (SEC_RELOC
 	   | ((attr & SHF_WRITE) ? 0 : SEC_READONLY)
@@ -647,6 +642,9 @@ obj_elf_change_section (const char *name
     {
       symbolS *secsym;
 
+      elf_section_type (sec) = type;
+      elf_section_flags (sec) = attr;
+
       /* Prevent SEC_HAS_CONTENTS from being inadvertently set.  */
       if (type == SHT_NOBITS)
 	seg_info (sec)->bss = 1;
@@ -663,19 +661,26 @@ obj_elf_change_section (const char *name
       else
 	symbol_table_insert (section_symbol (sec));
     }
-  else if (attr != 0)
+  else
     {
-      /* If section attributes are specified the second time we see a
-	 particular section, then check that they are the same as we
-	 saw the first time.  */
-      if (((old_sec->flags ^ flags)
-	   & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
-	      | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS
-	      | SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
-	      | SEC_THREAD_LOCAL)))
-	as_warn (_("ignoring changed section attributes for %s"), name);
-      if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
-	as_warn (_("ignoring changed section entity size for %s"), name);
+      if (type != SHT_NULL
+	  && (unsigned) type != elf_section_type (old_sec))
+	as_warn (_("ignoring changed section type for %s"), name);
+
+      if (attr != 0)
+	{
+	  /* If section attributes are specified the second time we see a
+	     particular section, then check that they are the same as we
+	     saw the first time.  */
+	  if (((old_sec->flags ^ flags)
+	       & (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
+		  | SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS
+		  | SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
+		  | SEC_THREAD_LOCAL)))
+	    as_warn (_("ignoring changed section attributes for %s"), name);
+	  if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
+	    as_warn (_("ignoring changed section entity size for %s"), name);
+	}
     }
 
 #ifdef md_elf_section_change_hook
--- /home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/elf.exp	2004-10-06 09:35:51.000000000 +0200
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/elf.exp	2004-12-14 16:07:27.000000000 +0100
@@ -2,7 +2,7 @@
 # elf tests
 #
 
-proc run_list_test { name suffix opts readelf_pipe } {
+proc run_list_test { name suffix opts readelf_opts readelf_pipe } {
     global READELF
     global srcdir subdir
     set testname "elf $name list"
@@ -14,8 +14,8 @@ proc run_list_test { name suffix opts re
 	verbose "output is [file_contents "dump.out"]" 2
 	return
     }
-    send_log "$READELF -s dump.o > dump.out\n"
-    catch "exec $READELF -s dump.o $readelf_pipe > dump.out\n" comp_output
+    send_log "$READELF $readelf_opts dump.o $readelf_pipe > dump.out\n"
+    catch "exec $READELF $readelf_opts dump.o $readelf_pipe > dump.out\n" comp_output
     if ![string match "" $comp_output] then {
 	send_log "$comp_output\n"
 	fail $testname
@@ -57,9 +57,10 @@ if { ([istarget "*-*-*elf*"]		
     run_dump_test "group1b" 
     run_dump_test "section0" 
     run_dump_test "section1" 
-    run_list_test "section2" "$target_machine" "-al" ""
-    run_dump_test "section3"
+    run_list_test "section2" "$target_machine" "-al" "-s" ""
+    run_dump_test "section3" 
     run_dump_test "section4"
+    run_list_test "section5" "" "-al" "-SW" "| grep \"\\\\.test\\\[\\\[:digit:\\\]\\\]\""
     run_dump_test "symver" 
-    run_list_test "type" "" "" "| grep \"1 \\\[FONT\\\]\""
+    run_list_test "type" "" "" "-s" "| grep \"1 \\\[FONT\\\]\""
 }
--- /home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.e	1970-01-01 01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.e	2004-12-06 11:57:54.000000000 +0100
@@ -0,0 +1,8 @@
+.* \.test0[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[ 	]+[[:digit:]]+.*
+.* \.test1[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[ 	]+[[:digit:]]+.*
+.* \.rela?\.test1[ 	]+RELA?[ 	]+.*
+.* \.test2[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}[ 	]+[[:digit:]]+.*
+.* \.rela?\.test2[ 	]+RELA?[ 	]+.*
+.* \.test3[ 	]+PROGBITS[ 	]+([[:xdigit:]]+[ 	]+){4}WA[ 	]+[[:digit:]]+.*
+.* \.rela?\.test3[ 	]+RELA?[ 	]+.*
+.* \.test4[ 	]+NOBITS[ 	]+([[:xdigit:]]+[ 	]+){4}WA[ 	]+[[:digit:]]+.*
--- /home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.l	1970-01-01 01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.l	2004-08-27 18:09:29.000000000 +0200
@@ -0,0 +1,37 @@
+.*: Assembler messages:
+.*:7: Warning: .*
+.*:7: Warning: .*
+.*:10: Warning: .*
+.*:13: Warning: .*
+.*:16: Warning: .*
+.*:18: Warning: .*
+.*:20: Warning: .*
+.*:22: Warning: .*
+.*:24: Warning: .*
+.*GAS.*
+
+
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test0[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test1,[ 	]*"",[ 	]*@progbits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test2[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test3,[ 	]*"aw"[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test4,[ 	]*"aw",[ 	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test1,[ 	]*"aw",[ 	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test2,[ 	]*"w"[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test3,[ 	]*"aw",[ 	]*@progbits[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.test4,[ 	]*"aw"[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.data,[ 	]*"a"[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.bss,[ 	]*"a"[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.data,[ 	]*"aw",[ 	]*@nobits[ 	]*
+[ 	]+[[:digit:]]+[ 	]*
+[ 	]+[[:digit:]]+[ 	]+.section[ 	]+.bss,[ 	]*"aw",[ 	]*@progbits[ 	]*
--- /home/jbeulich/src/binutils/mainline/2004-12-03.13.35/gas/testsuite/gas/elf/section5.s	1970-01-01 01:00:00.000000000 +0100
+++ 2004-12-03.13.35/gas/testsuite/gas/elf/section5.s	2004-08-27 18:06:16.000000000 +0200
@@ -0,0 +1,24 @@
+.section	.test0
+.section	.test1, "", @progbits
+.section	.test2
+.section	.test3, "aw"
+.section	.test4, "aw", @nobits
+
+.section	.test1, "aw", @nobits
+test1:	.long	test1
+
+.section	.test2, "w"
+test2:	.long	test2
+
+.section	.test3, "aw", @progbits
+test3:	.long	test3
+
+.section	.test4, "aw"
+
+.section	.data, "a"
+
+.section	.bss, "a"
+
+.section	.data, "aw", @nobits
+
+.section	.bss, "aw", @progbits

             reply	other threads:[~2004-12-15 10:15 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-15 10:15 Jan Beulich [this message]
2004-12-16 12:12 ` Nick Clifton
  -- strict thread matches above, loose matches on Subject: below --
2004-09-10  6:44 Jan Beulich
2004-09-10  9:49 ` [PATCH] gas should honor original section type (was " Dave Korn
2004-09-10 13:57   ` Alan Modra
2004-09-27 16:33     ` Nick Clifton
2004-08-30  6:40 [PATCH] gas should honor original section type (was Re: ELF " Jan Beulich
2004-09-09 11:10 ` Nick Clifton

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=s1c00eca.045@emea1-mh.id2.novell.com \
    --to=jbeulich@novell.com \
    --cc=binutils@sources.redhat.com \
    --cc=ian@wasabisystems.com \
    --cc=nickc@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).