Test for PR gdb/17511, spurious SIGTRAP after stepping into+in signal handler
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / sizeof.c
index bdc3d02e5ba89d896d31d72886ebce8bbc5db8a2..9c67c035cd6e1024e87d0c3db6461812643868a5 100644 (file)
+#include <stdio.h>
+
+typedef char padding[16];
+
+struct {
+  padding p1;
+  char v;
+  padding p2;
+} padding_char;
+
+struct {
+  padding p1;
+  short v;
+  padding p2;
+} padding_short;
+
+struct {
+  padding p1;
+  int v;
+  padding p2;
+} padding_int;
+
+struct {
+  padding p1;
+  long v;
+  padding p2;
+} padding_long;
+
+struct {
+  padding p1;
+  long long v;
+  padding p2;
+} padding_long_long;
+
+struct {
+  padding p1;
+  float v;
+  padding p2;
+} padding_float;
+
+struct {
+  padding p1;
+  double v;
+  padding p2;
+} padding_double;
+
+struct {
+  padding p1;
+  long double v;
+  padding p2;
+} padding_long_double;
+
+static void
+fill (void *buf, long sizeof_buf)
+{
+  char *p = buf;
+  int i;
+  for (i = 0; i < sizeof_buf; i++)
+    p[i] = "The quick brown dingo jumped over the layzy dog."[i];
+}
+
+void
+fill_structs (void)
+{
+  fill (&padding_char.p1, sizeof (padding));
+  fill (&padding_char.v, sizeof (padding_char.v));
+  fill (&padding_char.p2, sizeof (padding));
+
+  fill (&padding_short.p1, sizeof (padding));
+  fill (&padding_short.v, sizeof (padding_short.v));
+  fill (&padding_short.p2, sizeof (padding));
+
+  fill (&padding_int.p1, sizeof (padding));
+  fill (&padding_int.v, sizeof (padding_int.v));
+  fill (&padding_int.p2, sizeof (padding));
+
+  fill (&padding_long.p1, sizeof (padding));
+  fill (&padding_long.v, sizeof (padding_long.v));
+  fill (&padding_long.p2, sizeof (padding));
+
+  fill (&padding_long_long.p1, sizeof (padding));
+  fill (&padding_long_long.v, sizeof (padding_long_long.v));
+  fill (&padding_long_long.p2, sizeof (padding));
+
+  fill (&padding_float.p1, sizeof (padding));
+  fill (&padding_float.v, sizeof (padding_float.v));
+  fill (&padding_float.p2, sizeof (padding));
+
+  fill (&padding_double.p1, sizeof (padding));
+  fill (&padding_double.v, sizeof (padding_double.v));
+  fill (&padding_double.p2, sizeof (padding));
+
+  fill (&padding_long_double.p1, sizeof (padding));
+  fill (&padding_long_double.v, sizeof (padding_long_double.v));
+  fill (&padding_long_double.p2, sizeof (padding));
+}
+
 int
 main ()
 {
-  printf ("sizeof (char) == %d\n", sizeof (char));
-  printf ("sizeof (short) == %d\n", sizeof (short));
-  printf ("sizeof (int) == %d\n", sizeof (int));
-  printf ("sizeof (long) == %d\n", sizeof (long));
-  printf ("sizeof (long long) == %d\n", sizeof (long long));
-
-  printf ("sizeof (void *) == %d\n", sizeof (void*));
-  printf ("sizeof (void (*)(void)) == %d\n", sizeof (void (*)(void)));
-
-  printf ("sizeof (float) == %d\n", sizeof (float));
-  printf ("sizeof (double) == %d\n", sizeof (double));
-  printf ("sizeof (long double) == %d\n", sizeof (long double));
+  fill_structs ();
+
+  printf ("sizeof (char) == %d\n", (int) sizeof (char));
+  printf ("sizeof (short) == %d\n", (int) sizeof (short));
+  printf ("sizeof (int) == %d\n", (int) sizeof (int));
+  printf ("sizeof (long) == %d\n", (int) sizeof (long));
+  printf ("sizeof (long long) == %d\n", (int) sizeof (long long));
+
+  printf ("sizeof (void *) == %d\n", (int) sizeof (void*));
+  printf ("sizeof (void (*)(void)) == %d\n", (int) sizeof (void (*)(void)));
+
+  printf ("sizeof (float) == %d\n", (int) sizeof (float));
+  printf ("sizeof (double) == %d\n", (int) sizeof (double));
+  printf ("sizeof (long double) == %d\n", (int) sizeof (long double));
+
+  /* Signed char?  */
+  printf ("valueof ('\\377') == %d\n", '\377');
+  printf ("valueof ((int) (char) -1) == %d\n", (int) (char) -1);
+  printf ("valueof ((int) (signed char) -1) == %d\n", (int) (signed char) -1);
+  printf ("valueof ((int) (unsigned char) -1) == %d\n", (int) (unsigned char) -1);
+
   return 0;
 }
This page took 0.026642 seconds and 4 git commands to generate.