gdb/testsuite/
Fix compatibility with x32 arch. * testsuite/gdb.dwarf2/typeddwarf.exp: Check also is_lp64_target. * testsuite/gdb.trace/backtrace.exp: Use is_amd64_regs_target and is_x86_like_target. * testsuite/gdb.trace/collection.exp: Likewise. * testsuite/gdb.trace/report.exp: Likewise. * testsuite/gdb.trace/unavailable.exp: Likewise. * testsuite/gdb.trace/while-dyn.exp: Likewise. * testsuite/lib/gdb.exp (is_amd64_regs_target): New function. (is_x86_like_target): Check also is_amd64_regs_target.
This commit is contained in:
parent
bc587a6bd2
commit
7f06221767
|
@ -1,3 +1,16 @@
|
|||
2011-09-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix compatibility with x32 arch.
|
||||
* testsuite/gdb.dwarf2/typeddwarf.exp: Check also is_lp64_target.
|
||||
* testsuite/gdb.trace/backtrace.exp: Use is_amd64_regs_target and
|
||||
is_x86_like_target.
|
||||
* testsuite/gdb.trace/collection.exp: Likewise.
|
||||
* testsuite/gdb.trace/report.exp: Likewise.
|
||||
* testsuite/gdb.trace/unavailable.exp: Likewise.
|
||||
* testsuite/gdb.trace/while-dyn.exp: Likewise.
|
||||
* testsuite/lib/gdb.exp (is_amd64_regs_target): New function.
|
||||
(is_x86_like_target): Check also is_amd64_regs_target.
|
||||
|
||||
2011-09-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
PR breakpoints/12435
|
||||
|
|
|
@ -22,10 +22,10 @@ if ![dwarf2_support] {
|
|||
return 0
|
||||
}
|
||||
|
||||
# This test can only be run on x86 and amd64 targets.
|
||||
# This test can only be run on x86 and amd64 targets (and not x32).
|
||||
if { [is_x86_like_target] } {
|
||||
set sfile ${test}.S
|
||||
} elseif {[istarget "x86_64-*-*"]} {
|
||||
} elseif {[istarget "x86_64-*-*"] && [is_lp64_target]} {
|
||||
set sfile ${test}-amd64.S
|
||||
} else {
|
||||
return 0
|
||||
|
|
|
@ -150,10 +150,10 @@ gdb_trace_setactions "8.6: setup TP to collect regs, args, and locals" \
|
|||
"$tdp4" \
|
||||
"collect \$regs, \$args, \$locs" "^$"
|
||||
|
||||
if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then {
|
||||
if [is_amd64_regs_target] {
|
||||
set fpreg "\$rbp"
|
||||
set spreg "\$rsp"
|
||||
} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
set fpreg "\$ebp"
|
||||
set spreg "\$esp"
|
||||
} else {
|
||||
|
|
|
@ -45,11 +45,11 @@ if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
|
|||
set ws "\[\r\n\t \]+"
|
||||
set cr "\[\r\n\]+"
|
||||
|
||||
if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then {
|
||||
if [is_amd64_regs_target] {
|
||||
set fpreg "rbp"
|
||||
set spreg "rsp"
|
||||
set pcreg "rip"
|
||||
} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
set fpreg "ebp"
|
||||
set spreg "esp"
|
||||
set pcreg "eip"
|
||||
|
|
|
@ -159,11 +159,11 @@ gdb_trace_setactions "9.x: setup TP to collect locals" \
|
|||
"$tdp4" \
|
||||
"collect \$locs" "^$"
|
||||
|
||||
if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then {
|
||||
if [is_amd64_regs_target] {
|
||||
set fpreg "rbp"
|
||||
set spreg "rsp"
|
||||
set pcreg "rip"
|
||||
} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
set fpreg "ebp"
|
||||
set spreg "esp"
|
||||
set pcreg "eip"
|
||||
|
|
|
@ -30,11 +30,11 @@ if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
|
|||
set ws "\[\r\n\t \]+"
|
||||
set cr "\[\r\n\]+"
|
||||
|
||||
if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then {
|
||||
if [is_amd64_regs_target] {
|
||||
set fpreg "rbp"
|
||||
set spreg "rsp"
|
||||
set pcreg "rip"
|
||||
} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
set fpreg "ebp"
|
||||
set spreg "esp"
|
||||
set pcreg "eip"
|
||||
|
@ -295,12 +295,12 @@ proc gdb_unavailable_registers_test { } {
|
|||
|
||||
# Test reading uncollected pseudo-registers. The set of which
|
||||
# depends on target.
|
||||
if {$pcreg == "rip"} then {
|
||||
if [is_amd64_regs_target] {
|
||||
# Check the raw register first.
|
||||
test_register_unavailable "\$rax"
|
||||
test_register_unavailable "\$eax"
|
||||
test_register_unavailable "\$ax"
|
||||
} elseif {$pcreg == "eip"} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
# Check the raw register first.
|
||||
test_register_unavailable "\$eax"
|
||||
test_register_unavailable "\$ax"
|
||||
|
|
|
@ -52,9 +52,9 @@ if { ![gdb_target_supports_trace] } then {
|
|||
# test while-stepping dynamically (live target)
|
||||
#
|
||||
|
||||
if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then {
|
||||
if [is_amd64_regs_target] {
|
||||
set fpreg "\$rbp"
|
||||
} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then {
|
||||
} elseif [is_x86_like_target] {
|
||||
set fpreg "\$ebp"
|
||||
} else {
|
||||
set fpreg "\$fp"
|
||||
|
|
|
@ -1604,6 +1604,49 @@ proc is_lp64_target {} {
|
|||
return [set is_lp64_target_saved($board) 1]
|
||||
}
|
||||
|
||||
# Return 1 if target has x86_64 registers - either amd64 or x32.
|
||||
# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined
|
||||
# just from the target string.
|
||||
proc is_amd64_regs_target {} {
|
||||
global is_amd64_regs_target_saved
|
||||
|
||||
if {![istarget "x86_64-*-*"]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Use the cached value, if it exists. Cache value per "board" to handle
|
||||
# runs with multiple options (e.g. unix/{-m32,-64}) correctly.
|
||||
set me "is_amd64_regs_target"
|
||||
set board [target_info name]
|
||||
if [info exists is_amd64_regs_target_saved($board)] {
|
||||
verbose "$me: returning saved $is_amd64_regs_target_saved($board)" 2
|
||||
return $is_amd64_regs_target_saved($board)
|
||||
}
|
||||
|
||||
set src reg64[pid].s
|
||||
set obj reg64[pid].o
|
||||
|
||||
set f [open $src "w"]
|
||||
foreach reg \
|
||||
{rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15} {
|
||||
puts $f "\tincq %$reg"
|
||||
}
|
||||
close $f
|
||||
|
||||
verbose "$me: compiling testfile $src" 2
|
||||
set lines [gdb_compile $src $obj object {quiet}]
|
||||
file delete $src
|
||||
file delete $obj
|
||||
|
||||
if ![string match "" $lines] then {
|
||||
verbose "$me: testfile compilation failed, returning 0" 2
|
||||
return [set is_amd64_regs_target_saved($board) 0]
|
||||
}
|
||||
|
||||
verbose "$me: returning 1" 2
|
||||
return [set is_amd64_regs_target_saved($board) 1]
|
||||
}
|
||||
|
||||
# Return 1 if this target is an x86 or x86-64 with -m32.
|
||||
proc is_x86_like_target {} {
|
||||
if {[istarget i?86-*]} {
|
||||
|
@ -1612,7 +1655,7 @@ proc is_x86_like_target {} {
|
|||
if {![istarget "x86_64-*-*"]} {
|
||||
return 0
|
||||
}
|
||||
return [is_ilp32_target]
|
||||
return [expr [is_ilp32_target] && ![is_amd64_regs_target]]
|
||||
}
|
||||
|
||||
# Return 1 if displaced stepping is supported on target, otherwise, return 0.
|
||||
|
|
Loading…
Reference in New Issue