e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
93 lines
2.6 KiB
Text
93 lines
2.6 KiB
Text
# Copyright 2007 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Please email any bugs, comments, and/or additions to this file to:
|
|
# bug-gdb@gnu.org
|
|
|
|
# This file is part of the gdb testsuite.
|
|
|
|
# Unwinding of DW_CFA_GNU_negative_offset_extended test program.
|
|
|
|
if $tracelevel {
|
|
strace $tracelevel
|
|
}
|
|
|
|
# Test i386 unwinder.
|
|
|
|
set prms_id 0
|
|
set bug_id 0
|
|
|
|
if ![istarget "i?86-*-*"] then {
|
|
verbose "Skipping i386 unwinder tests."
|
|
return
|
|
}
|
|
|
|
set testfile "i386-gnu-cfi"
|
|
set srcfilec ${testfile}.c
|
|
set srcfileasm ${testfile}-asm.S
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
|
|
# some targets have leading underscores on assembly symbols.
|
|
# TODO: detect this automatically
|
|
set additional_flags ""
|
|
if [istarget "i?86-*-cygwin*"] then {
|
|
set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\""
|
|
}
|
|
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfilec} ${srcdir}/${subdir}/${srcfileasm}" "${binfile}" executable [list debug $additional_flags]] != "" } {
|
|
untested i386-gnu-cfi.exp
|
|
return -1
|
|
}
|
|
|
|
# Get things started.
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
gdb_load ${binfile}
|
|
|
|
# We should stop in abort(3).
|
|
|
|
gdb_run_cmd
|
|
|
|
gdb_test_multiple {} "continue to abort()" {
|
|
-re ".*Program received signal SIGABRT,.*$gdb_prompt $" {
|
|
pass "continue to abort()"
|
|
}
|
|
}
|
|
|
|
# Backtrace would crash before.
|
|
|
|
gdb_test "bt" \
|
|
"main \\(\\) at .*${testfile}.c.*" \
|
|
"backtrace"
|
|
|
|
# Check we see the inserted `DW_CFA_GNU_negative_offset_extended' CFI.
|
|
# We see there the original CFI-stored filename `gate.c'.
|
|
|
|
gdb_test "up 3" \
|
|
"gate \\(\[^()\]*\\) at .*gate.c.*" \
|
|
"shift up to the modified frame"
|
|
|
|
gdb_test_multiple "info frame" "Existence of the CFI inserted register" {
|
|
-re "Stack level 3, frame at (0x\[0-9a-f\]+):.*Saved registers:.* ecx at (0x\[0-9a-f\]+),.*" {
|
|
pass "Existence of the CFI inserted register"
|
|
if { [string compare $expect_out(1,string) $expect_out(2,string)] } then {
|
|
fail "Value of the CFI inserted register"
|
|
} else {
|
|
pass "Value of the CFI inserted register"
|
|
}
|
|
}
|
|
}
|