OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.arch/] [i386-prologue.exp] - Blame information for rev 816

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
# Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010
2
# Free Software Foundation, Inc.
3
 
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 3 of the License, or
7
# (at your option) any later version.
8
#
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License
15
# along with this program.  If not, see .
16
 
17
# Please email any bugs, comments, and/or additions to this file to:
18
# bug-gdb@gnu.org
19
 
20
# This file is part of the gdb testsuite.
21
 
22
if $tracelevel {
23
    strace $tracelevel
24
}
25
 
26
# Test i386 prologue analyzer.
27
 
28
set prms_id 0
29
set bug_id 0
30
 
31
if ![istarget "i?86-*-*"] then {
32
    verbose "Skipping i386 prologue tests."
33
    return
34
}
35
 
36
set testfile "i386-prologue"
37
set srcfile ${testfile}.c
38
set binfile ${objdir}/${subdir}/${testfile}
39
 
40
# some targets have leading underscores on assembly symbols.
41
# TODO: detect this automatically
42
set additional_flags ""
43
if { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } then {
44
  set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\""
45
}
46
 
47
# Don't use "debug", so that we don't have line information for the assembly
48
# fragments.
49
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list $additional_flags]] != "" } {
50
    untested i386-prologue.exp
51
    return -1
52
}
53
 
54
 
55
# The code used by the tests here encodes some breakpoints by using
56
# inline assembler.  This will generate a SIGTRAP which will be caught
57
# by GDB.  At that point the instruction pointer will point at the
58
# next instruction, and execution can continue without any problems.
59
# Some systems however (QNX Neutrino, Solaris) will adjust the
60
# instruction pointer to point at the breakpoint instruction instead.
61
# On these systems we cannot continue unless we skip it.  This
62
# procedure takes care of that.
63
 
64
proc skip_breakpoint { msg } {
65
    gdb_test "if (*(unsigned char *)\$pc == 0xcc)\nset \$pc = \$pc + 1\nend" \
66
            "" "skip breakpoint in ${msg}"
67
}
68
 
69
 
70
gdb_exit
71
gdb_start
72
gdb_reinitialize_dir $srcdir/$subdir
73
gdb_load ${binfile}
74
 
75
#
76
# Run to `main' where we begin our tests.
77
#
78
 
79
if ![runto_main] then {
80
    gdb_suppress_tests
81
}
82
 
83
# Testcase for standard prologue.
84
 
85
gdb_test "continue" "Program received signal SIGTRAP.*" "continue to standard"
86
 
87
skip_breakpoint standard
88
 
89
gdb_test "backtrace 10" \
90
        "#0\[ \t\]*$hex in standard.*\r\n#1\[ \t\]*$hex in main.*" \
91
        "backtrace in standard"
92
 
93
gdb_test "info frame" \
94
        ".*Saved registers:.*ebp at.*edi at.*eip at.*" \
95
        "saved registers in standard"
96
 
97
 
98
# Testcase from breakpoints/2080 (when %ecx is used)
99
 
100
gdb_test "break *(stack_align_ecx + 7)" \
101
        "Breakpoint \[0-9\]* at $hex"
102
 
103
gdb_test "continue" \
104
        "Breakpoint \[0-9\]*.*stack_align_ecx.*" \
105
        "continue to stack_align_ecx + 7"
106
 
107
gdb_test "backtrace 10" \
108
        "#0\[ \t\]*$hex in stack_align_ecx.*\r\n#1\[ \t\]*$hex in main.*" \
109
        "first backtrace in stack_align_ecx"
110
 
111
gdb_test "continue" \
112
        "Program received signal SIGTRAP.*" \
113
        "continue in stack_align_ecx"
114
 
115
skip_breakpoint stack_align_ecx
116
 
117
gdb_test "backtrace 10" \
118
        "#0\[ \t\]*$hex in stack_align_ecx.*\r\n#1\[ \t\]*$hex in main.*" \
119
        "second backtrace in stack_align_ecx"
120
 
121
gdb_test "info frame" \
122
        ".*Saved registers:.*ecx at.*ebp at.*edi at.*eip at.*" \
123
        "saved registers in stack_align_ecx"
124
 
125
 
126
# Testcase from breakpoints/2080 (when %edx is used)
127
 
128
gdb_test "break *(stack_align_edx + 7)" \
129
        "Breakpoint \[0-9\]* at $hex"
130
 
131
gdb_test "continue" \
132
        "Breakpoint \[0-9\]*.*stack_align_edx.*" \
133
        "continue to stack_align_edx + 7"
134
 
135
gdb_test "backtrace 10" \
136
        "#0\[ \t\]*$hex in stack_align_edx.*\r\n#1\[ \t\]*$hex in main.*" \
137
        "first backtrace in stack_align_edx"
138
 
139
gdb_test "continue" \
140
        "Program received signal SIGTRAP.*" \
141
        "continue in stack_align_edx"
142
 
143
skip_breakpoint stack_align_edx
144
 
145
gdb_test "backtrace 10" \
146
        "#0\[ \t\]*$hex in stack_align_edx.*\r\n#1\[ \t\]*$hex in main.*" \
147
        "second backtrace in stack_align_edx"
148
 
149
gdb_test "info frame" \
150
        ".*Saved registers:.*ecx at.*ebp at.*edi at.*eip at.*" \
151
        "saved registers in stack_align_edx"
152
 
153
 
154
# Testcase from breakpoints/2080 (when %eax is used)
155
 
156
gdb_test "break *(stack_align_eax + 7)" \
157
        "Breakpoint \[0-9\]* at $hex"
158
 
159
gdb_test "continue" \
160
        "Breakpoint \[0-9\]*.*stack_align_eax.*" \
161
        "continue to stack_align_eax + 7"
162
 
163
gdb_test "backtrace 10" \
164
        "#0\[ \t\]*$hex in stack_align_eax.*\r\n#1\[ \t\]*$hex in main.*" \
165
        "first backtrace in stack_align_eax"
166
 
167
gdb_test "continue" \
168
        "Program received signal SIGTRAP.*" \
169
        "continue in stack_align_eax"
170
 
171
skip_breakpoint stack_align_eax
172
 
173
gdb_test "backtrace 10" \
174
        "#0\[ \t\]*$hex in stack_align_eax.*\r\n#1\[ \t\]*$hex in main.*" \
175
        "second backtrace in stack_align_eax"
176
 
177
gdb_test "info frame" \
178
        ".*Saved registers:.*ecx at.*ebp at.*edi at.*eip at.*" \
179
        "saved registers in stack_align_eax"
180
 
181
 
182
# Testcase from symtab/1253.
183
 
184
gdb_test "continue" "Program received signal SIGTRAP.*" "continue to gdb1253"
185
 
186
skip_breakpoint gdb1253
187
 
188
gdb_test "backtrace 10" \
189
        "#0\[ \t\]*$hex in gdb1253.*\r\n#1\[ \t\]*$hex in main.*" \
190
        "backtrace in gdb1253"
191
 
192
gdb_test "info frame" \
193
        ".*Saved registers:.*ebp at.*edi at.*eip at.*" \
194
        "saved registers in gdb1253"
195
 
196
 
197
# Testcase from backtrace/1718.
198
 
199
gdb_test "continue" "Program received signal SIGTRAP.*" "continue to gdb1718"
200
 
201
skip_breakpoint gdb1718
202
 
203
gdb_test "backtrace 10" \
204
        "#0\[ \t\]*$hex in gdb1718.*\r\n#1\[ \t\]*$hex in main.*" \
205
        "backtrace in gdb1718"
206
 
207
setup_kfail *-*-* gdb/1718
208
gdb_test "info frame" \
209
        ".*Saved registers:.*esi at.*ebx at.*eip at.*" \
210
        "saved registers in gdb1718"
211
 
212
 
213
# Testcase from backtrace/1338.
214
 
215
gdb_test "continue" "Program received signal SIGTRAP.*" "continue to gdb1338"
216
 
217
skip_breakpoint gdb1338
218
 
219
gdb_test "backtrace 10" \
220
        "#0\[ \t\]*$hex in gdb1338.*\r\n#1\[ \t\]*$hex in main.*" \
221
        "backtrace in gdb1338"
222
 
223
gdb_test "info frame" \
224
        ".*Saved registers:.*ebx at.*esi at.*edi at.*eip at.*" \
225
        "saved registers in gdb1338"
226
 
227
# Testcase jump_at_beginning.
228
gdb_test_multiple "break jump_at_beginning" \
229
        "set breakpoint in jump_at_beginning" {
230
    -re "Breakpoint \[0-9\]* at ($hex).*$gdb_prompt $" {
231
        gdb_test "x/i $expect_out(1,string)" \
232
                ".*:.*jmp.*" \
233
                "check jump_at_beginning prologue end"
234
    }
235
    default {
236
        fail "set breakpoint in jump_at_beginning"
237
    }
238
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.