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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [testsuite/] [gdb.base/] [call-strs.exp] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
# Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
2
 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
 
17
# Please email any bugs, comments, and/or additions to this file to:
18
# bug-gdb@prep.ai.mit.edu
19
 
20
# This file was written by Elena Zannoni (ezannoni@cygnus.com)
21
 
22
# This test deals with calling functions which have strings as parameters.
23
# it plays around with constant strings.
24
# the corresponding source file is call-strs.c
25
#
26
 
27
#debug strarg
28
 
29
if $tracelevel then {
30
        strace $tracelevel
31
}
32
 
33
set prms_id 0
34
set bug_id 0
35
 
36
set testfile "call-strs"
37
set srcfile ${testfile}.c
38
set binfile ${objdir}/${subdir}/${testfile}
39
 
40
# Test depends on printf, which the sparclet stub doesn't support.
41
if { [istarget "sparclet-*-*"] } {
42
    return 0;
43
}
44
 
45
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
46
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
47
}
48
 
49
 
50
 
51
# The a29k can't call functions, so don't even bother with this test.
52
if [target_info exists gdb,cannot_call_functions] {
53
    setup_xfail "*-*-*" 2416
54
    fail "This target can not call functions"
55
    continue
56
}
57
 
58
# Set the current language to C.  This counts as a test.  If it
59
# fails, then we skip the other tests.
60
 
61
proc set_lang_c {} {
62
    global gdb_prompt
63
 
64
    send_gdb "set language c\n"
65
    gdb_expect {
66
        -re ".*$gdb_prompt $" {}
67
        timeout { fail "set language c (timeout)" ; return 0; }
68
    }
69
 
70
    send_gdb "show language\n"
71
    gdb_expect {
72
        -re ".* source language is \"c\".*$gdb_prompt $" {
73
            pass "set language to \"c\""
74
            return 1
75
        }
76
        -re ".*$gdb_prompt $" {
77
            fail "setting language to \"c\""
78
            return 0
79
        }
80
        timeout {
81
            fail "can't show language (timeout)"
82
            return 0
83
        }
84
    }
85
}
86
 
87
 
88
 
89
# Start with a fresh gdb.
90
 
91
gdb_exit
92
gdb_start
93
gdb_reinitialize_dir $srcdir/$subdir
94
gdb_load ${binfile}
95
send_gdb "set print sevenbit-strings\n" ; gdb_expect -re "$gdb_prompt $"
96
send_gdb "set print address off\n" ; gdb_expect -re "$gdb_prompt $"
97
send_gdb "set width 0\n" ; gdb_expect -re "$gdb_prompt $"
98
 
99
set timeout 120
100
 
101
if ![runto_main] then {
102
    perror "couldn't run to breakpoint"
103
    continue
104
}
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
#step
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
return 0

powered by: WebSVN 2.1.0

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