This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
gdb.trace/ adjustments for x86, and a couple of other changes
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 12 Mar 2010 04:10:40 +0000
- Subject: gdb.trace/ adjustments for x86, and a couple of other changes
A current limitation in the agent expression generator
is that it doesn't know what to do with pseudo-registers.
So, to run tracepoint tests against x86, we can't use
$pc or $sp.
The other changes in the patch adjust the tests to
to current reality. There was also one "tfind end" missing,
which was a real test bug.
Applied to mainline. None of this is exercised yet, but,
with this, all of gdb.trace/ passes against a heavily
modified gdbserver that supports tracepoints.
--
Pedro Alves
2010-03-12 Pedro Alves <pedro@codesourcery.com>
gdb/testsuite/
* gdb.trace/backtrace.exp: Adjust for x86 and x86_64.
* gdb.trace/report.exp: Adjust for x86 and x86_64.
Issue a tfind end before looking for a tracepoint frame.
* gdb.trace/tfind.exp: Adjust tstatus output.
Adjust disassembly output.
* gdb.trace/while-dyn.exp: Adjust for x86 and x86_64.
---
gdb/testsuite/gdb.trace/backtrace.exp | 15 +++++++++++++--
gdb/testsuite/gdb.trace/report.exp | 30 ++++++++++++++++++++++++------
gdb/testsuite/gdb.trace/tfind.exp | 5 +++--
gdb/testsuite/gdb.trace/while-dyn.exp | 10 +++++++++-
4 files changed, 49 insertions(+), 11 deletions(-)
Index: src/gdb/testsuite/gdb.trace/while-dyn.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.trace/while-dyn.exp 2010-01-05 11:46:56.000000000 +0000
+++ src/gdb/testsuite/gdb.trace/while-dyn.exp 2010-03-12 00:13:04.000000000 +0000
@@ -63,9 +63,17 @@ gdb_test "trace gdb_c_test" \
"Tracepoint $decimal at .*" \
"Set tracepoint at gdb_c_test"
+if [istarget "x86_64-*"] then {
+ set fpreg "\$rbp"
+} elseif [istarget "i?86-*"] then {
+ set fpreg "\$ebp"
+} else {
+ set fpreg "\$fp"
+}
+
gdb_trace_setactions "5.12: define while-stepping <stepcount>" \
"" \
- "collect \$fp" "^$" \
+ "collect $fpreg" "^$" \
"while-stepping 5" "^$" \
"collect p" "^$" \
"end" "^$" \
Index: src/gdb/testsuite/gdb.trace/tfind.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.trace/tfind.exp 2010-01-05 11:46:56.000000000 +0000
+++ src/gdb/testsuite/gdb.trace/tfind.exp 2010-03-12 00:13:04.000000000 +0000
@@ -147,7 +147,8 @@ gdb_expect {
gdb_test "help tstop" "Stop trace data collection." "7.2: help tstop"
# test tstatus (when trace off)
-gdb_test "tstatus" "\[Tt\]race.* not running.*" "test tstatus off"
+gdb_test "tstatus" "Trace stopped by a tstop command.*" \
+ "test tstatus off after tstop"
## record starting PC
set save_pc [gdb_readexpr "(unsigned long) \$pc"];
@@ -333,7 +334,7 @@ set timeout 60
send_gdb "disassemble gdb_c_test\n"
# look for disassembly of function label
gdb_expect {
- -re "<gdb_c_test>:.*$gdb_prompt $" { pass "8.36: trace disassembly" }
+ -re "<gdb_c_test(\.\[0-9\]+|)>:.*End of assembler dump.*$gdb_prompt $" { pass "8.36: trace disassembly" }
-re ".*$gdb_prompt $" { fail "8.36: trace disassembly" }
timeout { fail "8.36: trace disassembly (timeout)" }
}
Index: src/gdb/testsuite/gdb.trace/report.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.trace/report.exp 2010-01-05 11:46:56.000000000 +0000
+++ src/gdb/testsuite/gdb.trace/report.exp 2010-03-12 00:13:04.000000000 +0000
@@ -155,9 +155,23 @@ gdb_trace_setactions "9.x: setup TP to c
"$tdp4" \
"collect \$locs" "^$"
+if [istarget "x86_64-*"] then {
+ set fpreg "rbp"
+ set spreg "rsp"
+ set pcreg "rip"
+} elseif [istarget "i?86-*"] then {
+ set fpreg "ebp"
+ set spreg "esp"
+ set pcreg "eip"
+} else {
+ set fpreg "fp"
+ set spreg "sp"
+ set pcreg "pc"
+}
+
gdb_trace_setactions "9.x: setup TP to collect stack memory" \
"$tdp5" \
- "collect \$fp, \*\(void \*\*\) \$sp @ 64" "^$"
+ "collect \$$fpreg, \*\(void \*\*\) \$$spreg @ 64" "^$"
gdb_trace_setactions "9.x: setup TP to collect expressions" \
"$tdp6" \
@@ -193,10 +207,11 @@ gdb_tfind_test "9.1: find frame for TP $
# regs were collected at tdp2.
# How to match for the output of "info registers" on an unknown architecture?
-# For now, assume that every architecture has a register called "pc".
+# For now, assume that most architectures have a register called "pc".
+
gdb_test "tdump" \
- "\[\r\n\]pc .*" \
- "9.1: tdump, regs collected"
+ "\[\r\n\]$pcreg .*" \
+ "9.1: tdump, regs collected"
gdb_tfind_test "9.1: find frame for TP $tdp3" "tracepoint $tdp3" \
"\$tracepoint" "$tdp3"
@@ -219,8 +234,8 @@ gdb_tfind_test "9.1: find frame for TP $
# stack was collected at tdp5, plus the frame pointer
gdb_test "tdump" \
- ".fp = .*sp @ 64 = .*" \
- "9.1: tdump, memrange collected"
+ ".$fpreg = .*$spreg @ 64 = .*" \
+ "9.1: tdump, memrange collected"
gdb_tfind_test "9.1: find frame for TP $tdp6" "tracepoint $tdp6" \
"\$tracepoint" "$tdp6"
@@ -321,6 +336,7 @@ gdb_expect {
}
}
+gdb_tfind_test "12.2: tfind end, selects no frame" "end" "-1"
gdb_tfind_test "12.2: find first TDP #2 frame" "tracepoint $tdp2" \
"\$tracepoint" "$tdp2"
@@ -344,6 +360,7 @@ gdb_expect {
}
}
+gdb_tfind_test "12.3: tfind end, selects no frame" "end" "-1"
gdb_tfind_test "12.3: find first TDP #3 frame" "tracepoint $tdp3" \
"\$tracepoint" "$tdp3"
@@ -367,6 +384,7 @@ gdb_expect {
}
}
+gdb_tfind_test "12.4: tfind end, selects no frame" "end" "-1"
gdb_tfind_test "12.4: find first TDP #6 frame" "tracepoint $tdp6" \
"\$tracepoint" "$tdp6"
Index: src/gdb/testsuite/gdb.trace/backtrace.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.trace/backtrace.exp 2010-01-05 11:46:56.000000000 +0000
+++ src/gdb/testsuite/gdb.trace/backtrace.exp 2010-03-12 00:13:04.000000000 +0000
@@ -146,9 +146,20 @@ gdb_trace_setactions "8.6: setup TP to c
"$tdp4" \
"collect \$regs, \$args, \$locs" "^$"
+if [istarget "x86_64-*"] then {
+ set fpreg "\$rbp"
+ set spreg "\$rsp"
+} elseif [istarget "i?86-*"] then {
+ set fpreg "\$ebp"
+ set spreg "\$esp"
+} else {
+ set fpreg "\$fp"
+ set spreg "\$sp"
+}
+
gdb_trace_setactions "8.6: setup TP to collect stack mem cast expr" \
- "$tdp6" \
- "collect \$fp, \(\*\(void \*\*\) \(\$sp\)\) @ 64" "^$"
+ "$tdp6" \
+ "collect $fpreg, \(\*\(void \*\*\) \($spreg\)\) @ 64" "^$"
gdb_test "tstart" "" ""