diff mbox

[MPX,wrappers,3/3] Tests

Message ID 20141114173118.GC20207@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Ilya Enkovich Nov. 14, 2014, 5:31 p.m. UTC
Hi,

Here are few tests for MPX wrappers.  Will add more in case patches #1,2 are OK.

Thanks,
Ilya
--
2014-11-14  Ilya Enkovich  <ilya.enkovich@intel.com>

	* lib/mpx-dg.exp (mpx_link_flags): Set path to wrappers library.
	* gcc.target/i386/mpx/calloc-1-lbv.c: New.
	* gcc.target/i386/mpx/calloc-1-ubv.c: New.
	* gcc.target/i386/mpx/calloc-1-nov.c: New.
	* gcc.target/i386/mpx/malloc-1-lbv.c: New.
	* gcc.target/i386/mpx/malloc-1-nov.c: New.
	* gcc.target/i386/mpx/malloc-1-ubv.c: New.
	* gcc.target/i386/mpx/mmap-1-lbv.c: New.
	* gcc.target/i386/mpx/mmap-1-nov.c: New.
	* gcc.target/i386/mpx/mmap-1-ubv.c: New.

Comments

Jeff Law Dec. 1, 2014, 9:19 p.m. UTC | #1
On 11/14/14 10:31, Ilya Enkovich wrote:
> Hi,
>
> Here are few tests for MPX wrappers.  Will add more in case patches #1,2 are OK.
>
> Thanks,
> Ilya
> --
> 2014-11-14  Ilya Enkovich  <ilya.enkovich@intel.com>
>
> 	* lib/mpx-dg.exp (mpx_link_flags): Set path to wrappers library.
> 	* gcc.target/i386/mpx/calloc-1-lbv.c: New.
> 	* gcc.target/i386/mpx/calloc-1-ubv.c: New.
> 	* gcc.target/i386/mpx/calloc-1-nov.c: New.
> 	* gcc.target/i386/mpx/malloc-1-lbv.c: New.
> 	* gcc.target/i386/mpx/malloc-1-nov.c: New.
> 	* gcc.target/i386/mpx/malloc-1-ubv.c: New.
> 	* gcc.target/i386/mpx/mmap-1-lbv.c: New.
> 	* gcc.target/i386/mpx/mmap-1-nov.c: New.
> 	* gcc.target/i386/mpx/mmap-1-ubv.c: New.
OK once prerequisites are approved.

jeff
diff mbox

Patch

diff --git a/gcc/testsuite/gcc.target/i386/mpx/calloc-1-lbv.c b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-lbv.c
new file mode 100644
index 0000000..0ba5d73
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-lbv.c
@@ -0,0 +1,26 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)calloc (100, sizeof(int));
+
+  rd (buf, -1);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/calloc-1-nov.c b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-nov.c
new file mode 100644
index 0000000..cb755e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-nov.c
@@ -0,0 +1,24 @@ 
+/* { dg-do run } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)calloc (100, sizeof(int));
+
+  rd (buf, 0);
+  rd (buf, 99);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/calloc-1-ubv.c b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-ubv.c
new file mode 100644
index 0000000..a932a8c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/calloc-1-ubv.c
@@ -0,0 +1,26 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)calloc (100, sizeof(int));
+
+  rd (buf, 100);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/malloc-1-lbv.c b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-lbv.c
new file mode 100644
index 0000000..aa2aed9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-lbv.c
@@ -0,0 +1,26 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+
+  rd (buf, -1);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/malloc-1-nov.c b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-nov.c
new file mode 100644
index 0000000..56f26e9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-nov.c
@@ -0,0 +1,24 @@ 
+/* { dg-do run } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+
+  rd (buf, 0);
+  rd (buf, 99);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/malloc-1-ubv.c b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-ubv.c
new file mode 100644
index 0000000..6f48ec2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/malloc-1-ubv.c
@@ -0,0 +1,26 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+
+  rd (buf, 100);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-1-lbv.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-lbv.c
new file mode 100644
index 0000000..961196f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-lbv.c
@@ -0,0 +1,27 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 200 * sizeof(int));
+
+  rd (buf, -1);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-1-nov.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-nov.c
new file mode 100644
index 0000000..f4b3dd8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-nov.c
@@ -0,0 +1,25 @@ 
+/* { dg-do run } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 200 * sizeof(int));
+
+  rd (buf, 0);
+  rd (buf, 199);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-1-ubv.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-ubv.c
new file mode 100644
index 0000000..8a14baa
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-1-ubv.c
@@ -0,0 +1,27 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 200 * sizeof(int));
+
+  rd (buf, 200);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-2-lbv.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-lbv.c
new file mode 100644
index 0000000..919f62a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-lbv.c
@@ -0,0 +1,27 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 10 * sizeof(int));
+
+  rd (buf, -1);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-2-nov.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-nov.c
new file mode 100644
index 0000000..569cd24
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-nov.c
@@ -0,0 +1,25 @@ 
+/* { dg-do run } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 10 * sizeof(int));
+
+  rd (buf, 0);
+  rd (buf, 9);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/realloc-2-ubv.c b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-ubv.c
new file mode 100644
index 0000000..36eb90c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/realloc-2-ubv.c
@@ -0,0 +1,27 @@ 
+/* { dg-do run } */
+/* { dg-shouldfail "bounds violation" } */
+/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
+
+
+#define SHOULDFAIL
+
+#include "mpx-check.h"
+
+int rd (int *p, int i)
+{
+  int res = p[i];
+  printf ("%d\n", res);
+  return res;
+}
+
+int mpx_test (int argc, const char **argv)
+{
+  int *buf = (int *)malloc (100 * sizeof(int));
+  buf = (int *)realloc (buf, 10 * sizeof(int));
+
+  rd (buf, 10);
+
+  free (buf);
+
+  return 0;
+}
diff --git a/gcc/testsuite/lib/mpx-dg.exp b/gcc/testsuite/lib/mpx-dg.exp
index ddedf09..b2fcce6 100644
--- a/gcc/testsuite/lib/mpx-dg.exp
+++ b/gcc/testsuite/lib/mpx-dg.exp
@@ -47,6 +47,14 @@  proc mpx_link_flags { paths } {
 	  append flags " -L${gccpath}/libmpx/mpxrt/.libs "
 	  append ld_library_path ":${gccpath}/libmpx/mpxrt/.libs"
       }
+
+      if { [file exists "${gccpath}/libmpx/mpxwrap/.libs/libmpxwrappers.a"]
+	   || [file exists "${gccpath}/libmpx/mpxwrap/.libs/libmpxwrappers.${shlib_ext}"] } {
+	  append flags " -B${gccpath}/libmpx/ "
+	  append flags " -B${gccpath}/libmpx/mpxwrap "
+	  append flags " -L${gccpath}/libmpx/mpxwrap/.libs "
+	  append ld_library_path ":${gccpath}/libmpx/mpxwrap/.libs"
+      }
     } else {
       global tool_root_dir
 
@@ -55,6 +63,12 @@  proc mpx_link_flags { paths } {
 	  append flags "-L${libmpx} "
 	  append ld_library_path ":${libmpx}"
       }
+
+      set libmpxwrappers [lookfor_file ${tool_root_dir} libmpxwrappers]
+      if { $libmpxwrappers != "" } {
+	  append flags "-L${libmpxwrappers} "
+	  append ld_library_path ":${libmpxwrappers}"
+      }
     }
 
     set_ld_library_path_env_vars