diff options
author | Pedro Alves <palves@redhat.com> | 2016-08-19 12:07:46 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-08-19 12:13:47 +0100 |
commit | 0646e07d6e88045d650ee1ec5b674da1cdeaa6b6 (patch) | |
tree | c98b69025c01de1c68407455ca3eb9c3486b86e0 | |
parent | f077e978deccac00fea013c4f120122bf6726834 (diff) | |
download | gdb-0646e07d6e88045d650ee1ec5b674da1cdeaa6b6.zip gdb-0646e07d6e88045d650ee1ec5b674da1cdeaa6b6.tar.gz gdb-0646e07d6e88045d650ee1ec5b674da1cdeaa6b6.tar.bz2 |
x32: Fix gdb.trace/mi-trace-frame-collected.exp
gdb.trace/mi-trace-frame-collected.exp has a couple failures on x32:
FAIL: gdb.trace/mi-trace-frame-collected.exp: live: -trace-frame-collected (register)
FAIL: gdb.trace/mi-trace-frame-collected.exp: tfile: -trace-frame-collected (register)
gdb.log:
-trace-frame-collected
^done,explicit-variables=[{name="gdb_char_test",value="0 '\\000'"}],computed-expressions=[],registers=[{number="16",value="0x4004dc"},{number="204",value="0x4004dc"}],tvars
=[],memory=[{address="0x00601060",length="1"}]
(gdb)
FAIL: gdb.trace/mi-trace-frame-collected.exp: live: -trace-frame-collected (register)
[...]
-trace-frame-collected
^done,explicit-variables=[{name="gdb_char_test",value="0 '\\000'"}],computed-expressions=[],registers=[{number="16",value="0x4004dc"},{number="204",value="0x4004dc"}],tvars
=[],memory=[{address="0x00601060",length="1"}]
(gdb)
FAIL: gdb.trace/mi-trace-frame-collected.exp: tfile: -trace-frame-collected (register)
This test only collects the PC, and thus expects to only see one
register in the output of -trace-frame-collected. However, while on
the 64-bit ABI gdb only exposes 64-bit $pc/$rip (register 16 above),
on x32, GDB exposes 32-bit $eip as well, as a pseudo-register
(register 204 above). Thus, collecting $pc/$rip automatically always
collects $eip as well.
gdb/testsuite/ChangeLog:
2016-08-19 Pedro Alves <palves@redhat.com>
* gdb.trace/mi-trace-frame-collected.exp
(test_trace_frame_collected): On x32, expect two registers.
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp | 14 |
2 files changed, 17 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index fda02f0..ff892a5 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-08-19 Pedro Alves <palves@redhat.com> + + * gdb.trace/mi-trace-frame-collected.exp + (test_trace_frame_collected): On x32, expect two registers. + 2016-08-18 Carl Love <cel@us.ibm.com> * gdb.arch/powerpc-power.s: Add new Power9 instruction tests diff --git a/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp b/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp index a69c329..567954a 100644 --- a/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp +++ b/gdb/testsuite/gdb.trace/mi-trace-frame-collected.exp @@ -95,15 +95,25 @@ proc test_trace_frame_collected { data_source } { # Test MI command '-trace-frame-collected' dumps only # collected registers. + + # While the tracepoint has no explicit action that causes + # collection of registers other than the PC, some + # architectures manage to collect or guess more than that. if { [istarget "s390*-*-*"] } { - # Only PC is collected, but on s390 PC is a pseudo-register - - # collecting it also collects the underlying PSWA register. + # On s390 PC is a pseudo-register - collecting it also + # collects the underlying PSWA register. if { "$data_source" != "tfile" } { set reg_pattern "$reg_pattern,$reg_pattern" } else { # For tfile, PSWM and CC are also guessed. set reg_pattern "$reg_pattern,$reg_pattern,$reg_pattern,$reg_pattern" } + } elseif {[is_amd64_regs_target] && [is_ilp32_target]} { + # x32. While on the 64-bit ABI gdb only exposes 64-bit + # $pc/$rip, on x32, GDB exposes 32-bit $eip as well, as a + # pseudo-register. Thus, collecting $pc/$rip + # automatically always collects $eip as well. + set reg_pattern "$reg_pattern,$reg_pattern" } mi_gdb_test "-trace-frame-collected" \ |