This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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" "" ""
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]