diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/max-depth.c')
-rw-r--r-- | gdb/testsuite/gdb.base/max-depth.c | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/max-depth.c b/gdb/testsuite/gdb.base/max-depth.c new file mode 100644 index 0000000..3c57249 --- /dev/null +++ b/gdb/testsuite/gdb.base/max-depth.c @@ -0,0 +1,232 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2019 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 3 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, see <http://www.gnu.org/licenses/>. */ + +struct s1 +{ + int x; + int y; +} s1; + +struct s2 +{ + int x; + int y; + struct + { + int z; + int a; + }; +} s2; + +struct s3 +{ + int x; + int y; + struct + { + int z; + int a; + struct + { + int b; + int c; + }; + }; +} s3; + +struct s4 +{ + int x; + int y; + struct + { + int x; + int y; + struct + { + int x; + int y; + } l2; + } l1; +} s4; + +struct s5 +{ + union + { + int raw[3]; + struct + { + int x; + int y; + int z; + }; + }; +} s5; + +typedef struct +{ + union + { + int raw[3]; + struct + { + int x; + int y; + int z; + }; + }; +} s6_t; + +s6_t s6; + +struct s7 +{ + struct + { + int x; + int y; + }; + struct + { + int z; + int a; + }; + struct + { + int b; + int c; + }; +} s7; + +struct s8 +{ + int x; + int y; + struct + { + int z; + int a; + struct + { + int b; + int c; + }; + } d1; +} s8; + +struct s9 +{ + int x; + int y; + struct + { + int k; + int j; + struct + { + int z; + int a; + struct + { + int b; + int c; + }; + } d1; + }; + struct + { + int z; + int a; + struct + { + int b; + int c; + }; + } d2; +} s9; + +struct s10 +{ + int x[10]; + int y; + struct + { + int k[10]; + int j; + struct + { + int z; + int a; + struct + { + int b[10]; + int c; + }; + } d1; + }; + struct + { + int z; + int a; + struct + { + int b[10]; + int c; + }; + } d2; +} s10; + +struct s11 +{ + int x; + char s[10]; + struct + { + int z; + int a; + }; +} s11; + +/* The following are C++ inheritance testing. */ +#ifdef __cplusplus + +/* This is non-virtual inheritance. */ +struct C1 { int c1 = 1; } c1; +struct C2 { int c2 = 2; } c2; +struct C3 : C2 { int c3 = 3; } c3; +struct C4 { int c4 = 4; } c4; +struct C5 : C4 { int c5 = 5; } c5; +struct C6 : C5 { int c6 = 6; } c6; +struct C7 : C1, C3, C6 { int c7 = 7; } c7; + +/* This is virtual inheritance. */ +struct V1 { int v1 = 1; } v1; +struct V2 : virtual V1 { int v2 = 2; } v2; +struct V3 : virtual V1 { int v3 = 3; } v3; +struct V4 : virtual V2 { int v4 = 4; } v4; +struct V5 : virtual V2 { int v5 = 1; } v5; +struct V6 : virtual V2, virtual V3 { int v6 = 1; } v6; +struct V7 : virtual V4, virtual V5, virtual V6 { int v7 = 1; } v7; + +#endif /* __cplusplus */ + +int +main () +{ + return 0; +} |