diff options
author | Jeff Law <law@redhat.com> | 1996-08-09 16:38:19 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1996-08-09 16:38:19 +0000 |
commit | bd3bab1eed665fb2d8053a8d3043824959cb599f (patch) | |
tree | 4530fb7d11c63052d097d24e6bbfc0b803fca184 /gdb/testsuite/gdb.base/structs.c | |
parent | 46b6fdbd1166730455bff6b74718bbee8793c9c6 (diff) | |
download | binutils-bd3bab1eed665fb2d8053a8d3043824959cb599f.zip binutils-bd3bab1eed665fb2d8053a8d3043824959cb599f.tar.gz binutils-bd3bab1eed665fb2d8053a8d3043824959cb599f.tar.bz2 |
* gdb.base/structs.exp: New tests for passing and returning
structures.
* gdb.base/structs.c: C source for test.
Sanitized away until we've got a valid copyright assignment from
Michael Snyder.
Only tested on the PA. I assume other ports will needs some xfails
and other possible testsuite tweakage.
Diffstat (limited to 'gdb/testsuite/gdb.base/structs.c')
-rw-r--r-- | gdb/testsuite/gdb.base/structs.c | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/structs.c b/gdb/testsuite/gdb.base/structs.c new file mode 100644 index 0000000..fcb9d72 --- /dev/null +++ b/gdb/testsuite/gdb.base/structs.c @@ -0,0 +1,207 @@ +/* Copyright (C) 1996 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +struct struct1 { char a;}; +struct struct2 { char a, b;}; +struct struct3 { char a, b, c; }; +struct struct4 { char a, b, c, d; }; +struct struct5 { char a, b, c, d, e; }; +struct struct6 { char a, b, c, d, e, f; }; +struct struct7 { char a, b, c, d, e, f, g; }; +struct struct8 { char a, b, c, d, e, f, g, h; }; +struct struct9 { char a, b, c, d, e, f, g, h, i; }; +struct struct10 { char a, b, c, d, e, f, g, h, i, j; }; +struct struct11 { char a, b, c, d, e, f, g, h, i, j, k; }; +struct struct12 { char a, b, c, d, e, f, g, h, i, j, k, l; }; +struct struct16 { char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p; }; + +struct struct1 foo1 = {'1'}, L1; +struct struct2 foo2 = { 'a', 'b'}, L2; +struct struct3 foo3 = { 'A', 'B', 'C'}, L3; +struct struct4 foo4 = {'1', '2', '3', '4'}, L4; +struct struct5 foo5 = {'a', 'b', 'c', 'd', 'e'}, L5; +struct struct6 foo6 = {'A', 'B', 'C', 'D', 'E', 'F'}, L6; +struct struct7 foo7 = {'1', '2', '3', '4', '5', '6', '7'}, L7; +struct struct8 foo8 = {'1', '2', '3', '4', '5', '6', '7', '8'}, L8; +struct struct9 foo9 = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}, L9; +struct struct10 foo10 = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}, L10; +struct struct11 foo11 = { + '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B'}, L11; +struct struct12 foo12 = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'}, L12; +struct struct16 foo16 = { + 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'}, L16; + +struct struct1 fun1() +{ + return foo1; +} +struct struct2 fun2() +{ + return foo2; +} +struct struct3 fun3() +{ + return foo3; +} +struct struct4 fun4() +{ + return foo4; +} +struct struct5 fun5() +{ + return foo5; +} +struct struct6 fun6() +{ + return foo6; +} +struct struct7 fun7() +{ + return foo7; +} +struct struct8 fun8() +{ + return foo8; +} +struct struct9 fun9() +{ + return foo9; +} +struct struct10 fun10() +{ + return foo10; +} +struct struct11 fun11() +{ + return foo11; +} +struct struct12 fun12() +{ + return foo12; +} +struct struct16 fun16() +{ + return foo16; +} + +void Fun1(foo1) + struct struct1 foo1; +{ + L1 = foo1; +} +void Fun2(foo2) + struct struct2 foo2; +{ + L2 = foo2; +} +void Fun3(foo3) + struct struct3 foo3; +{ + L3 = foo3; +} +void Fun4(foo4) + struct struct4 foo4; +{ + L4 = foo4; +} +void Fun5(foo5) + struct struct5 foo5; +{ + L5 = foo5; +} +void Fun6(foo6) + struct struct6 foo6; +{ + L6 = foo6; +} +void Fun7(foo7) + struct struct7 foo7; +{ + L7 = foo7; +} +void Fun8(foo8) + struct struct8 foo8; +{ + L8 = foo8; +} +void Fun9(foo9) + struct struct9 foo9; +{ + L9 = foo9; +} +void Fun10(foo10) + struct struct10 foo10; +{ + L10 = foo10; +} +void Fun11(foo11) + struct struct11 foo11; +{ + L11 = foo11; +} +void Fun12(foo12) + struct struct12 foo12; +{ + L12 = foo12; +} +void Fun16(foo16) + struct struct16 foo16; +{ + L16 = foo16; +} + +int main() +{ + + /* TEST C FUNCTIONS */ + L1 = fun1(); + L2 = fun2(); + L3 = fun3(); + L4 = fun4(); + L5 = fun5(); + L6 = fun6(); + L7 = fun7(); + L8 = fun8(); + L9 = fun9(); + L10 = fun10(); + L11 = fun11(); + L12 = fun12(); + L16 = fun16(); + + foo1.a = foo2.a = foo3.a = foo4.a = foo5.a = foo6.a = foo7.a = foo8.a = + foo9.a = foo10.a = foo11.a = foo12.a = foo16.a = '$'; + + Fun1(foo1); + Fun2(foo2); + Fun3(foo3); + Fun4(foo4); + Fun5(foo5); + Fun6(foo6); + Fun7(foo7); + Fun8(foo8); + Fun9(foo9); + Fun10(foo10); + Fun11(foo11); + Fun12(foo12); + Fun16(foo16); + + return 0; +} |