aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/cvexpr.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2001-11-15 02:16:59 +0000
committerMichael Snyder <msnyder@vmware.com>2001-11-15 02:16:59 +0000
commit4749e309f25b02a736f4111af71034801c10f6e9 (patch)
tree15f79ae7fd806c6099ea9899b1e40b9423bfcedd /gdb/testsuite/gdb.base/cvexpr.c
parent47663de5984a7cf5eff8c8780cdf093aa9629a64 (diff)
downloadfsf-binutils-gdb-4749e309f25b02a736f4111af71034801c10f6e9.zip
fsf-binutils-gdb-4749e309f25b02a736f4111af71034801c10f6e9.tar.gz
fsf-binutils-gdb-4749e309f25b02a736f4111af71034801c10f6e9.tar.bz2
2001-11-13 Michael Snyder <msnyder@redhat.com>
* gdb.base/cvexpr.c, gdb.base/cvexpr.exp: New files. Tests for expressions using 'const' and 'volatile'.
Diffstat (limited to 'gdb/testsuite/gdb.base/cvexpr.c')
-rw-r--r--gdb/testsuite/gdb.base/cvexpr.c280
1 files changed, 280 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/cvexpr.c b/gdb/testsuite/gdb.base/cvexpr.c
new file mode 100644
index 0000000..176bbe9
--- /dev/null
+++ b/gdb/testsuite/gdb.base/cvexpr.c
@@ -0,0 +1,280 @@
+/* Copyright (C) 2001 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 */
+
+
+/*
+ * Initial set of typed variables borrowed from ptype.c
+ */
+
+#if !defined (__STDC__) && !defined (_AIX)
+#define signed /**/
+#endif
+
+char v_char;
+signed char v_signed_char;
+unsigned char v_unsigned_char;
+
+short v_short;
+signed short v_signed_short;
+unsigned short v_unsigned_short;
+
+int v_int;
+signed int v_signed_int;
+unsigned int v_unsigned_int;
+
+long v_long;
+signed long v_signed_long;
+unsigned long v_unsigned_long;
+
+long long v_long_long;
+signed long long v_signed_long_long;
+unsigned long long v_unsigned_long_long;
+
+float v_float;
+double v_double;
+
+/*
+ * Now some derived types, which are arrays, functions-returning,
+ * pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char v_char_array[2];
+signed char v_signed_char_array[2];
+unsigned char v_unsigned_char_array[2];
+
+short v_short_array[2];
+signed short v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int v_int_array[2];
+signed int v_signed_int_array[2];
+unsigned int v_unsigned_int_array[2];
+
+long v_long_array[2];
+signed long v_signed_long_array[2];
+unsigned long v_unsigned_long_array[2];
+
+float v_float_array[2];
+double v_double_array[2];
+
+/* PR 3742 */
+typedef char t_char_array[];
+
+/**** pointers *******/
+
+char *v_char_pointer;
+signed char *v_signed_char_pointer;
+unsigned char *v_unsigned_char_pointer;
+
+short *v_short_pointer;
+signed short *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int *v_int_pointer;
+signed int *v_signed_int_pointer;
+unsigned int *v_unsigned_int_pointer;
+
+long *v_long_pointer;
+signed long *v_signed_long_pointer;
+unsigned long *v_unsigned_long_pointer;
+
+float *v_float_pointer;
+double *v_double_pointer;
+
+char **v_char_pointer_pointer;
+signed char **v_signed_char_pointer_pointer;
+unsigned char **v_unsigned_char_pointer_pointer;
+
+short **v_short_pointer_pointer;
+signed short **v_signed_short_pointer_pointer;
+unsigned short **v_unsigned_short_pointer_pointer;
+
+int **v_int_pointer_pointer;
+signed int **v_signed_int_pointer_pointer;
+unsigned int **v_unsigned_int_pointer_pointer;
+
+long **v_long_pointer_pointer;
+signed long **v_signed_long_pointer_pointer;
+unsigned long **v_unsigned_long_pointer_pointer;
+
+float **v_float_pointer_pointer;
+double **v_double_pointer_pointer;
+
+/**** pointers to arrays, arrays of pointers *******/
+
+char *v_char_array_pointer[2];
+signed char *v_signed_char_array_pointer[2];
+unsigned char *v_unsigned_char_array_pointer[2];
+
+short *v_short_array_pointer[2];
+signed short *v_signed_short_array_pointer[2];
+unsigned short *v_unsigned_short_array_pointer[2];
+
+int *v_int_array_pointer[2];
+signed int *v_signed_int_array_pointer[2];
+unsigned int *v_unsigned_int_array_pointer[2];
+
+long *v_long_array_pointer[2];
+signed long *v_signed_long_array_pointer[2];
+unsigned long *v_unsigned_long_array_pointer[2];
+
+float *v_float_array_pointer[2];
+double *v_double_array_pointer[2];
+
+char (*v_char_pointer_array)[2];
+signed char (*v_signed_char_pointer_array)[2];
+unsigned char (*v_unsigned_char_pointer_array)[2];
+
+short (*v_short_pointer_array)[2];
+signed short (*v_signed_short_pointer_array)[2];
+unsigned short (*v_unsigned_short_pointer_array)[2];
+
+int (*v_int_pointer_array)[2];
+signed int (*v_signed_int_pointer_array)[2];
+unsigned int (*v_unsigned_int_pointer_array)[2];
+
+long (*v_long_pointer_array)[2];
+signed long (*v_signed_long_pointer_array)[2];
+unsigned long (*v_unsigned_long_pointer_array)[2];
+
+float (*v_float_pointer_array)[2];
+double (*v_double_pointer_array)[2];
+
+
+/**** structs *******/
+
+struct t_struct {
+ char v_char_member;
+ short v_short_member;
+ int v_int_member;
+ long v_long_member;
+ float v_float_member;
+ double v_double_member;
+} v_struct1;
+
+struct t_struct *v_t_struct_p;
+
+struct {
+ char v_char_member;
+ short v_short_member;
+ int v_int_member;
+ long v_long_member;
+ float v_float_member;
+ double v_double_member;
+} v_struct2;
+
+/* typedef'd struct without a tag. */
+typedef struct {
+ double v_double_member;
+ int v_int_member;
+} t_struct3;
+/* GCC seems to want a variable of this type, or else it won't put out
+ a symbol. */
+t_struct3 v_struct3;
+
+/**** unions *******/
+
+union t_union {
+ char v_char_member;
+ short v_short_member;
+ int v_int_member;
+ long v_long_member;
+ float v_float_member;
+ double v_double_member;
+} v_union;
+
+union {
+ char v_char_member;
+ short v_short_member;
+ int v_int_member;
+ long v_long_member;
+ float v_float_member;
+ double v_double_member;
+} v_union2;
+
+/* typedef'd union without a tag. */
+typedef union {
+ double v_double_member;
+ int v_int_member;
+} t_union3;
+/* GCC seems to want a variable of this type, or else it won't put out
+ a symbol. */
+t_union3 v_union3;
+
+/**** Enumerations *******/
+
+enum
+/* Work around the bug for compilers which don't put out the right stabs. */
+#if __GNUC__ < 2 && !defined (_AIX)
+primary1_tag
+#endif
+{red1, green1, blue1} primary1;
+
+enum {red, green, blue} primary;
+enum colors {yellow, purple, pink} nonprimary;
+
+enum {chevy, ford} clunker;
+enum cars {bmw, porsche} sportscar;
+
+#undef FALSE
+#undef TRUE
+typedef enum {FALSE, TRUE} boolean;
+boolean v_boolean;
+/*note: aCC has bool type predefined with 'false' and 'true'*/
+typedef enum bvals {my_false, my_true} boolean2;
+boolean2 v_boolean2;
+
+enum misordered {two = 2, one = 1, zero = 0, three = 3};
+
+/* Seems like we need a variable of this type to get the type to be put
+ in the executable, at least for AIX xlc. */
+enum misordered v_misordered = three;
+
+/**** Function pointers *******/
+
+char (*v_char_func) (int, int*);
+signed char (*v_signed_char_func) (int, int*);
+unsigned char (*v_unsigned_char_func) (int, int*);
+
+short (*v_short_func) (int, int*);
+signed short (*v_signed_short_func) (int, int*);
+unsigned short (*v_unsigned_short_func) (int, int*);
+
+int (*v_int_func) (int, int*);
+signed int (*v_signed_int_func) (int, int*);
+unsigned int (*v_unsigned_int_func) (int, int*);
+
+long (*v_long_func) (int, int*);
+signed long (*v_signed_long_func) (int, int*);
+unsigned long (*v_unsigned_long_func) (int, int*);
+
+long long (*v_long_long_func) (int, int*);
+signed long long (*v_signed_long_long_func) (int, int*);
+unsigned long long (*v_unsigned_long_long_func) (int, int*);
+
+float (*v_float_func) (int, int*);
+double (*v_double_func) (int, int*);
+
+
+
+int main ()
+{
+}