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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.base/] [call-strs.exp] - Blame information for rev 842

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
# Copyright 1998, 1999, 2000, 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 Elena Zannoni (ezannoni@cygnus.com)
18
 
19
# This test deals with calling functions which have strings as parameters.
20
# it plays around with constant strings.
21
# the corresponding source file is call-strs.c
22
#
23
 
24
#debug strarg
25
 
26
if $tracelevel then {
27
        strace $tracelevel
28
}
29
 
30
set prms_id 0
31
set bug_id 0
32
 
33
set testfile "call-strs"
34
set srcfile ${testfile}.c
35
set binfile ${objdir}/${subdir}/${testfile}
36
 
37
# Test depends on printf, which the sparclet stub doesn't support.
38
if { [istarget "sparclet-*-*"] } {
39
    return 0;
40
}
41
 
42
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
43
    untested call-strs.exp
44
    return -1
45
}
46
 
47
 
48
 
49
# Some targets can't call functions, so don't even bother with this
50
# test.
51
if [target_info exists gdb,cannot_call_functions] {
52
    setup_xfail "*-*-*" 2416
53
    fail "This target can not call functions"
54
    continue
55
}
56
 
57
# Set the current language to C.  This counts as a test.  If it
58
# fails, then we skip the other tests.
59
 
60
proc set_lang_c {} {
61
    global gdb_prompt
62
 
63
    send_gdb "set language c\n"
64
    gdb_expect {
65
        -re ".*$gdb_prompt $" {}
66
        timeout { fail "set language c (timeout)" ; return 0; }
67
    }
68
 
69
    send_gdb "show language\n"
70
    gdb_expect {
71
        -re ".* source language is \"c\".*$gdb_prompt $" {
72
            pass "set language to \"c\""
73
            return 1
74
        }
75
        -re ".*$gdb_prompt $" {
76
            fail "setting language to \"c\""
77
            return 0
78
        }
79
        timeout {
80
            fail "can't show language (timeout)"
81
            return 0
82
        }
83
    }
84
}
85
 
86
 
87
 
88
# Start with a fresh gdb.
89
 
90
gdb_exit
91
gdb_start
92
gdb_reinitialize_dir $srcdir/$subdir
93
gdb_load ${binfile}
94
send_gdb "set print sevenbit-strings\n" ; gdb_expect -re "$gdb_prompt $"
95
send_gdb "set print address off\n" ; gdb_expect -re "$gdb_prompt $"
96
send_gdb "set width 0\n" ; gdb_expect -re "$gdb_prompt $"
97
 
98
if ![runto_main] then {
99
    perror "couldn't run to breakpoint"
100
    continue
101
}
102
 
103
set prev_timeout $timeout
104
set timeout 120
105
 
106
#step
107
send_gdb "step\n"
108
gdb_expect {
109
        -re ".*strcpy\\(buf, \"test string\"\\);.*$gdb_prompt $" {pass "step after assignment to s"}
110
        -re ".*$gdb_prompt $" { fail "step after assignment to s" }
111
        timeout { fail "step after assignment to s (timeout)" }
112
    }
113
 
114
 
115
#next
116
send_gdb "next\n"
117
gdb_expect {
118
        -re ".*str_func\\(\"abcd\", \"efgh\", \"ijkl\", \"mnop\", \"qrst\", \"uvwx\", \"yz12\"\\);.*$gdb_prompt $" {pass "next over strcpy"}
119
        -re ".*$gdb_prompt $" { fail "next over strcpy" }
120
        timeout { fail "next over strcpy (timeout)" }
121
    }
122
 
123
#print buf
124
send_gdb "print buf\n"
125
gdb_expect {
126
    -re ".*\"test string\",.*repeats 88 times.*$gdb_prompt $" {
127
        pass "print buf"
128
      }
129
    -re ".*$gdb_prompt $" { fail "print buf" }
130
    timeout           { fail "(timeout) print buf" }
131
  }
132
 
133
 
134
#print s
135
send_gdb "print s\n"
136
gdb_expect {
137
    -re ".*= \"test string\".*$gdb_prompt $" {
138
        pass "print s"
139
      }
140
    -re ".*$gdb_prompt $" { fail "print s" }
141
    timeout           { fail "(timeout) print sum_array_print(10, *list1, *list2, *list3, *list4)" }
142
  }
143
 
144
 
145
#print str_func1(s)
146
if ![gdb_skip_stdio_test "print str_func1(s)"] {
147
    send_gdb "print  str_func1(s)\n"
148
    gdb_expect {
149
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
150
            pass "print str_func1(s)"
151
        }
152
        -re ".*$gdb_prompt $" { fail "print str_func1(s)" }
153
        timeout               { fail "(timeout) print str_func1(s)" }
154
    }
155
}
156
 
157
 
158
#print str_func1("test string")
159
if ![gdb_skip_stdio_test "print str_func1(teststring)"] {
160
    send_gdb "print  str_func1(\"test string\")\n"
161
    gdb_expect {
162
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
163
            pass "print str_func1(\"test string\")"
164
        }
165
        -re ".*$gdb_prompt $" { fail "print str_func1(\"test string\")" }
166
        timeout     { fail "(timeout) print str_func1(\"test string\")" }
167
    }
168
}
169
 
170
#call str_func1(s)
171
if ![gdb_skip_stdio_test "call str_func1(s)"] {
172
    send_gdb "call  str_func1(s)\n"
173
    gdb_expect {
174
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
175
            pass "call str_func1(s)"
176
        }
177
        -re ".*$gdb_prompt $" { fail "call str_func1(s)" }
178
        timeout               { fail "(timeout) call str_func1(s)" }
179
    }
180
}
181
 
182
#call str_func1("test string")
183
if ![gdb_skip_stdio_test "call str_func1 (...)"] {
184
    send_gdb "call  str_func1(\"test string\")\n"
185
    gdb_expect {
186
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
187
            pass "call str_func1(\"test string\")"
188
        }
189
        -re ".*$gdb_prompt $" { fail "call str_func1(\"test string\")" }
190
        timeout     { fail "(timeout) call str_func1(\"test string\")" }
191
    }
192
}
193
 
194
#print str_func1(buf)
195
if ![gdb_skip_stdio_test "print str_func1(buf)"] {
196
    send_gdb "print  str_func1(buf)\n"
197
    gdb_expect {
198
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
199
            pass "print str_func1(buf)"
200
        }
201
        -re ".*$gdb_prompt $" { fail "print str_func1(buf)" }
202
        timeout               { fail "(timeout) print str_func1(buf)" }
203
    }
204
}
205
 
206
#call str_func1(buf)
207
if ![gdb_skip_stdio_test "call str_func1(buf)"] {
208
    send_gdb "call str_func1(buf)\n"
209
    gdb_expect {
210
        -re "first string arg is: test string.*\"test string\".*$gdb_prompt $" {
211
            pass "call str_func1(buf)"
212
        }
213
        -re ".*$gdb_prompt $" { fail "call str_func1(buf)" }
214
        timeout               { fail "(timeout) call str_func1(buf)" }
215
    }
216
}
217
 
218
#print str_func("a","b","c","d","e","f","g")
219
if ![gdb_skip_stdio_test "print str_func(a,b,c,d,e,f,g)"] {
220
    send_gdb "print  str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")\n"
221
    gdb_expect {
222
        -re "first string arg is: a\[ \t\r\n\]+second string arg is: b\[ \t\r\n\]+third string arg is: c\[ \t\r\n\]+fourth string arg is: d\[ \t\r\n\]+fifth string arg is: e\[ \t\r\n\]+sixth string arg is: f\[ \t\r\n\]+seventh string arg is: g\[ \t\r\n\]+.*= \"abcdefg\".*$gdb_prompt $" {
223
            pass "print str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")"
224
        }
225
        -re ".*$gdb_prompt $" { fail "print str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")" }
226
        timeout           { fail "(timeout) print str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")" }
227
    }
228
}
229
 
230
#call str_func("a","b","c","d","e","f","g")
231
if ![gdb_skip_stdio_test "call str_func(a,b,c,d,e,f,g)"] {
232
    send_gdb "call  str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")\n"
233
    gdb_expect {
234
        -re "first string arg is: a\[ \t\r\n\]+second string arg is: b\[ \t\r\n\]+third string arg is: c\[ \t\r\n\]+fourth string arg is: d\[ \t\r\n\]+fifth string arg is: e\[ \t\r\n\]+sixth string arg is: f\[ \t\r\n\]+seventh string arg is: g\[ \t\r\n\]+.*= \"abcdefg\".*$gdb_prompt $" {
235
            pass "call str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")"
236
        }
237
        -re ".*$gdb_prompt $" { fail "call str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")" }
238
        timeout           { fail "(timeout) call str_func(\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\")" }
239
    }
240
}
241
 
242
#print str_func(s,s,s,s,s,s,s)
243
if ![gdb_skip_stdio_test "print str_func(s,s,s,s,s,s,s,s)"] {
244
    send_gdb "print  str_func(s,s,s,s,s,s,s)\n"
245
    gdb_expect {
246
        -re "first string arg is: test string\[ \t\r\n\]+second string arg is: test string\[ \t\r\n\]+third string arg is: test string\[ \t\r\n\]+fourth string arg is: test string\[ \t\r\n\]+fifth string arg is: test string\[ \t\r\n\]+sixth string arg is: test string\[ \t\r\n\]+seventh string arg is: test string\[ \t\r\n\]+.*\"test stringtest stringtest stringtest stringtest stringtest stringtest string\".*$gdb_prompt $" {
247
            pass "print str_func(s,s,s,s,s,s,s)"
248
        }
249
        -re ".*$gdb_prompt $" { fail "print str_func(s,s,s,s,s,s,s)" }
250
        timeout     { fail "(timeout) print str_func(s,s,s,s,s,s,s)" }
251
    }
252
}
253
 
254
#call str_func(s,s,s,s,s,s,s)
255
if ![gdb_skip_stdio_test "call str_func(s,s,s,s,s,s,s,s)"] {
256
    send_gdb "call  str_func(s,s,s,s,s,s,s)\n"
257
    gdb_expect {
258
        -re "first string arg is: test string\[ \t\r\n\]+second string arg is: test string\[ \t\r\n\]+third string arg is: test string\[ \t\r\n\]+fourth string arg is: test string\[ \t\r\n\]+fifth string arg is: test string\[ \t\r\n\]+sixth string arg is: test string\[ \t\r\n\]+seventh string arg is: test string\[ \t\r\n\]+.*\"test stringtest stringtest stringtest stringtest stringtest stringtest string\".*$gdb_prompt $" {
259
            pass "call str_func(s,s,s,s,s,s,s)"
260
        }
261
        -re ".*$gdb_prompt $" { fail "call str_func(s,s,s,s,s,s,s)" }
262
        timeout               { fail "(timeout) call str_func(s,s,s,s,s,s,s)" }
263
    }
264
}
265
 
266
gdb_exit
267
 
268
set timeout $prev_timeout
269
 

powered by: WebSVN 2.1.0

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