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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.base/] [gcore.exp] - Blame information for rev 231

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

Line No. Rev Author Line
1 227 jeremybenn
# Copyright 2002, 2003, 2004, 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
# This file was written by Michael Snyder (msnyder@redhat.com)
18
# This is a test for the gdb command "generate-core-file".
19
 
20
if $tracelevel then {
21
        strace $tracelevel
22
}
23
 
24
set prms_id 0
25
set bug_id 0
26
 
27
set testfile "gcore"
28
set srcfile  ${testfile}.c
29
set binfile  ${objdir}/${subdir}/${testfile}
30
 
31
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
32
     untested gcore.exp
33
     return -1
34
}
35
 
36
# Start with a fresh gdb.
37
 
38
gdb_exit
39
gdb_start
40
gdb_reinitialize_dir $srcdir/$subdir
41
gdb_load ${binfile}
42
 
43
# Does this gdb support gcore?
44
send_gdb "help gcore\n"
45
gdb_expect {
46
    -re "Undefined command: .gcore.*$gdb_prompt $" {
47
        # gcore command not supported -- nothing to test here.
48
        unsupported "gdb does not support gcore on this target"
49
        return -1;
50
    }
51
    -re "Save a core file .*$gdb_prompt $" {
52
        pass "help gcore"
53
    }
54
    -re ".*$gdb_prompt $" {
55
        fail "help gcore"
56
    }
57
    timeout {
58
        fail "help gcore (timeout)"
59
    }
60
}
61
 
62
if { ! [ runto_main ] } then {
63
    untested gcore.exp
64
    return -1
65
}
66
 
67
proc capture_command_output { command prefix } {
68
    global gdb_prompt
69
    global expect_out
70
 
71
    set output_string ""
72
    gdb_test_multiple "$command" "capture_command_output for $command" {
73
        -re "${command}\[\r\n\]+${prefix}(.*)\[\r\n\]+$gdb_prompt $" {
74
            set output_string $expect_out(1,string)
75
        }
76
    }
77
    return $output_string
78
}
79
 
80
gdb_test "break terminal_func" "Breakpoint .* at .*${srcfile}, line .*" \
81
        "set breakpoint at terminal_func"
82
 
83
gdb_test "continue" "Breakpoint .* terminal_func.*" \
84
        "continue to terminal_func"
85
 
86
set print_prefix ".\[0123456789\]* = "
87
 
88
set pre_corefile_backtrace [capture_command_output "backtrace" ""]
89
set pre_corefile_regs [capture_command_output "info registers" ""]
90
set pre_corefile_allregs [capture_command_output "info all-reg" ""]
91
set pre_corefile_static_array \
92
        [capture_command_output "print static_array" "$print_prefix"]
93
set pre_corefile_uninit_array \
94
        [capture_command_output "print un_initialized_array" "$print_prefix"]
95
set pre_corefile_heap_string \
96
        [capture_command_output "print heap_string" "$print_prefix"]
97
set pre_corefile_local_array \
98
        [capture_command_output "print array_func::local_array" "$print_prefix"]
99
set pre_corefile_extern_array \
100
        [capture_command_output "print extern_array" "$print_prefix"]
101
 
102
set escapedfilename [string_to_regexp ${objdir}/${subdir}/gcore.test]
103
 
104
set core_supported 0
105
gdb_test_multiple "gcore ${objdir}/${subdir}/gcore.test" \
106
        "save a corefile" \
107
{
108
  -re "Saved corefile ${escapedfilename}\[\r\n\]+$gdb_prompt $" {
109
    pass "save a corefile"
110
    global core_supported
111
    set core_supported 1
112
  }
113
  -re "Can't create a corefile\[\r\n\]+$gdb_prompt $" {
114
    unsupported "save a corefile"
115
    global core_supported
116
    set core_supported 0
117
  }
118
}
119
 
120
if {!$core_supported} {
121
  return -1
122
}
123
 
124
# Now restart gdb and load the corefile.
125
gdb_exit
126
gdb_start
127
gdb_reinitialize_dir $srcdir/$subdir
128
gdb_load ${binfile}
129
 
130
send_gdb "core ${objdir}/${subdir}/gcore.test\n"
131
gdb_expect {
132
    -re ".* is not a core dump:.*$gdb_prompt $" {
133
        fail "re-load generated corefile (bad file format)"
134
        # No use proceeding from here.
135
        return;
136
    }
137
    -re ".*: No such file or directory.*$gdb_prompt $" {
138
        fail "re-load generated corefile (file not found)"
139
        # No use proceeding from here.
140
        return;
141
    }
142
    -re ".*Couldn't find .* registers in core file.*$gdb_prompt $" {
143
        fail "re-load generated corefile (incomplete note section)"
144
    }
145
    -re "Core was generated by .*$gdb_prompt $" {
146
        pass "re-load generated corefile"
147
    }
148
    -re ".*$gdb_prompt $" {
149
        fail "re-load generated corefile"
150
    }
151
    timeout {
152
        fail "re-load generated corefile (timeout)"
153
    }
154
}
155
 
156
send_gdb "where\n"
157
gdb_expect_list "where in corefile" ".*$gdb_prompt $" {
158
    ".*\[\r\n\]+#0 .* terminal_func \\(\\) at "
159
    ".*\[\r\n\]+#1 .* array_func \\(\\) at "
160
    ".*\[\r\n\]+#2 .* factorial_func \\(value=1\\) at "
161
    ".*\[\r\n\]+#3 .* factorial_func \\(value=2\\) at "
162
    ".*\[\r\n\]+#4 .* factorial_func \\(value=3\\) at "
163
    ".*\[\r\n\]+#5 .* factorial_func \\(value=4\\) at "
164
    ".*\[\r\n\]+#6 .* factorial_func \\(value=5\\) at "
165
    ".*\[\r\n\]+#7 .* factorial_func \\(value=6\\) at "
166
    ".*\[\r\n\]+#8 .* main \\(.*\\) at "
167
}
168
 
169
set post_corefile_regs [capture_command_output "info registers" ""]
170
if ![string compare $pre_corefile_regs $post_corefile_regs] then {
171
    pass "corefile restored general registers"
172
} else {
173
    fail "corefile restored general registers"
174
}
175
 
176
set post_corefile_allregs [capture_command_output "info all-reg" ""]
177
if ![string compare $pre_corefile_allregs $post_corefile_allregs] then {
178
    pass "corefile restored all registers"
179
} else {
180
    fail "corefile restored all registers"
181
}
182
 
183
set post_corefile_extern_array \
184
        [capture_command_output "print extern_array" "$print_prefix"]
185
if ![string compare $pre_corefile_extern_array $post_corefile_extern_array]  {
186
    pass "corefile restored extern array"
187
} else {
188
    fail "corefile restored extern array"
189
}
190
 
191
set post_corefile_static_array \
192
        [capture_command_output "print static_array" "$print_prefix"]
193
if ![string compare $pre_corefile_static_array $post_corefile_static_array]  {
194
    pass "corefile restored static array"
195
} else {
196
    fail "corefile restored static array"
197
}
198
 
199
set post_corefile_uninit_array \
200
        [capture_command_output "print un_initialized_array" "$print_prefix"]
201
if ![string compare $pre_corefile_uninit_array $post_corefile_uninit_array]  {
202
    pass "corefile restored un-initialized array"
203
} else {
204
    fail "corefile restored un-initialized array"
205
}
206
 
207
set post_corefile_heap_string \
208
        [capture_command_output "print heap_string" "$print_prefix"]
209
if ![string compare $pre_corefile_heap_string $post_corefile_heap_string]  {
210
    pass "corefile restored heap array"
211
} else {
212
    fail "corefile restored heap array"
213
}
214
 
215
set post_corefile_local_array \
216
        [capture_command_output "print array_func::local_array" "$print_prefix"]
217
if ![string compare $pre_corefile_local_array $post_corefile_local_array]  {
218
    pass "corefile restored stack array"
219
} else {
220
    fail "corefile restored stack array"
221
}
222
 
223
set post_corefile_backtrace [capture_command_output "backtrace" ""]
224
if ![string compare $pre_corefile_backtrace $post_corefile_backtrace]  {
225
    pass "corefile restored backtrace"
226
} else {
227
    fail "corefile restored backtrace"
228
}

powered by: WebSVN 2.1.0

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