@@ -1,7 +1,7 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=integer-divide-by-zero -Wno-overflow" } */
-#include <limits.h>
+#define INT_MIN (-__INT_MAX__ - 1)
int
main (void)
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow" } */
+#include <stdio.h>
+
#ifndef ASM1
# define ASM1(a) /* Nothing */
#endif
@@ -51,6 +53,8 @@
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
CHECK (FN1 (char, char, +), 23);
CHECK (FN1 (char, char, -), 5);
CHECK (FN1 (char, char, *), 126);
@@ -258,5 +262,8 @@ main (void)
CHECK (FN5 (long long int), -77);
CHECK (FN5 (unsigned long long int), -77);
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
+#include <stdio.h>
+
#define SCHAR_MAX __SCHAR_MAX__
#define SHRT_MAX __SHRT_MAX__
#define INT_MAX __INT_MAX__
@@ -16,6 +18,8 @@ check (int i, int j)
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
#if __INT_MAX__ == 2147483647
/* Here, nothing should fail. */
volatile int j = INT_MAX;
@@ -56,5 +60,8 @@ main (void)
check (d, -32768);
#endif
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
+#include <stdio.h>
+
#define SCHAR_MAX __SCHAR_MAX__
#define SHRT_MAX __SHRT_MAX__
#define INT_MAX __INT_MAX__
@@ -16,6 +18,8 @@ check (int i, int j)
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
/* Test integer promotion. */
#if __SCHAR_MAX__ == 127
volatile signed char a = -2;
@@ -42,5 +46,8 @@ main (void)
check (o, INT_MIN);
#endif
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow" } */
+#include <stdio.h>
+
__attribute__((noinline, noclone)) long long
mul (long long x, long long y)
{
@@ -29,10 +31,16 @@ long long tab[] = {
int
main ()
{
+ fputs ("UBSAN TEST START\n", stderr);
+
unsigned int i;
for (i = 0; i < sizeof (tab) / sizeof (long long); i += 3)
if (mul (tab[i], tab[i + 1]) != tab[i + 2]
|| mul (tab[i + 1], tab[i]) != tab[i + 2])
__builtin_abort ();
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
+#include <stdio.h>
+
#define SCHAR_MIN (-__SCHAR_MAX__ - 1)
#define SHRT_MIN (-__SHRT_MAX__ - 1)
#define INT_MIN (-__INT_MAX__ - 1)
@@ -12,6 +14,8 @@
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
volatile signed char c = -SCHAR_MIN;
CHECK (c, -128);
@@ -34,5 +38,8 @@ main (void)
lli = -(unsigned long long) lli;
CHECK (lli, -0x8000000000000000L);
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */
+#include <stdio.h>
+
#define SCHAR_MAX __SCHAR_MAX__
#define SCHAR_MIN (-__SCHAR_MAX__ - 1)
#define SHRT_MAX __SHRT_MAX__
@@ -18,6 +20,8 @@ check (int i, int j)
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
#if __INT_MAX__ == 2147483647
/* Here, nothing should fail. */
volatile int i = -1;
@@ -58,5 +62,8 @@ main (void)
check (d, 32767);
#endif
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,13 +1,21 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=signed-integer-overflow" } */
+#include <stdio.h>
+
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
long long int a = 14;
long int b = 9;
asm volatile ("" : "+r" (a), "+r" (b));
if ((a - b) != 5)
__builtin_abort ();
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -2,6 +2,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=undefined" } */
+#include <stdio.h>
+
long long y;
__attribute__((noinline, noclone)) long long
@@ -24,10 +26,16 @@ bar (long long x)
int
main ()
{
+ fputs ("UBSAN TEST START\n", stderr);
+
y = 1;
if (foo (8 - 2040) != 8 - 1)
__builtin_abort ();
if (bar (1) != 8 - 1)
__builtin_abort ();
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,11 +1,19 @@
/* { dg-do compile } */
/* { dg-options "-fsanitize=shift -Wall -Werror -O" } */
+#include <stdio.h>
+
static int x;
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
int o = 1;
int y = x << o;
+
+ fputs ("UBSAN TEST END\n", stderr);
return y;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,11 +1,19 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=shift -w" } */
+#include <stdio.h>
+
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
unsigned int a = 1;
a <<= 31;
a <<= 1;
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -2,10 +2,14 @@
/* { dg-do run { target int32plus } } */
/* { dg-options "-fsanitize=shift -w" } */
+#include <stdio.h>
+
int x = 7;
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
/* All of the following should pass. */
int A[128 >> 5] = {};
int B[128 << 5] = {};
@@ -26,5 +30,9 @@ main (void)
case 128 >> (4 + 1):
return 1;
}
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=undefined" } */
+#include <stdio.h>
+
int
foo (int x, int y)
{
@@ -19,7 +21,13 @@ bar (int x, int y)
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
foo (3, 2);
bar (12, 42);
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,9 +1,13 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=vla-bound -Wall -Wno-unused-variable" } */
+#include <stdio.h>
+
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
const int t = 0;
struct s {
int x;
@@ -11,5 +15,8 @@ main (void)
int g[t];
};
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=vla-bound" } */
+#include <stdio.h>
+
/* Don't instrument the arrays here. */
int
foo (int n, int a[])
@@ -11,6 +13,13 @@ foo (int n, int a[])
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
int a[6] = { };
- return foo (3, a);
+ int ret = foo (3, a);
+
+ fputs ("UBSAN TEST END\n", stderr);
+ return ret;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,13 +1,21 @@
/* { dg-do run } */
/* { dg-options "-fsanitize=vla-bound" } */
+#include <stdio.h>
+
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
int x = 1;
/* Check that the size of an array is evaluated only once. */
int a[++x];
if (x != 2)
__builtin_abort ();
+
+ fputs ("UBSAN TEST END\n", stderr);
return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,9 +1,18 @@
/* { dg-do run { target c++11 } } */
/* { dg-options "-fsanitize=shift -w" } */
+#include <stdio.h>
+
int
main (void)
{
+ fputs ("UBSAN TEST START\n", stderr);
+
int a = 1;
a <<= 31;
+
+ fputs ("UBSAN TEST END\n", stderr);
+ return 0;
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */
@@ -1,6 +1,8 @@
// { dg-do run }
// { dg-options "-fsanitize=return" }
+#include <stdio.h>
+
struct S { S (); ~S (); };
S::S () {}
@@ -20,6 +22,12 @@ foo (int x)
int
main ()
{
+ fputs ("UBSAN TEST START\n", stderr);
+
foo (1);
foo (14);
+
+ fputs ("UBSAN TEST END\n", stderr);
}
+
+/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */