From: Markus Metzger <markus.t.metzger@intel.com>
To: jan.kratochvil@redhat.com, palves@redhat.com
Cc: gdb-patches@sourceware.org
Subject: [PATCH v10 08/28] record-btrace: start counting at one
Date: Tue, 14 Jan 2014 08:05:00 -0000 [thread overview]
Message-ID: <1389686678-9039-9-git-send-email-markus.t.metzger@intel.com> (raw)
In-Reply-To: <1389686678-9039-1-git-send-email-markus.t.metzger@intel.com>
The record instruction-history and record-function-call-history commands start
counting instructions at zero. This is somewhat unintuitive when we start
navigating in the recorded instruction history. Start at one, instead.
Reviewed-by: Eli Zaretskii
2014-01-14 Markus Metzger <markus.t.metzger@intel.com>
* btrace.c (ftrace_new_function): Start counting at one.
testsuite/
* gdb.btrace/instruction_history.exp: Update.
* gdb.btrace/function_call_history.exp: Update.
---
gdb/NEWS | 4 +
gdb/btrace.c | 8 +-
gdb/record-btrace.c | 4 +-
gdb/testsuite/gdb.btrace/function_call_history.exp | 156 ++++++++++-----------
gdb/testsuite/gdb.btrace/instruction_history.exp | 67 ++++-----
5 files changed, 125 insertions(+), 114 deletions(-)
diff --git a/gdb/NEWS b/gdb/NEWS
index 00defe1..02d541b 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -39,6 +39,10 @@
* New script contrib/gdb-add-index.sh for adding .gdb_index sections
to binaries.
+* The 'record instruction-history' command now starts counting instructions
+ at one. This also affects the instruction ranges reported by the
+ 'record function-call-history' command when given the /i modifier.
+
* Python scripting
** Frame filters and frame decorators have been added.
diff --git a/gdb/btrace.c b/gdb/btrace.c
index 5bda127..2e9e008 100644
--- a/gdb/btrace.c
+++ b/gdb/btrace.c
@@ -208,7 +208,13 @@ ftrace_new_function (struct btrace_function *prev,
bfun->lbegin = INT_MAX;
bfun->lend = INT_MIN;
- if (prev != NULL)
+ if (prev == NULL)
+ {
+ /* Start counting at one. */
+ bfun->number = 1;
+ bfun->insn_offset = 1;
+ }
+ else
{
gdb_assert (prev->flow.next == NULL);
prev->flow.next = bfun;
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 875b138..116cf1d 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -227,11 +227,11 @@ record_btrace_info (void)
btrace_call_end (&call, btinfo);
btrace_call_prev (&call, 1);
- calls = btrace_call_number (&call) + 1;
+ calls = btrace_call_number (&call);
btrace_insn_end (&insn, btinfo);
btrace_insn_prev (&insn, 1);
- insns = btrace_insn_number (&insn) + 1;
+ insns = btrace_insn_number (&insn);
}
printf_unfiltered (_("Recorded %u instructions in %u functions for thread "
diff --git a/gdb/testsuite/gdb.btrace/function_call_history.exp b/gdb/testsuite/gdb.btrace/function_call_history.exp
index bf2458b..cd94dec 100644
--- a/gdb/testsuite/gdb.btrace/function_call_history.exp
+++ b/gdb/testsuite/gdb.btrace/function_call_history.exp
@@ -38,28 +38,28 @@ gdb_breakpoint $bp_location
gdb_continue_to_breakpoint "cont to $bp_location" ".*$testfile.c:$bp_location.*"
proc rec_fun_all {} {
- gdb_test "record function-call-history 0" [join [list \
- "0\tmain" \
- "1\tinc" \
- "2\tmain" \
- "3\tinc" \
- "4\tmain" \
- "5\tinc" \
- "6\tmain" \
- "7\tinc" \
- "8\tmain" \
- "9\tinc" \
- "10\tmain" \
- "11\tinc" \
- "12\tmain" \
- "13\tinc" \
- "14\tmain" \
- "15\tinc" \
- "16\tmain" \
- "17\tinc" \
- "18\tmain" \
- "19\tinc" \
- "20\tmain"] "\r\n"]
+ gdb_test "record function-call-history 1" [join [list \
+ "1\tmain" \
+ "2\tinc" \
+ "3\tmain" \
+ "4\tinc" \
+ "5\tmain" \
+ "6\tinc" \
+ "7\tmain" \
+ "8\tinc" \
+ "9\tmain" \
+ "10\tinc" \
+ "11\tmain" \
+ "12\tinc" \
+ "13\tmain" \
+ "14\tinc" \
+ "15\tmain" \
+ "16\tinc" \
+ "17\tmain" \
+ "18\tinc" \
+ "19\tmain" \
+ "20\tinc" \
+ "21\tmain"] "\r\n"]
}
# show function call history with unlimited size, we expect to see all 21 entries
@@ -72,31 +72,31 @@ with_test_prefix "size 21" rec_fun_all
# show first 15 entries
gdb_test_no_output "set record function-call-history-size 15"
-gdb_test "record function-call-history 0" [join [list \
- "0\tmain" \
- "1\tinc" \
- "2\tmain" \
- "3\tinc" \
- "4\tmain" \
- "5\tinc" \
- "6\tmain" \
- "7\tinc" \
- "8\tmain" \
- "9\tinc" \
- "10\tmain" \
- "11\tinc" \
- "12\tmain" \
- "13\tinc" \
- "14\tmain"] "\r\n"] "forward - 1"
+gdb_test "record function-call-history 1" [join [list \
+ "1\tmain" \
+ "2\tinc" \
+ "3\tmain" \
+ "4\tinc" \
+ "5\tmain" \
+ "6\tinc" \
+ "7\tmain" \
+ "8\tinc" \
+ "9\tmain" \
+ "10\tinc" \
+ "11\tmain" \
+ "12\tinc" \
+ "13\tmain" \
+ "14\tinc" \
+ "15\tmain"] "\r\n"] "forward - 1"
# show last 6 entries
gdb_test "record function-call-history +" [join [list \
- "15\tinc" \
- "16\tmain" \
- "17\tinc" \
- "18\tmain" \
- "19\tinc" \
- "20\tmain"] "\r\n"] "forward - 2"
+ "16\tinc" \
+ "17\tmain" \
+ "18\tinc" \
+ "19\tmain" \
+ "20\tinc" \
+ "21\tmain"] "\r\n"] "forward - 2"
# moving further should not work
gdb_test "record function-call-history +" "At the end of the branch trace record\\." "forward - 3"
@@ -106,30 +106,30 @@ gdb_test "record function-call-history +" "At the end of the branch trace record
# moving back showing the latest 15 function calls
gdb_test "record function-call-history -" [join [list \
- "6\tmain" \
- "7\tinc" \
- "8\tmain" \
- "9\tinc" \
- "10\tmain" \
- "11\tinc" \
- "12\tmain" \
- "13\tinc" \
- "14\tmain" \
- "15\tinc" \
- "16\tmain" \
- "17\tinc" \
- "18\tmain" \
- "19\tinc" \
- "20\tmain"] "\r\n"] "backward - 1"
+ "7\tmain" \
+ "8\tinc" \
+ "9\tmain" \
+ "10\tinc" \
+ "11\tmain" \
+ "12\tinc" \
+ "13\tmain" \
+ "14\tinc" \
+ "15\tmain" \
+ "16\tinc" \
+ "17\tmain" \
+ "18\tinc" \
+ "19\tmain" \
+ "20\tinc" \
+ "21\tmain"] "\r\n"] "backward - 1"
# moving further back shows the 6 first function calls
gdb_test "record function-call-history -" [join [list \
- "0\tmain" \
- "1\tinc" \
- "2\tmain" \
- "3\tinc" \
- "4\tmain" \
- "5\tinc"] "\r\n"] "backward - 2"
+ "1\tmain" \
+ "2\tinc" \
+ "3\tmain" \
+ "4\tinc" \
+ "5\tmain" \
+ "6\tinc"] "\r\n"] "backward - 2"
# moving further back shouldn't work
gdb_test "record function-call-history -" "At the start of the branch trace record\\." "backward - 3"
@@ -169,18 +169,18 @@ gdb_test "record function-call-history /l +" "At the end of the branch trace rec
gdb_test "record function-call-history /l" "At the end of the branch trace record\\." "forward /l - 4"
set expected_range [join [list \
- "3\tinc" \
- "4\tmain" \
- "5\tinc" \
- "6\tmain" \
- "7\tinc" \
- "8\tmain" \
- "9\tinc"] "\r\n"]
+ "4\tinc" \
+ "5\tmain" \
+ "6\tinc" \
+ "7\tmain" \
+ "8\tinc" \
+ "9\tmain" \
+ "10\tinc"] "\r\n"]
# show functions in instruction range
-gdb_test "record function-call-history 3,10" $expected_range
-gdb_test "record function-call-history 3,+7" $expected_range
-gdb_test "record function-call-history 10,-7" $expected_range
+gdb_test "record function-call-history 4,11" $expected_range
+gdb_test "record function-call-history 4,+7" $expected_range
+gdb_test "record function-call-history 11,-7" $expected_range
# set bp after fib recursion and continue
set bp_location [gdb_get_line_number "bp.2" $testfile.c]
@@ -191,8 +191,7 @@ gdb_continue_to_breakpoint "cont to $bp_location" ".*$testfile.c:$bp_location.*"
# so we limit the output to only show the latest 11 function calls
gdb_test_no_output "set record function-call-history-size 11"
gdb_test "record function-call-history" [join [list \
- "20\tmain" \
- "21\tfib" \
+ "21\tmain" \
"22\tfib" \
"23\tfib" \
"24\tfib" \
@@ -201,4 +200,5 @@ gdb_test "record function-call-history" [join [list \
"27\tfib" \
"28\tfib" \
"29\tfib" \
- "30\tmain"] "\r\n"] "recursive"
+ "30\tfib" \
+ "31\tmain"] "\r\n"] "recursive"
diff --git a/gdb/testsuite/gdb.btrace/instruction_history.exp b/gdb/testsuite/gdb.btrace/instruction_history.exp
index c6f6500..46ef65e 100644
--- a/gdb/testsuite/gdb.btrace/instruction_history.exp
+++ b/gdb/testsuite/gdb.btrace/instruction_history.exp
@@ -65,36 +65,37 @@ if { $traced != 6 } {
}
# test that we see the expected instructions
-gdb_test "record instruction-history 1,6" [join [list \
- "1\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "2\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tdec %eax" \
- "3\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "4\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
- "5\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>"] "\r\n"]
-
-gdb_test "record instruction-history /f 1,+5" [join [list \
- "1\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "2\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tdec %eax" \
- "3\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "4\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
- "5\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
-] "\r\n"]
-
-gdb_test "record instruction-history /p 6,-5" [join [list \
- "1\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "2\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tdec %eax" \
- "3\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "4\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
- "5\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
-] "\r\n"]
-
-gdb_test "record instruction-history /pf 1,6" [join [list \
- "1\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "2\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tdec %eax" \
- "3\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
- "4\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
- "5\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
-] "\r\n"]
+gdb_test "record instruction-history 2,7" [join [list \
+ "2\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "3\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tdec %eax" \
+ "4\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "5\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
+ "6\t 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
+ ] "\r\n"]
+
+gdb_test "record instruction-history /f 2,+5" [join [list \
+ "2\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "3\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tdec %eax" \
+ "4\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "5\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
+ "6\t 0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
+ ] "\r\n"]
+
+gdb_test "record instruction-history /p 7,-5" [join [list \
+ "2\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "3\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tdec %eax" \
+ "4\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "5\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
+ "6\t0x\[0-9a-f\]+ <loop\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
+ ] "\r\n"]
+
+gdb_test "record instruction-history /pf 2,7" [join [list \
+ "2\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "3\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tdec %eax" \
+ "4\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tjmp 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>" \
+ "5\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tcmp \\\$0x0,%eax" \
+ "6\t0x\[0-9a-f\]+ <\\+\[0-9\]+>:\tje 0x\[0-9a-f\]+ <loop\\+\[0-9\]+>\r" \
+ ] "\r\n"]
# the following tests are checking the iterators
# to avoid lots of regexps, we just check the number of lines that
@@ -120,7 +121,7 @@ proc test_lines_length { command message } {
# all $traced instructions
gdb_test_no_output "set record instruction-history-size 0"
set message "record instruction-history - unlimited"
-set lines [test_lines_length "record instruction-history 0" $message]
+set lines [test_lines_length "record instruction-history 1" $message]
if { $traced != $lines } {
fail $message
} else {
@@ -129,7 +130,7 @@ if { $traced != $lines } {
gdb_test_no_output "set record instruction-history-size $traced"
set message "record instruction-history - traced"
-set lines [test_lines_length "record instruction-history 0" $message]
+set lines [test_lines_length "record instruction-history 1" $message]
if { $traced != $lines } {
fail $message
} else {
@@ -140,7 +141,7 @@ if { $traced != $lines } {
set history_size 3
gdb_test_no_output "set record instruction-history-size $history_size"
set message "browse history forward start"
-set lines [test_lines_length "record instruction-history 0" $message]
+set lines [test_lines_length "record instruction-history 1" $message]
if { $lines != $history_size } {
fail $message
} else {
--
1.8.3.1
next prev parent reply other threads:[~2014-01-14 8:04 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-14 8:05 [PATCH v10 00/28] record-btrace: reverse Markus Metzger
2014-01-14 8:04 ` [PATCH v10 03/28] btrace: uppercase btrace_read_type Markus Metzger
2014-01-14 8:04 ` [PATCH v10 14/28] record-btrace: supply register target methods Markus Metzger
2014-01-14 8:04 ` [PATCH v10 18/28] record-btrace, frame: supply target-specific unwinder Markus Metzger
2014-01-14 8:04 ` [PATCH v10 01/28] btrace, test: fix multi-line btrace tests Markus Metzger
2014-01-14 8:04 ` [PATCH v10 05/28] frame: add frame_id_build_unavailable_stack_special Markus Metzger
2014-01-14 8:04 ` [PATCH v10 20/28] record-btrace: provide xfer_partial target method Markus Metzger
2014-01-15 15:51 ` Pedro Alves
2014-01-14 8:04 ` [PATCH v10 26/28] record-btrace: show trace from enable location Markus Metzger
2014-01-14 8:04 ` [PATCH v10 10/28] record-btrace: optionally indent function call history Markus Metzger
2014-01-14 16:07 ` Eli Zaretskii
2014-01-14 8:05 ` [PATCH v10 12/28] btrace: add replay position to btrace thread info Markus Metzger
2014-01-14 8:05 ` [PATCH v10 09/28] btrace: increase buffer size Markus Metzger
2014-01-14 8:05 ` [PATCH v10 22/28] record-btrace: provide target_find_new_threads method Markus Metzger
2014-01-14 8:05 ` [PATCH v10 11/28] record-btrace: make ranges include begin and end Markus Metzger
2014-01-14 8:05 ` [PATCH v10 07/28] record-btrace: fix insn range in function call history Markus Metzger
2014-01-14 8:05 ` [PATCH v10 02/28] btrace, linux: fix memory leak when reading branch trace Markus Metzger
2014-01-14 8:05 ` [PATCH v10 04/28] gdbarch: add instruction predicate methods Markus Metzger
2014-01-14 8:05 ` [PATCH v10 06/28] btrace: change branch trace data structure Markus Metzger
2015-01-08 20:49 ` x86_64-m32 internal error for multi-thread-step.exp [Re: [PATCH v10 06/28] btrace: change branch trace data structure] Jan Kratochvil
2015-01-20 15:19 ` Metzger, Markus T
2015-01-22 12:30 ` Metzger, Markus T
2015-01-22 13:36 ` Pedro Alves
2015-01-22 17:37 ` Linux: make target_is_async_p return false when async is off Pedro Alves
2015-01-23 10:39 ` Metzger, Markus T
2015-01-23 12:34 ` Pedro Alves
2015-01-22 16:37 ` x86_64-m32 internal error for multi-thread-step.exp [Re: [PATCH v10 06/28] btrace: change branch trace data structure] Jan Kratochvil
2015-01-23 7:56 ` Metzger, Markus T
2015-01-23 16:01 ` Metzger, Markus T
2015-01-23 16:33 ` Metzger, Markus T
2015-01-27 18:05 ` Pedro Alves
2015-01-29 16:28 ` Metzger, Markus T
2015-01-25 19:56 ` record btrace experience [Re: x86_64-m32 internal error for multi-thread-step.exp [Re: [PATCH v10 06/28] btrace: change branch trace data structure]] Jan Kratochvil
2015-01-26 12:41 ` Metzger, Markus T
2015-01-27 8:07 ` Jan Kratochvil
2015-01-27 15:52 ` Pedro Alves
2015-01-29 19:28 ` Metzger, Markus T
2015-01-23 12:55 ` x86_64-m32 internal error for multi-thread-step.exp [Re: [PATCH v10 06/28] btrace: change branch trace data structure] Patrick Palka
2014-01-14 8:05 ` [PATCH v10 16/28] frame, cfa: check unwind stop reason first Markus Metzger
2014-01-14 8:05 ` [PATCH v10 19/28] target, breakpoint: allow insert/remove breakpoint to be forwarded Markus Metzger
2014-01-15 15:52 ` Pedro Alves
2014-01-14 8:05 ` [PATCH v10 15/28] frame, backtrace: allow targets to supply a frame unwinder Markus Metzger
2014-01-14 8:05 ` [PATCH v10 25/28] btrace, gdbserver: read branch trace incrementally Markus Metzger
2014-01-16 17:57 ` Tom Tromey
2014-01-17 8:28 ` Metzger, Markus T
2014-01-20 5:44 ` Tom Tromey
2014-01-14 8:05 ` [PATCH v10 23/28] record-btrace: add record goto target methods Markus Metzger
2014-01-14 8:05 ` [PATCH v10 13/28] Add target_ops argument to to_prepare_to_store Markus Metzger
2014-01-14 8:05 ` [PATCH v10 24/28] record-btrace: extend unwinder Markus Metzger
2014-01-14 8:05 ` [PATCH v10 17/28] frame: do not assume unwinding will succeed Markus Metzger
2014-01-14 8:05 ` Markus Metzger [this message]
2014-01-14 8:05 ` [PATCH v10 27/28] target: allow decr_pc_after_break to be defined by the target Markus Metzger
2014-01-14 8:05 ` [PATCH v10 28/28] record-btrace: add (reverse-)stepping support Markus Metzger
2014-01-14 8:05 ` [PATCH v10 21/28] record-btrace: add to_wait and to_resume target methods Markus Metzger
2014-01-15 15:54 ` [PATCH v10 00/28] record-btrace: reverse Pedro Alves
2014-01-16 12:01 ` Metzger, Markus T
2014-01-16 12:37 ` Pedro Alves
2014-01-16 14:35 ` Tom Tromey
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=1389686678-9039-9-git-send-email-markus.t.metzger@intel.com \
--to=markus.t.metzger@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=palves@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