]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Update libvtv testsuite so that most of the tests now run under
authorCaroline Tice <cmtice@google.com>
Sun, 8 Sep 2013 23:35:14 +0000 (16:35 -0700)
committerCaroline Tice <ctice@gcc.gnu.org>
Sun, 8 Sep 2013 23:35:14 +0000 (16:35 -0700)
the dejagnu test harness.

From-SVN: r202373

66 files changed:
libvtv/ChangeLog
libvtv/testsuite/Makefile.am
libvtv/testsuite/Makefile.in
libvtv/testsuite/config/default.exp [new file with mode: 0644]
libvtv/testsuite/event.list [deleted file]
libvtv/testsuite/lib/libvtv-dg.exp [new file with mode: 0644]
libvtv/testsuite/lib/libvtv.exp [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/bb_tests.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/const_vtable.cc [moved from libvtv/testsuite/const_vtable.cc with 98% similarity]
libvtv/testsuite/libvtv.cc/dataentry.cc [moved from libvtv/testsuite/dataentry.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/derived-lib.cpp [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/derived-main.cpp [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/derived.list [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/dup_name.cc [moved from libvtv/testsuite/dup_name.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/environment.cc [moved from libvtv/testsuite/environment.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/event-defintions.cpp [moved from libvtv/testsuite/event-definitions.cc with 100% similarity]
libvtv/testsuite/libvtv.cc/event-main.cpp [moved from libvtv/testsuite/event-main.cc with 90% similarity]
libvtv/testsuite/libvtv.cc/event-private.cpp [moved from libvtv/testsuite/event-private.cc with 100% similarity]
libvtv/testsuite/libvtv.cc/event-private.h [moved from libvtv/testsuite/event-private.h with 100% similarity]
libvtv/testsuite/libvtv.cc/event.h [moved from libvtv/testsuite/event.h with 100% similarity]
libvtv/testsuite/libvtv.cc/event.list [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/mul_inh.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/nested_vcall_test.cc [moved from libvtv/testsuite/nested_vcall_test.cc with 98% similarity]
libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.cpp [moved from libvtv/testsuite/parts-test-extra-parts-views.cc with 100% similarity]
libvtv/testsuite/libvtv.cc/parts-test-extra-parts-views.h [moved from libvtv/testsuite/parts-test-extra-parts-views.h with 100% similarity]
libvtv/testsuite/libvtv.cc/parts-test-extra-parts.cpp [moved from libvtv/testsuite/parts-test-extra-parts.cc with 100% similarity]
libvtv/testsuite/libvtv.cc/parts-test-extra-parts.h [moved from libvtv/testsuite/parts-test-extra-parts.h with 100% similarity]
libvtv/testsuite/libvtv.cc/parts-test-main.cpp [moved from libvtv/testsuite/parts-test-main.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/parts-test-main.h [moved from libvtv/testsuite/parts-test-main.h with 100% similarity]
libvtv/testsuite/libvtv.cc/parts-test.list [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/povray-derived.cc [moved from libvtv/testsuite/povray-derived.cc with 98% similarity]
libvtv/testsuite/libvtv.cc/register_set_pair.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/template-list-iostream.cc [moved from libvtv/testsuite/template-list-iostream.cc with 99% similarity]
libvtv/testsuite/libvtv.cc/template-list.cc [moved from libvtv/testsuite/template-list.cc with 99% similarity]
libvtv/testsuite/libvtv.cc/template-list2.cc [moved from libvtv/testsuite/template-list2.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/test1.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/thunk.cc [moved from libvtv/testsuite/thunk.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc [moved from libvtv/testsuite/thunk_vtable_map_attack.cc with 99% similarity]
libvtv/testsuite/libvtv.cc/v8-test-2.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/virtfunc-test.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/virtual_inheritance.cc [moved from libvtv/testsuite/virtual_inheritance.cc with 97% similarity]
libvtv/testsuite/libvtv.cc/vtv.exp [new file with mode: 0644]
libvtv/testsuite/libvtv.cc/xlan-test.cc [new file with mode: 0644]
libvtv/testsuite/libvtv.mempool.cc/mempool.exp [new file with mode: 0644]
libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc [moved from libvtv/testsuite/mempool_negative.c with 94% similarity]
libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc [moved from libvtv/testsuite/mempool_positive.c with 96% similarity]
libvtv/testsuite/libvtv.mt.cc/mt.exp [new file with mode: 0644]
libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc [moved from libvtv/testsuite/register_pair_inserts_mt.cc with 60% similarity]
libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc [moved from libvtv/testsuite/register_pair_mt.cc with 59% similarity]
libvtv/testsuite/other-tests/Makefile.am [new file with mode: 0644]
libvtv/testsuite/other-tests/Makefile.in [new file with mode: 0644]
libvtv/testsuite/other-tests/README [new file with mode: 0644]
libvtv/testsuite/other-tests/dlopen.cc [moved from libvtv/testsuite/dlopen.cc with 100% similarity]
libvtv/testsuite/other-tests/dlopen_mt.cc [moved from libvtv/testsuite/dlopen_mt.cc with 100% similarity]
libvtv/testsuite/other-tests/environment-fail-32.s [moved from libvtv/testsuite/environment-fail-32.s with 100% similarity]
libvtv/testsuite/other-tests/environment-fail-64.s [moved from libvtv/testsuite/environment-fail-64.s with 100% similarity]
libvtv/testsuite/other-tests/field-test.cc [moved from libvtv/testsuite/field-test.cc with 100% similarity]
libvtv/testsuite/other-tests/replace-fail.cc [moved from libvtv/testsuite/replace-fail.cc with 100% similarity]
libvtv/testsuite/other-tests/so.cc [moved from libvtv/testsuite/so.cc with 100% similarity]
libvtv/testsuite/other-tests/temp_deriv.cc [moved from libvtv/testsuite/temp_deriv.cc with 100% similarity]
libvtv/testsuite/other-tests/temp_deriv2.cc [moved from libvtv/testsuite/temp_deriv2.cc with 100% similarity]
libvtv/testsuite/other-tests/temp_deriv3.cc [moved from libvtv/testsuite/temp_deriv3.cc with 100% similarity]
libvtv/testsuite/parts-test.list [deleted file]
libvtv/testsuite/register_pair.cc [deleted file]
libvtv/testsuite/register_pair_inserts.cc [deleted file]

index 265a861e8f91f65db539381b19bc63cdbe97bda1..20092f4d0a3ae148f72e8c2866bda5415bce9747 100644 (file)
@@ -1,3 +1,84 @@
+2013-09-08  Caroline Tice  <cmtice@google.com>
+
+       * testsuite/event-main.cc:  Move to libvtv.cc subdirectory.
+       * testsuite/environment.cc: Ditto.
+       * testsuite/template-list2.cc: Ditto.
+       * testsuite/event.h: Ditto.
+       * testsuite/dataentry.cc: Ditto.
+       * testsuite/event-private.h: Ditto.
+       * testsuite/virtual_inheritance.cc: Ditto.
+       * testsuite/povray-derived.cc: Ditto.
+       * testsuite/nested_vcall_test.cc: Ditto.
+       * testsuite/template-list-iostream.cc: Ditto.
+       * testsuite/parts-test-extra-parts-views.h:  Ditto.
+       * testsuite/virtfunc-test.cc: Ditto.
+       * testsuite/parts-test-extra-parts.h: Ditto.
+       * testsuite/const_vtable.cc: Ditto.
+       * testsuite/template-list.cc: Ditto.
+       * testsuite/dup_name.cc: Ditto.
+       * testsuite/thunk.cc: Ditto.
+       * testsuite/parts-test-main.h: Ditto.
+       * testsuite/mul_inh.cc: Ditto.
+       * testsuite/test1.cc: Ditto.
+       * testsuite/bb_tests.cc: Ditto.
+       * testsuite/v8-test-2.cc: Ditto.
+       * testsuite/thunk_vtable_map_attack.cc: Ditto.
+       * testsuite/xlan-test.cc: Ditto.
+       * testsuite/parts-test-main.cpp: Move to libvtv.cc subdirectory and
+       change file extension from .cc to .cpp.
+       * testsuite/event-definitions.cpp: Ditto.
+       * testsuite/event-main.cpp: Ditto.
+       * testsuite/derived-main.cpp: Ditto.
+       * testsuite/derived-lib.cpp: Ditto.
+       * testsuite/event-private.cpp: Ditto.
+       * testsuite/parts-test-extra-parts-views.cpp: Ditto.
+       * testsuite/parts-test-extra-parts.cpp: Ditto.
+       * testsuite/parts-test.list: Move to libvtv.cc subdirectory.  Change
+       file extensions inside file from .cc to .cpp.
+       * testsuite/event.list: Ditto.
+       * testsuite/derived.list: Ditto.
+       * testsuite/register_pair.cc: Move to libvtv.cc; rename file to
+       register_set_pair.cc; include stdlib.h, stdio.h stdint.h string.h
+       (KEY_TYPE_FIXED_SIZE): New define.
+       (key_buffer, name_string, fake_names): New global variables.
+       (generate_names): New function.
+       (vtv_string_hans): New function.
+       (main): Add call to generate_names. Update middle for-loop to
+       initialize new parameters for __VLTRegisterPair... calls; move calls
+       to __VLTRegisterPair... to middle for-loop. Add calls to
+       __VLTRegisterSet...
+       * testsuite/register_pair_mt.cc: Ditto; renamed to
+       register_set_pair_mt.cc
+       * testsuite/libvtv.cc/vtv.exp:  New file.
+       * testsuite/libvtv.mempool.cc/mempool.exp:  New file.
+       * testsuite/libvtv.mt.cc/mt.exp: New file.
+       * testsuite/lib/libvtv.exp:  New file.
+       * testsuite/lib/libvtv-dg.exp:  New file.
+       * testsuite/config/default.exp: New file.
+       * testsuite/Makefile.am:  New file. (Old file was moved to other-tests
+       subdirectory.)
+       * testsuite/Makefile.in: New file (generated).
+       * testsuite/mempool_negative.c: Change to C++ file; move to
+       libvtv.mempool.cc; include vtv-change-permission.h.
+       (main):  Add call to __VLTChangePermission.
+       * testsuite/mempool_positive.c: Change to C++ file; move to
+       libvtv.mempool.cc; include vtv-change-permission.h.
+       (main): Add call to __VLTChangePermission.
+       * testsuite/temp_deriv3.cc:  Move to other-tests subdirectory.
+       * testsuite/environment-fail-64.s: Ditto.
+       * testsutite/dlopen.cc: Ditto.
+       * testsuite/so.cc: Ditto.
+       * testsuite/temp_deriv2.cc: Ditto.
+       * testsuite/field-test.cc: Ditto.
+       * testsuite/dlopen_mt.cc: Ditto.
+       * testsuite/environment-fail-32.s: Ditto.
+       * testsuite/temp_deriv.cc: Ditto.
+       * testsuite/replace-fail.cc: Ditto.
+       * testsuite/other-tests/Makefile.am:  New file.  Copied from the
+       Makefile.am that used to be in testsuite directory.
+       * testsuite/other-tests/Makefile.in: Generated. (New file).
+       * testsuite/other-tests/README:  New file.
+
 2013-09-07  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * testsuite/Makefile.am: Remove #if ENABLE_VTABLE_VERIFY check around
index 56f76a79f5bbcd2ae9039e52d7c319bf49e7da65..a2c1e9f4ea311e7ad5489a26137a95be8c5ba771 100644 (file)
@@ -1,52 +1,11 @@
-## Makefile for the testsuite subdirectory of the VTV library.
-##
-## Copyright (C) 2013 Free Software Foundation, Inc.
-##
-## Process this file with automake to produce Makefile.in.
-##
-## This file is part of the Vtable Verification (VTV) Library.  This
-## library 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, or (at your option)
-## any later version.
+## Process this with automake to create Makefile.in
 
-## This library 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.
+AUTOMAKE_OPTIONS = foreign dejagnu
 
-## You should have received a copy of the GNU General Public License
-## along with this library; see the file COPYING3.  If not see
-## <http://www.gnu.org/licenses/>.
+EXPECT = `if [ -f ../../expect/expect ] ; then \
+         echo ../../expect/expect ; \
+         else echo expect ; fi`
 
-AUTOMAKE_OPTIONS = nostdinc
-
-# Runs the testsuite via a script.
-
-# Create subdirectories.
-stamp-subdir:
-       if test ! -d lib64; then \
-         mkdir -p lib64; \
-       fi; \
-       if test ! -d lib32; then \
-         mkdir -p lib32; \
-       fi; \
-       echo `date` > stamp-subdir;
-
-
-testing_script=${libvtv_srcdir}/scripts/run-testsuite.sh
-check-script: ${testing_script} stamp-subdir
-       -@(chmod +x ${testing_script}; \
-       ${testing_script} ${libvtv_srcdir} ${libvtv_builddir})
-
-check-am:
-       $(MAKE) $(AM_MAKEFLAGS) check-script
-
-.PHONY: check-script
-
-# By adding these files here, automake will remove them for 'make clean'
-CLEANFILES = *.out environment-fail-*  stamp-* replace-fail-*
-
-# To remove directories.
-clean-local:
-       rm -rf lib*
+RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \
+          echo ${srcdir}/../../dejagnu/runtest ; \
+          else echo runtest ;  fi`
index 66a75e16ea65a03e5a986c3155ea1d73636e407b..ba28e744f95aadd4b3cb6a623ab30979e0eb6317 100644 (file)
@@ -53,6 +53,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
+DEJATOOL = $(PACKAGE)
+RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
 AR = @AR@
@@ -190,11 +192,15 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 toplevel_builddir = @toplevel_builddir@
 toplevel_srcdir = @toplevel_srcdir@
-AUTOMAKE_OPTIONS = nostdinc
-testing_script = ${libvtv_srcdir}/scripts/run-testsuite.sh
+AUTOMAKE_OPTIONS = foreign dejagnu
+EXPECT = `if [ -f ../../expect/expect ] ; then \
+         echo ../../expect/expect ; \
+         else echo expect ; fi`
+
+RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \
+          echo ${srcdir}/../../dejagnu/runtest ; \
+          else echo runtest ;  fi`
 
-# By adding these files here, automake will remove them for 'make clean'
-CLEANFILES = *.out environment-fail-*  stamp-* replace-fail-*
 all: all-am
 
 .SUFFIXES:
@@ -240,7 +246,46 @@ TAGS:
 ctags: CTAGS
 CTAGS:
 
+
+check-DEJAGNU: site.exp
+       srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+       EXPECT=$(EXPECT); export EXPECT; \
+       runtest=$(RUNTEST); \
+       if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+         exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
+           if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
+           then :; else exit_status=1; fi; \
+         done; \
+       else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+       fi; \
+       exit $$exit_status
+site.exp: Makefile
+       @echo 'Making a new site.exp file...'
+       @echo '## these variables are automatically generated by make ##' >site.tmp
+       @echo '# Do not edit here.  If you wish to override these values' >>site.tmp
+       @echo '# edit the last section' >>site.tmp
+       @echo 'set srcdir $(srcdir)' >>site.tmp
+       @echo "set objdir `pwd`" >>site.tmp
+       @echo 'set build_alias "$(build_alias)"' >>site.tmp
+       @echo 'set build_triplet $(build_triplet)' >>site.tmp
+       @echo 'set host_alias "$(host_alias)"' >>site.tmp
+       @echo 'set host_triplet $(host_triplet)' >>site.tmp
+       @echo 'set target_alias "$(target_alias)"' >>site.tmp
+       @echo 'set target_triplet $(target_triplet)' >>site.tmp
+       @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+       @test ! -f site.exp || \
+         sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+       @-rm -f site.bak
+       @test ! -f site.exp || mv site.exp site.bak
+       @mv site.tmp site.exp
+
+distclean-DEJAGNU:
+       -rm -f site.exp site.bak
+       -l='$(DEJATOOL)'; for tool in $$l; do \
+         rm -f $$tool.sum $$tool.log; \
+       done
 check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
 check: check-am
 all-am: Makefile
 installdirs:
@@ -261,7 +306,6 @@ install-strip:
 mostlyclean-generic:
 
 clean-generic:
-       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -272,11 +316,11 @@ maintainer-clean-generic:
        @echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-DEJAGNU distclean-generic
 
 dvi: dvi-am
 
@@ -336,43 +380,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       clean-local distclean distclean-generic distclean-libtool dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
-
-
-# Runs the testsuite via a script.
-
-# Create subdirectories.
-stamp-subdir:
-       if test ! -d lib64; then \
-         mkdir -p lib64; \
-       fi; \
-       if test ! -d lib32; then \
-         mkdir -p lib32; \
-       fi; \
-       echo `date` > stamp-subdir;
-check-script: ${testing_script} stamp-subdir
-       -@(chmod +x ${testing_script}; \
-       ${testing_script} ${libvtv_srcdir} ${libvtv_builddir})
-
-check-am:
-       $(MAKE) $(AM_MAKEFLAGS) check-script
+.MAKE: check-am install-am install-strip
 
-.PHONY: check-script
+.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
+       clean-libtool distclean distclean-DEJAGNU distclean-generic \
+       distclean-libtool dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am
 
-# To remove directories.
-clean-local:
-       rm -rf lib*
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/libvtv/testsuite/config/default.exp b/libvtv/testsuite/config/default.exp
new file mode 100644 (file)
index 0000000..6d5eba8
--- /dev/null
@@ -0,0 +1,17 @@
+#   Copyright (C) 2013 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 GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+load_lib "standard.exp"
diff --git a/libvtv/testsuite/event.list b/libvtv/testsuite/event.list
deleted file mode 100644 (file)
index 83226fd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-event-main.cc event-definitions.cc event-private.cc
\ No newline at end of file
diff --git a/libvtv/testsuite/lib/libvtv-dg.exp b/libvtv/testsuite/lib/libvtv-dg.exp
new file mode 100644 (file)
index 0000000..b140c19
--- /dev/null
@@ -0,0 +1,21 @@
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+proc libvtv-dg-test { prog do_what extra_tool_flags } {
+    return [gcc-dg-test-1 libvtv_target_compile $prog $do_what $extra_tool_flags]
+}
+
+proc libvtv-dg-prune { system text } {
+    return [gcc-dg-prune $system $text]
+}
diff --git a/libvtv/testsuite/lib/libvtv.exp b/libvtv/testsuite/lib/libvtv.exp
new file mode 100644 (file)
index 0000000..83674be
--- /dev/null
@@ -0,0 +1,220 @@
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Damn dejagnu for not having proper library search paths for load_lib.
+# We have to explicitly load everything that gcc-dg.exp wants to load.
+
+proc load_gcc_lib { filename } {
+    global srcdir loaded_libs
+
+    load_file $srcdir/../../gcc/testsuite/lib/$filename
+    set loaded_libs($filename) ""
+}
+
+load_lib dg.exp
+load_gcc_lib file-format.exp
+load_gcc_lib target-supports.exp
+load_gcc_lib target-supports-dg.exp
+load_gcc_lib scanasm.exp
+load_gcc_lib scandump.exp
+load_gcc_lib scanrtl.exp
+load_gcc_lib scantree.exp
+load_gcc_lib scanipa.exp
+load_gcc_lib prune.exp
+load_gcc_lib target-libpath.exp
+load_gcc_lib wrapper.exp
+load_gcc_lib gcc-defs.exp
+load_gcc_lib torture-options.exp
+load_gcc_lib timeout.exp
+load_gcc_lib timeout-dg.exp
+load_gcc_lib fortran-modules.exp
+load_gcc_lib gcc-dg.exp
+
+set dg-do-what-default run
+
+#
+# GCC_UNDER_TEST is the compiler under test.
+#
+
+set libvtv_compile_options ""
+
+#
+# libvtv_init
+#
+
+if [info exists TOOL_OPTIONS] {
+    set multilibs [get_multilibs $TOOL_OPTIONS]
+} else {
+    set multilibs [get_multilibs]
+}
+
+proc libvtv_init { args } {
+    global srcdir blddir objdir tool_root_dir
+    global libvtv_initialized
+    global tmpdir
+    global blddir
+    global gluefile wrap_flags
+    global ALWAYS_CFLAGS
+    global CFLAGS
+    global TOOL_EXECUTABLE TOOL_OPTIONS
+    global GCC_UNDER_TEST
+    global TESTING_IN_BUILD_TREE
+    global target_triplet
+    global always_ld_library_path
+
+    set blddir [lookfor_file [get_multilibs] libvtv]
+
+    # We set LC_ALL and LANG to C so that we get the same error
+    # messages as expected.
+    setenv LC_ALL C
+    setenv LANG C
+
+    if ![info exists GCC_UNDER_TEST] then {
+       if [info exists TOOL_EXECUTABLE] {
+           set GCC_UNDER_TEST $TOOL_EXECUTABLE
+       } else {
+           set GCC_UNDER_TEST "[find_gcc]"
+       }
+    }
+
+    if ![info exists tmpdir] {
+       set tmpdir "/tmp"
+    }
+
+    if [info exists gluefile] {
+       unset gluefile
+    }
+
+    if {![info exists CFLAGS]} {
+       set CFLAGS ""
+    }
+
+    # Locate libgcc.a so we don't need to account for different values of
+    # SHLIB_EXT on different platforms
+    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
+    if {$gccdir != ""} {
+       set gccdir [file dirname $gccdir]
+    }
+
+    # Compute what needs to be put into LD_LIBRARY_PATH
+    set always_ld_library_path ".:${blddir}/.libs"
+
+    # Compute what needs to be added to the existing LD_LIBRARY_PATH.
+    if {$gccdir != ""} {
+       # Add AIX pthread directory first.
+       if { [llength [glob -nocomplain ${gccdir}/pthread/libgcc_s*.a]] >= 1 } {
+           append always_ld_library_path ":${gccdir}/pthread"
+       }
+       append always_ld_library_path ":${gccdir}"
+       set compiler [lindex $GCC_UNDER_TEST 0]
+
+       if { [is_remote host] == 0 && [which $compiler] != 0 } {
+         foreach i "[exec $compiler --print-multi-lib]" {
+           set mldir ""
+           regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir
+           set mldir [string trimright $mldir "\;@"]
+           if { "$mldir" == "." } {
+             continue
+           }
+           if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
+             append always_ld_library_path ":${gccdir}/${mldir}"
+           }
+         }
+       }
+    }
+
+    set ALWAYS_CFLAGS ""
+    if { $blddir != "" } {
+       lappend ALWAYS_CFLAGS "additional_flags=-B${blddir}/"
+       lappend ALWAYS_CFLAGS "additional_flags=-I${blddir}"
+       lappend ALWAYS_CFLAGS "ldflags=-L${blddir}/.libs"
+    }
+    lappend ALWAYS_CFLAGS "additional_flags=-I${srcdir}/.."
+
+    if [istarget *-*-darwin*] {
+       lappend ALWAYS_CFLAGS "additional_flags=-shared-libgcc"
+    }
+
+    if [info exists TOOL_OPTIONS] {
+       lappend ALWAYS_CFLAGS "additional_flags=$TOOL_OPTIONS"
+    }
+
+    # Make sure that lines are not wrapped.  That can confuse the
+    # error-message parsing machinery.
+    lappend ALWAYS_CFLAGS "additional_flags=-fmessage-length=0"
+
+    # Turn on vtable verification
+    lappend ALWAYS_CFLAGS "-fvtable-verify=std"
+    # lappend ALWAYS_CFLAGS "ldflags=-lvtv"
+}
+
+#
+# libvtv_target_compile -- compile a source file
+#
+
+proc libvtv_target_compile { source dest type options } {
+    global blddir
+    global libvtv_compile_options
+    global gluefile wrap_flags
+    global ALWAYS_CFLAGS
+    global GCC_UNDER_TEST
+    global lang_test_file
+    global lang_library_path
+    global lang_link_flags
+
+    if { [info exists lang_test_file] } {
+       if { $blddir != "" } {
+           lappend options "ldflags=-L${blddir}/${lang_library_path}"
+       }
+       lappend options "ldflags=${lang_link_flags}"
+    }
+
+    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
+       lappend options "libs=${gluefile}"
+       lappend options "ldflags=${wrap_flags}"
+    }
+
+    lappend options "additional_flags=[libio_include_flags]"
+    lappend options "timeout=[timeout_value]"
+    lappend options "compiler=$GCC_UNDER_TEST"
+
+    set options [concat $libvtv_compile_options $options]
+
+    if [info exists ALWAYS_CFLAGS] {
+       set options [concat "$ALWAYS_CFLAGS" $options]
+    }
+
+    set options [dg-additional-files-options $options $source]
+
+    set result [target_compile $source $dest $type $options]
+
+    return $result
+}
+
+proc libvtv_option_help { } {
+    send_user " --additional_options,OPTIONS\t\tUse OPTIONS to compile the testcase files. OPTIONS should be comma-separated.\n"
+}
+
+proc libvtv_option_proc { option } {
+    if [regexp "^--additional_options," $option] {
+       global libvtv_compile_options
+       regsub "--additional_options," $option "" option
+       foreach x [split $option ","] {
+           lappend libvtv_compile_options "additional_flags=$x"
+       }
+       return 1
+    } else {
+       return 0
+    }
+}
diff --git a/libvtv/testsuite/libvtv.cc/bb_tests.cc b/libvtv/testsuite/libvtv.cc/bb_tests.cc
new file mode 100644 (file)
index 0000000..2a2447d
--- /dev/null
@@ -0,0 +1,53 @@
+// { dg-do run }
+struct base
+{
+  int total;
+  virtual void add (int i) { total += i; }
+  virtual void sub (int i) { total -= i; }
+  virtual void init (void) { total = 73; }
+};
+
+struct derived : public base
+{
+  int total;
+  virtual void add (int i) { total += 10 * i; }
+  virtual void sub (int i) { total -= 2 * i; }
+  virtual void init (void) { total = 0; }
+};
+
+bool
+get_cond_value (int x)
+{
+  if ((x % 3) > 0)
+    return true;
+  else
+    return false;
+
+  return false;
+}
+
+int
+main (int argc, char **argv)
+{
+  base *a;
+  bool cond_value = get_cond_value (10);
+  int x;
+
+  if (cond_value)
+    a = new base ();
+  else
+    a = new derived ();
+
+  cond_value = get_cond_value (47);
+  x = 0;
+  if (!cond_value)
+    x = 17;
+
+  a->init ();
+
+  for ( ; x < 10; ++x)
+    {
+      a->add(50);
+      a->sub(25);
+    }
+}
similarity index 98%
rename from libvtv/testsuite/const_vtable.cc
rename to libvtv/testsuite/libvtv.cc/const_vtable.cc
index a0946abf4fe22f5401360380c2db330ccc8ab6ce..3229f00830824527ba4763206a0e6edffeec81f4 100644 (file)
@@ -1,3 +1,4 @@
+// { dg-do run }
 extern "C" int printf(const char *,...); 
 struct V1 {
   int v; 
similarity index 97%
rename from libvtv/testsuite/dataentry.cc
rename to libvtv/testsuite/libvtv.cc/dataentry.cc
index fa027d5bc71bc4e25e0ca1cb861d6653cc5b65ab..6246136e521a9bf708584e8cb034d4c91b6501bd 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 template<int patch_dim, int patch_space_dim>
 class DataOutInterface
 {
diff --git a/libvtv/testsuite/libvtv.cc/derived-lib.cpp b/libvtv/testsuite/libvtv.cc/derived-lib.cpp
new file mode 100644 (file)
index 0000000..375dbe4
--- /dev/null
@@ -0,0 +1,18 @@
+#include "lib.h"
+
+struct Derived_Private : public Base
+{
+  virtual ~Derived_Private() 
+  { printf("in Derived_Private destructor\n"); }
+};
+
+Base * GetPrivate()
+{
+  return new Derived_Private();
+}
+
+void Destroy(Base * pb)
+{
+  delete pb;   // Virtual call #1
+}
+
diff --git a/libvtv/testsuite/libvtv.cc/derived-main.cpp b/libvtv/testsuite/libvtv.cc/derived-main.cpp
new file mode 100644 (file)
index 0000000..0933ff6
--- /dev/null
@@ -0,0 +1,18 @@
+// { dg-do run }
+
+#include "lib.h"
+
+struct Derived: public Base 
+{
+  virtual ~Derived() 
+  { printf("In Derived destructor\n"); }
+};
+
+int main()
+{
+  Derived * d = new Derived;
+  Destroy(d);
+  Base * pp = GetPrivate();
+  delete pp;  // Virtual call #2
+}
+
diff --git a/libvtv/testsuite/libvtv.cc/derived.list b/libvtv/testsuite/libvtv.cc/derived.list
new file mode 100644 (file)
index 0000000..6ea3b9c
--- /dev/null
@@ -0,0 +1 @@
+derived-main.cpp derived-lib.cpp
similarity index 97%
rename from libvtv/testsuite/dup_name.cc
rename to libvtv/testsuite/libvtv.cc/dup_name.cc
index f0f1c2a8136b4e9a7b7bcf1dc077961ab25fdb69..d9d02512630da10ea6e7ca14dd8df691c367ca0e 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 
 extern "C" int printf(const char *, ...);
similarity index 97%
rename from libvtv/testsuite/environment.cc
rename to libvtv/testsuite/libvtv.cc/environment.cc
index 83adf53b601949d839ff4e0e981c8638f1b004b3..af1a87752986c4c43ed964878595f497888d323e 100644 (file)
@@ -1,3 +1,4 @@
+// { dg-do run }
 
 extern "C" int printf(const char *, ...);
 
similarity index 90%
rename from libvtv/testsuite/event-main.cc
rename to libvtv/testsuite/libvtv.cc/event-main.cpp
index b031284893427dc37cb0aebd22556c4c92ef0c70..95c4640313adf6feb4c3982e53f13b9468c4e0f3 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include "event-private.h"
 
 template<typename T> void derefIfNotNull(T* ptr)
diff --git a/libvtv/testsuite/libvtv.cc/event.list b/libvtv/testsuite/libvtv.cc/event.list
new file mode 100644 (file)
index 0000000..77606f8
--- /dev/null
@@ -0,0 +1 @@
+event-main.cpp event-definitions.cpp event-private.cpp
\ No newline at end of file
diff --git a/libvtv/testsuite/libvtv.cc/mul_inh.cc b/libvtv/testsuite/libvtv.cc/mul_inh.cc
new file mode 100644 (file)
index 0000000..b32b710
--- /dev/null
@@ -0,0 +1,27 @@
+// { dg-do run }
+
+extern "C" int printf(const char *, ...);
+
+struct A {
+  virtual ~A() {}
+};
+
+struct B {
+  virtual ~B() {}
+};
+
+struct C: public A {
+  virtual ~C() {}
+};
+
+struct D: public C, B {
+  virtual ~D() {}
+};
+
+D d;
+
+int main()
+{
+  printf ("%p\n", &d);
+  return 0;
+}
similarity index 98%
rename from libvtv/testsuite/nested_vcall_test.cc
rename to libvtv/testsuite/libvtv.cc/nested_vcall_test.cc
index 13d7143edf86573e653d92d395b541c80cf88cc4..9d1a9c692da5911cfd2b0907f33100726f9e9342 100644 (file)
@@ -1,3 +1,4 @@
+// { dg-do run }
 
 class EtherCtrl {
  protected:
similarity index 97%
rename from libvtv/testsuite/parts-test-main.cc
rename to libvtv/testsuite/libvtv.cc/parts-test-main.cpp
index c90901e79197bfa49699bbb97f8894d26549f99e..a0cc721abf5860200d41fc87ca069a0f3aebb2f8 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include "parts-test-main.h"
 #include "parts-test-extra-parts-views.h"
 
diff --git a/libvtv/testsuite/libvtv.cc/parts-test.list b/libvtv/testsuite/libvtv.cc/parts-test.list
new file mode 100644 (file)
index 0000000..11a959a
--- /dev/null
@@ -0,0 +1 @@
+parts-test-main.cpp parts-test-extra-parts.cpp parts-test-extra-parts-views.cpp
similarity index 98%
rename from libvtv/testsuite/povray-derived.cc
rename to libvtv/testsuite/libvtv.cc/povray-derived.cc
index 4f56a3d730fb14c4de14bf2a8275ba1e8cc01988..9005826dff4464f6078b25b4e9c60667859aec28 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 // Small test case from povray, see if it reproduces.
 
 #include <stdio.h>
diff --git a/libvtv/testsuite/libvtv.cc/register_set_pair.cc b/libvtv/testsuite/libvtv.cc/register_set_pair.cc
new file mode 100644 (file)
index 0000000..b7f0833
--- /dev/null
@@ -0,0 +1,101 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "vtv_utils.h"
+#include "vtv_rts.h"
+
+/* This configuration will test mostly inserting of elements that are already inserted since 
+   the number of repeats is 200 */
+
+#define NUM_MAPS 4000
+#define ELEMENTS_PER_MAP 100
+#define NUM_REPEATS 200
+
+#define KEY_TYPE_FIXED_SIZE 8
+void *key_buffer = malloc (17);
+typedef char * name_string;
+name_string fake_names[NUM_MAPS];
+
+/* This variable has to be put in rel.ro */
+void * maps[NUM_MAPS] VTV_PROTECTED_VAR;
+
+struct fake_vt {
+  void * fake_vfp [4];
+};
+void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
+
+void
+generate_names (void)
+{
+  int i;
+
+  for (i = 0; i < NUM_MAPS; ++i)
+    {
+      fake_names[i] = (char *) malloc (9 * sizeof (char));
+      snprintf (fake_names[i], 9, "name%d", i);
+    }
+}
+
+static uint32_t
+vtv_string_hash(const char *in)
+{
+  const char *s = in;
+  uint32_t h = 0;
+
+  for ( ; *s; ++s)
+    h = 5 * h + *s;
+  return h;
+}
+
+int main()
+{
+  __VLTChangePermission(__VLTP_READ_WRITE);
+
+  generate_names ();
+
+  for (int k = 0; k < NUM_REPEATS; k++)
+    {
+      int curr_fake_vt = 0;
+      for (int i = 0; i < NUM_MAPS; i++)
+       {
+         uint32_t *value_ptr = (uint32_t *) key_buffer;
+         uint32_t len1 = strlen (fake_names[i]);
+         uint32_t hash_value = vtv_string_hash (fake_names[i]);
+         void *temp_array[ELEMENTS_PER_MAP];
+
+         *value_ptr = len1;
+         value_ptr++;
+         *value_ptr = hash_value;
+         
+         memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
+                 len1);
+
+
+#ifdef VTV_DEBUG
+      __VLTRegisterPairDebug (&maps[i], (char *) key_buffer, 128,
+                             &fake_vts[curr_fake_vt], "", "");
+#else
+      __VLTRegisterPair (&maps[i], (char *) key_buffer, 128,
+                        &fake_vts[curr_fake_vt]);
+#endif
+       for (int j = 0; j < ELEMENTS_PER_MAP; j++)
+         {
+           temp_array[j] = &fake_vts[curr_fake_vt];
+           curr_fake_vt++;
+         }
+#ifdef VTV_DEBUG
+       __VLTRegisterSetDebug (&maps[i], (char *) key_buffer, 128, 100,
+                              (void **) &temp_array);
+#else
+       __VLTRegisterSet (&maps[i], (char *) key_buffer, 128, 100,
+                         (void **) &temp_array);
+#endif
+       }
+    }
+
+  __VLTChangePermission(__VLTP_READ_ONLY);
+  
+  return 0;
+}
diff --git a/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc b/libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc
new file mode 100644 (file)
index 0000000..297e875
--- /dev/null
@@ -0,0 +1,106 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "vtv_utils.h"
+#include "vtv_rts.h"
+
+/* This configuration will test mostly inserting of new elements since 
+   the number of repeats is 1. It should also do a lot of rehashing */
+
+/* This test case may fail depending on the system configuration.
+   Check the value of  /proc/sys/vm/max_map_count and fix by doing
+   Ex: sudo sh -c  "echo 131060 > /proc/sys/vm/max_map_count" */
+
+#define NUM_MAPS 40000
+#define ELEMENTS_PER_MAP 100
+#define NUM_REPEATS 1
+
+#define KEY_TYPE_FIXED_SIZE 8
+void *key_buffer = malloc (17);
+typedef char * name_string;
+name_string fake_names[NUM_MAPS];
+
+/* This variable has to be put in rel.ro */
+void * maps[NUM_MAPS] VTV_PROTECTED_VAR;
+
+struct fake_vt {
+  void * fake_vfp [4];
+};
+void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
+
+
+void
+generate_names (void)
+{
+  int i;
+
+  for (i = 0; i < NUM_MAPS; ++i)
+    {
+      fake_names[i] = (char *) malloc (9 * sizeof (char));
+      snprintf (fake_names[i], 9, "name%d", i);
+    }
+}
+
+static uint32_t
+vtv_string_hash(const char *in)
+{
+  const char *s = in;
+  uint32_t h = 0;
+
+  for ( ; *s; ++s)
+    h = 5 * h + *s;
+  return h;
+}
+
+int main()
+{
+  __VLTChangePermission(__VLTP_READ_WRITE);
+
+  generate_names();
+
+  for (int k = 0; k < NUM_REPEATS; k++)
+    {
+      int curr_fake_vt = 0;
+      for (int i = 0; i < NUM_MAPS; i++)
+       {
+         uint32_t *value_ptr = (uint32_t *) key_buffer;
+         uint32_t len1 = strlen (fake_names[i]);
+         uint32_t hash_value = vtv_string_hash (fake_names[i]);
+         void *temp_array[ELEMENTS_PER_MAP];
+
+         *value_ptr = len1;
+         value_ptr++;
+         *value_ptr = hash_value;
+         
+         memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
+                 len1);
+
+
+#ifdef VTV_DEBUG
+      __VLTRegisterPairDebug (&maps[i], (char *) key_buffer, 128,
+                             &fake_vts[curr_fake_vt], "", "");
+#else
+      __VLTRegisterPair (&maps[i], (char *) key_buffer, 128,
+                        &fake_vts[curr_fake_vt]);
+#endif
+          for (int j = 0; j < ELEMENTS_PER_MAP; j++)
+           {
+           temp_array[j] = &fake_vts[curr_fake_vt];
+             curr_fake_vt++;
+           }
+#ifdef VTV_DEBUG
+       __VLTRegisterSetDebug (&maps[i], (char *) key_buffer, 128, 100,
+                              (void **) &temp_array);
+#else
+       __VLTRegisterSet (&maps[i], (char *) key_buffer, 128, 100,
+                         (void **) &temp_array);
+#endif
+       }
+    }
+
+  __VLTChangePermission(__VLTP_READ_ONLY);
+
+  return 0;
+}
similarity index 99%
rename from libvtv/testsuite/template-list-iostream.cc
rename to libvtv/testsuite/libvtv.cc/template-list-iostream.cc
index a35fd308382dfced51b8b91f1cd42ef29ce76b5a..06ec3b01e102eb9635e36fefcd4bf8c3bba9e584 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 #include <iostream>
 #include <fstream>
similarity index 99%
rename from libvtv/testsuite/template-list.cc
rename to libvtv/testsuite/libvtv.cc/template-list.cc
index 95233f87765601b07ae83e4e974bc57af9e96a77..aeb2db9e52671e2cf3a46d083f4cf60da6a6031a 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 
 extern "C" int printf(const char *, ...);
similarity index 97%
rename from libvtv/testsuite/template-list2.cc
rename to libvtv/testsuite/libvtv.cc/template-list2.cc
index f8ec739b6d5112656e739736ab352b55620ca5d3..3df8d372418660e6f72d5869aa49a28442f033b9 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 
 extern "C" int printf(const char *, ...);
diff --git a/libvtv/testsuite/libvtv.cc/test1.cc b/libvtv/testsuite/libvtv.cc/test1.cc
new file mode 100644 (file)
index 0000000..9005826
--- /dev/null
@@ -0,0 +1,74 @@
+// { dg-do run }
+
+// Small test case from povray, see if it reproduces.
+
+#include <stdio.h>
+
+class POVMS_MessageReceiver
+{
+
+private:
+   int x;
+   class Handler
+   {
+      public:
+         virtual void print() = 0;
+   };
+protected:
+   template<class T> class MemberHandler : public Handler
+   {
+   public:
+      MemberHandler(T *xx)
+      {
+        x = xx;
+      }
+         
+      ~MemberHandler() {}
+    
+      void print()
+      {
+         printf("In print\n");
+      }
+  private:
+      T *x;
+   };
+
+private:
+   struct HandlerNode
+   {
+      Handler *handler;
+   };
+
+   HandlerNode *receiver;
+public:
+   POVMS_MessageReceiver(int xx) : x(xx) {}
+   ~POVMS_MessageReceiver() {}
+
+   void foo(int *xx);
+   void try_call();
+};
+
+void POVMS_MessageReceiver::foo(int *xx)
+{
+   receiver = new HandlerNode;
+
+   receiver->handler = new MemberHandler<int>(xx);
+}
+
+void POVMS_MessageReceiver::try_call()
+{
+   receiver->handler->print();
+}
+
+
+int main()
+{
+   int loc = 34;
+   POVMS_MessageReceiver a_test(100);
+
+   a_test.foo(&loc);
+   a_test.try_call();
+}
+
+
+
similarity index 97%
rename from libvtv/testsuite/thunk.cc
rename to libvtv/testsuite/libvtv.cc/thunk.cc
index 6ab81a0dfd4f620253eeffdc7c71bbbe4cd1d234..bec1057f564b904a7d3825837debe45adb509400 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 struct A {
   A():value(123) {}
similarity index 99%
rename from libvtv/testsuite/thunk_vtable_map_attack.cc
rename to libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc
index 84d4bbf3257fad9f4e65a9aa8e36d9fb18ad7947..51f974ee4e7c3bdd2801b1766b5104520c39d856 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 #include <signal.h>
 #include <setjmp.h>
diff --git a/libvtv/testsuite/libvtv.cc/v8-test-2.cc b/libvtv/testsuite/libvtv.cc/v8-test-2.cc
new file mode 100644 (file)
index 0000000..6bfda56
--- /dev/null
@@ -0,0 +1,97 @@
+// { dg-do run }
+
+#include <stdlib.h>
+#include <string>
+
+class Literal;
+class CallRuntime;
+
+class AstNode {
+public:
+
+  enum Type {
+    kLiteral, kCallRuntime,
+    kInvalid = -1
+  };
+
+  AstNode() { }
+
+  virtual ~AstNode() { }
+
+  virtual Type node_type() const = 0;
+
+  bool 
+  IsLiteral() { return node_type() == AstNode::kLiteral; } 
+
+  Literal *
+  AsLiteral() { return IsLiteral() ? reinterpret_cast<Literal*>(this)
+                                   : NULL; }
+
+  bool
+  IsCallRuntime() { return node_type() == AstNode::kCallRuntime; }
+
+  CallRuntime *
+  AsCallRuntime() { return IsCallRuntime() ? reinterpret_cast<CallRuntime*>(this)
+                                           : NULL; }
+
+};
+
+class Expression: public AstNode {
+public:
+private:
+  int id_;
+};
+
+class Literal: public Expression {
+public:
+
+  virtual AstNode::Type node_type() const { return AstNode::kLiteral; }
+
+  private:
+  std::string ToString();
+
+};
+
+class CallRuntime: public Expression {
+public:
+
+  virtual AstNode::Type node_type() const { return AstNode::kCallRuntime; }
+
+  private:
+  std::string name_;
+};
+
+Expression *
+ExpressionCheck (bool *ok)
+{
+  if (*ok == true)
+    return new CallRuntime();
+  else
+    return new Literal ();
+
+  return NULL;
+}
+
+Expression *
+GetExpression (bool *ok)
+{
+  Expression *expression = ExpressionCheck (ok);
+  Expression *return_expr = NULL;
+
+  if (expression != NULL && expression->AsLiteral() != NULL)
+    return_expr = new Literal();
+  else if (expression != NULL && expression->AsCallRuntime() != NULL)
+    return_expr = expression;
+
+  return return_expr;
+}
+
+int
+main (int argc, char **argv)
+{
+  bool a_bool = true;
+
+  AstNode *node = GetExpression (&a_bool);
+
+  return 0;
+}
diff --git a/libvtv/testsuite/libvtv.cc/virtfunc-test.cc b/libvtv/testsuite/libvtv.cc/virtfunc-test.cc
new file mode 100644 (file)
index 0000000..3ad12b8
--- /dev/null
@@ -0,0 +1,222 @@
+// { dg-do run }
+
+/* This test script is part of GDB, the GNU debugger.
+
+   Copyright 1993, 1994, 1997, 1998, 1999, 2003, 2004,
+   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/>.
+   */
+
+// Pls try the following program on virtual functions and try to do print on
+//  most of the code in main().  Almost none of them works !
+
+//
+// The inheritance structure is:
+//
+// V : VA VB
+// A : (V)
+// B : A
+// D : AD (V)
+// C : (V)
+// E : B (V) D C
+//
+
+class VA 
+{
+public:
+    int va;
+};
+
+class VB
+{
+public:
+    int vb;
+    int fvb();
+    virtual int vvb();
+};
+
+class V : public VA, public VB
+{
+public:
+    int f();
+    virtual int vv();
+    int w;
+};
+
+class A : virtual public V
+{
+public:
+    virtual int f();
+private:
+    int a;
+};
+
+class B : public A
+{
+public:
+    int f();
+private:
+    int b;
+};
+
+class C : public virtual V
+{
+public:
+    int c;
+};
+
+class AD
+{
+public:
+    virtual int vg() = 0;
+};
+
+class D : public AD, virtual public V
+{
+public:
+    static void s();
+    virtual int vg();
+    virtual int vd();
+    int fd();
+    int d;
+};
+
+class E : public B, virtual public V, public D, public C
+{
+public:
+    int f();
+    int vg();
+    int vv();
+    int e;
+};
+
+D   dd;
+D*  ppd = &dd;
+AD* pAd = &dd;
+
+A   a;
+B   b;
+C   c;
+D   d;
+E   e;
+V   v;
+VB  vb;
+
+
+A*     pAa     =       &a;
+A*     pAe     =       &e;
+
+B*     pBe     =       &e;
+
+D*     pDd     =       &d;
+D*     pDe     =       &e;
+
+V*     pVa     =       &a;
+V*     pVv     =       &v;
+V*     pVe     =       &e;
+V*     pVd     =       &d;
+
+AD*    pADe    =       &e;
+
+E*     pEe     =       &e;
+
+VB*     pVB    =       &vb;
+
+void init()
+{
+       a.vb = 1;
+       b.vb = 2;
+       c.vb = 3;
+       d.vb = 4;
+       e.vb = 5;
+       v.vb = 6;
+       vb.vb = 7;
+
+       d.d     = 1;
+       e.d     =  2;
+}
+
+extern "C" int printf(const char *, ...);
+
+int all_count = 0;
+int failed_count = 0;
+
+#define TEST(EXPR, EXPECTED) \
+   ret = EXPR; \
+   if (ret != EXPECTED) {\
+      printf("Failed %s is %d, should be %d!\n", #EXPR, ret, EXPECTED); \
+      failed_count++; } \
+   all_count++;
+
+int ret;
+
+void test_calls()
+{
+       TEST(pAe->f(), 20);
+       TEST(pAa->f(), 1);
+
+       TEST(pDe->vg(), 202);
+       TEST(pADe->vg(), 202);
+       TEST(pDd->vg(), 101);
+
+       TEST(pEe->vvb(), 411);
+
+       TEST(pVB->vvb(), 407);
+
+       TEST(pBe->vvb(), 411);
+       TEST(pDe->vvb(), 411);
+
+        TEST(pEe->vd(), 282);
+        TEST(pEe->fvb(), 311);
+    
+        TEST(pEe->D::vg(), 102);
+       printf("Did %d tests, of which %d failed.\n", all_count, failed_count);
+}
+#ifdef usestubs
+extern "C" {
+  void set_debug_traps();
+  void breakpoint();
+};
+#endif
+
+int main()
+{
+#ifdef usestubs
+   set_debug_traps();
+   breakpoint();
+#endif
+    init();
+
+    e.w = 7;
+    e.vb = 11;
+
+    test_calls();
+    return 0;
+    
+}
+
+int A::f() {return 1;}
+int B::f() {return 2;}
+void D::s() {}
+int E::f() {return 20;}
+int D::vg() {return 100+d;}
+int E::vg() {return 200+d;}
+int V::f() {return 600+w;}
+int V::vv() {return 400+w;}
+int E::vv() {return 450+w;}
+int D::fd() {return 250+d;}
+int D::vd() {return 280+d;}
+int VB::fvb() {return 300+vb;}
+int VB::vvb() {return 400+vb;}
similarity index 97%
rename from libvtv/testsuite/virtual_inheritance.cc
rename to libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
index 89fe388a856c7d1a15acbf554518fd7962bd696f..1c49c966453bf4cb980dc82d12ee9ec0ed41f675 100644 (file)
@@ -1,3 +1,5 @@
+// { dg-do run }
+
 #include <assert.h>
 struct V {
   V(): virtual_value(-123) {}
diff --git a/libvtv/testsuite/libvtv.cc/vtv.exp b/libvtv/testsuite/libvtv.cc/vtv.exp
new file mode 100644 (file)
index 0000000..12ed774
--- /dev/null
@@ -0,0 +1,83 @@
+load_lib libvtv-dg.exp
+load_gcc_lib gcc-dg.exp
+
+global VTV_FLAGS
+set VTV_FLAGS [list {-O0} {-O2}]
+
+libvtv_init c++
+
+set shlib_ext [get_shlib_extension]
+set lang_link_flags "-shared-libgcc -lstdc++"
+set lang_test_file_found 0
+set lang_library_path "../libstdc++-v3/src/.libs"
+
+dg-init
+
+set blddir [lookfor_file [get_multilibs] libvtv]
+
+# Find the correct libstdc++ library to use.
+
+if { $blddir != "" } {
+    # Look for a static libstdc++ first.
+    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
+       set lang_test_file "${lang_library_path}/libstdc++.a"
+       set lang_test_file_found 1
+       # We may have a shared only build, so look for a shared libstdc++.
+    } elseif [file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
+       set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
+       set lang_test_file_found 1
+    } else {
+       puts "looking for ${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"
+       puts "No libstdc++ library found, will not execute c++ tests"
+    }
+} elseif { [info exists GXX_UNDER_TEST] } {
+    set lang_test_file_found 1
+    # Needs to exist for libvtv.exp.
+    set lang_test_file ""
+} else {
+    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
+}
+
+
+global srcdir
+
+if { $lang_test_file_found } {
+    # Set the path for finding libstdc++.
+    if { $blddir != "" } {
+       set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
+    } else {
+       set ld_library_path "$always_ld_library_path"
+    }
+    append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
+    set_ld_library_path_env_vars
+
+    # Make sure we can find the libstdc++ header files.
+    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
+    if { [file exists $flags_file] } {
+       set libstdcxx_includes [exec sh $flags_file --build-includes]
+    } else {
+       set libstdcxx_includes ""
+    }
+
+    # Run the tests with -fvtable-verify=std
+    foreach flags $VTV_FLAGS {
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.cc/*.cc]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=std" $libstdcxx_includes
+       }
+
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.cc/@*.list]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=std" $libstdcxx_includes
+       }
+    }
+
+    # Run the tests with -fvtable-verify=preinit
+    foreach flags $VTV_FLAGS {
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.cc/*.cc]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=preinit" $libstdcxx_includes
+       }
+
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.cc/@*.list]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=preinit" $libstdcxx_includes
+       }
+    }
+}
diff --git a/libvtv/testsuite/libvtv.cc/xlan-test.cc b/libvtv/testsuite/libvtv.cc/xlan-test.cc
new file mode 100644 (file)
index 0000000..213ed61
--- /dev/null
@@ -0,0 +1,185 @@
+// { dg-do run }
+
+#include <stdio.h>
+#include <stdlib.h>
+
+class XMemory
+{
+public:
+  void * operator new (size_t size);
+  void operator delete (void *p);
+
+protected:
+  XMemory () {}
+
+  virtual ~XMemory() {}
+};
+
+class XSerializable
+{
+public:
+  virtual ~XSerializable () {};
+
+  virtual bool isSerializable() const = 0;
+  virtual void serialize () = 0;
+
+protected:
+  XSerializable() {};
+
+};
+
+class Grammar: public XSerializable, public XMemory
+{
+public:
+  enum GrammarType {
+    DTDGrammarType,
+    SchemaGrammarType,
+    OtherGrammarType,
+    Unknown
+  };
+
+  virtual ~Grammar() {}
+
+  virtual GrammarType getGrammarType() const = 0;
+  virtual bool getValidated() const = 0;
+
+  virtual bool isSerializable() const;
+  virtual void serialize ();
+
+protected:
+  Grammar() {};
+
+};
+
+class SchemaGrammar : public Grammar
+{
+public:
+
+  SchemaGrammar () :  Grammar(), elemID(10) { fValidated = true; }
+
+  virtual ~SchemaGrammar() {}
+
+  virtual Grammar::GrammarType getGrammarType() const;
+  virtual bool getValidated() const;
+
+  virtual bool isSerializable () const;
+  virtual void serialize ();
+
+private:
+  const unsigned int elemID;
+  bool fValidated;
+
+};
+
+class OtherGrammar : public Grammar
+{
+public:
+
+  OtherGrammar () :  Grammar(), elemID(10) { fValidated = true; }
+
+  virtual ~OtherGrammar() {}
+
+  virtual Grammar::GrammarType getGrammarType() const;
+  virtual bool getValidated() const;
+
+  virtual bool isSerializable () const;
+  virtual void serialize ();
+
+private:
+  const unsigned int elemID;
+  bool fValidated;
+
+};
+
+void
+Grammar::serialize ()
+{
+  printf ("in Grammar::serialize\n");
+}
+
+bool
+Grammar::isSerializable () const
+{
+  return true;
+}
+
+bool
+SchemaGrammar::isSerializable () const
+{
+  return true;
+}
+
+void
+SchemaGrammar::serialize ()
+{
+  printf ("in SchemaGrammar::serialize\n");
+}
+
+Grammar::GrammarType
+SchemaGrammar::getGrammarType() const {
+  return Grammar::SchemaGrammarType;
+}
+
+bool
+SchemaGrammar::getValidated () const
+{
+  return fValidated;
+}
+
+void *
+XMemory::operator new (size_t size)
+{
+  return malloc (size);
+}
+
+void
+XMemory::operator delete (void *p)
+{
+}
+
+bool
+OtherGrammar::isSerializable () const
+{
+  return false;
+}
+
+void
+OtherGrammar::serialize ()
+{
+  printf ("in OtherGrammar::serialize\n");
+}
+
+Grammar::GrammarType
+OtherGrammar::getGrammarType() const {
+  return Grammar::OtherGrammarType;
+}
+
+bool
+OtherGrammar::getValidated () const
+{
+  return fValidated;
+}
+
+int
+main (int argc, char **argv)
+{
+  SchemaGrammar sPtr;
+  OtherGrammar oPtr;
+  Grammar &sGrammar = sPtr;
+
+  for (int i = 0; i < 2; ++i)
+    {
+      if (i == 0)
+       sGrammar = oPtr;
+      else
+       sGrammar = sPtr;
+
+      if (sGrammar.getGrammarType() != Grammar::SchemaGrammarType ||
+         sGrammar.getValidated ())
+       printf ("if condition was true.\n");
+      else
+       printf ("if condition was false.\n");
+    }
+
+  return 0;
+}
diff --git a/libvtv/testsuite/libvtv.mempool.cc/mempool.exp b/libvtv/testsuite/libvtv.mempool.cc/mempool.exp
new file mode 100644 (file)
index 0000000..9565eae
--- /dev/null
@@ -0,0 +1,68 @@
+load_lib libvtv-dg.exp
+load_gcc_lib gcc-dg.exp
+
+global VTV_FLAGS
+set VTV_FLAGS [list {-O0} {-O2}]
+
+libvtv_init c++
+
+set shlib_ext [get_shlib_extension]
+set lang_link_flags "-shared-libgcc -lstdc++"
+set lang_test_file_found 0
+set lang_library_path "../libstdc++-v3/src/.libs"
+
+dg-init
+
+set blddir [lookfor_file [get_multilibs] libvtv]
+
+# Find the correct libstdc++ library to use.
+
+if { $blddir != "" } {
+    # Look for a static libstdc++ first.
+    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
+       set lang_test_file "${lang_library_path}/libstdc++.a"
+       set lang_test_file_found 1
+       # We may have a shared only build, so look for a shared libstdc++.
+    } elseif [file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
+       set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
+       set lang_test_file_found 1
+    } else {
+       puts "looking for ${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"
+       puts "No libstdc++ library found, will not execute c++ tests"
+    }
+} elseif { [info exists GXX_UNDER_TEST] } {
+    set lang_test_file_found 1
+    # Needs to exist for libvtv.exp.
+    set lang_test_file ""
+} else {
+    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
+}
+
+
+global srcdir
+
+if { $lang_test_file_found } {
+    # Set the path for finding libstdc++.
+    if { $blddir != "" } {
+       set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
+    } else {
+       set ld_library_path "$always_ld_library_path"
+    }
+    append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
+    set_ld_library_path_env_vars
+
+    # Make sure we can find the libstdc++ header files.
+    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
+    if { [file exists $flags_file] } {
+       set libstdcxx_includes [exec sh $flags_file --build-includes]
+    } else {
+       set libstdcxx_includes ""
+    }
+
+    # Run the tests with -fvtable-verify=std
+    foreach flags $VTV_FLAGS {
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.mempool.cc/*.cc]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=std" $libstdcxx_includes
+       }
+    }
+}
similarity index 94%
rename from libvtv/testsuite/mempool_negative.c
rename to libvtv/testsuite/libvtv.mempool.cc/mempool_negative.cc
index 50ed53109bd4b316b140950df5c0029d48a2a1a6..2d5e1d0b53187e5abb8e7afda6b1fdc1c3d548a2 100644 (file)
@@ -5,26 +5,21 @@
 #include <setjmp.h>
 
 #include "vtv_malloc.h"
+#include "../../../include/vtv-change-permission.h"
 
 volatile static int signal_count = 0;
 
 sigjmp_buf before_segv;
 
-bool vtv_debug = false;
+unsigned int vtv_debug = 0;
 
 static void
 handler(int sig, siginfo_t *si, void *unused)
 {
-  /*
-  printf("Got SIGSEGV at address: 0x%lx\n",
-         (long) si->si_addr);
-  */
-
   signal_count++;
   /* You are not supposed to longjmp out of a signal handler but it seems
      to work for this test case and it simplifies it */
   siglongjmp(before_segv, 1);
-  /* exit(1); */
 }
 
 /* Try to modify the memory pointed by "s" but dont actually change the values.
@@ -38,13 +33,13 @@ void mempoke(void * s, size_t n)
   ret = sigsetjmp(before_segv, 1);
   if (ret == 0)
     p[0] = p[0];
-  /* printf("after first setjmp ret=%d\n", ret); */
+
   assert(ret == 1 && signal_count == 1);
 
   ret = sigsetjmp(before_segv, 1);
   if (ret == 0)
     p[n - 1] = p[n - 1];
-  /* printf("after second setjmp ret=%d\n", ret); */
+
   assert(ret == 1 && signal_count == 2);
 }
 
@@ -61,6 +56,8 @@ int main()
   if (sigaction(SIGSEGV, &sa, NULL) == -1)
     assert(0);
 
+  /* Make the 'bookkeeping' vars read-write.  */
+  __VLTChangePermission (__VLTP_READ_WRITE);
   __vtv_malloc_init();
 
   size = 10;
similarity index 96%
rename from libvtv/testsuite/mempool_positive.c
rename to libvtv/testsuite/libvtv.mempool.cc/mempool_positive.cc
index 511f50a1040bf3a00902c6a1555934968c20e25d..5e60df9b686eeec6d056e338e848db1ceefccf70 100644 (file)
@@ -4,8 +4,9 @@
 #include <stdio.h>
 
 #include "vtv_malloc.h"
+#include "../../../include/vtv-change-permission.h"
 
-bool vtv_debug = false;
+unsigned int vtv_debug = 0;
 
 static void
 handler(int sig, siginfo_t *si, void *unused)
@@ -37,6 +38,8 @@ int main()
   if (sigaction(SIGSEGV, &sa, NULL) == -1)
     assert(0);
 
+  /* Make the 'bookkeeping' vars read-write.  */
+  __VLTChangePermission (__VLTP_READ_WRITE);
   __vtv_malloc_init();
 
   size = 10;
diff --git a/libvtv/testsuite/libvtv.mt.cc/mt.exp b/libvtv/testsuite/libvtv.mt.cc/mt.exp
new file mode 100644 (file)
index 0000000..e2ee435
--- /dev/null
@@ -0,0 +1,68 @@
+load_lib libvtv-dg.exp
+load_gcc_lib gcc-dg.exp
+
+global VTV_FLAGS
+set VTV_FLAGS [list {-O0} {-O2}]
+
+libvtv_init c++
+
+set shlib_ext [get_shlib_extension]
+set lang_link_flags "-shared-libgcc -lstdc++"
+set lang_test_file_found 0
+set lang_library_path "../libstdc++-v3/src/.libs"
+
+dg-init
+
+set blddir [lookfor_file [get_multilibs] libvtv]
+
+# Find the correct libstdc++ library to use.
+
+if { $blddir != "" } {
+    # Look for a static libstdc++ first.
+    if [file exists "${blddir}/${lang_library_path}/libstdc++.a"] {
+       set lang_test_file "${lang_library_path}/libstdc++.a"
+       set lang_test_file_found 1
+       # We may have a shared only build, so look for a shared libstdc++.
+    } elseif [file exists "${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"] {
+       set lang_test_file "${lang_library_path}/libstdc++.${shlib_ext}"
+       set lang_test_file_found 1
+    } else {
+       puts "looking for ${blddir}/${lang_library_path}/libstdc++.${shlib_ext}"
+       puts "No libstdc++ library found, will not execute c++ tests"
+    }
+} elseif { [info exists GXX_UNDER_TEST] } {
+    set lang_test_file_found 1
+    # Needs to exist for libvtv.exp.
+    set lang_test_file ""
+} else {
+    puts "GXX_UNDER_TEST not defined, will not execute c++ tests"
+}
+
+
+global srcdir
+
+if { $lang_test_file_found } {
+    # Set the path for finding libstdc++.
+    if { $blddir != "" } {
+       set ld_library_path "$always_ld_library_path:${blddir}/${lang_library_path}"
+    } else {
+       set ld_library_path "$always_ld_library_path"
+    }
+    append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
+    set_ld_library_path_env_vars
+
+    # Make sure we can find the libstdc++ header files.
+    set flags_file "${blddir}/../libstdc++-v3/scripts/testsuite_flags"
+    if { [file exists $flags_file] } {
+       set libstdcxx_includes [exec sh $flags_file --build-includes]
+    } else {
+       set libstdcxx_includes ""
+    }
+
+    # Run the tests with -fvtable-verify=std
+    foreach flags $VTV_FLAGS {
+       foreach srcfile [lsort [glob -nocomplain ${srcdir}/libvtv.mt.cc/*.cc]] {
+           dg-runtest $srcfile "$flags -fvtable-verify=std -lpthread" $libstdcxx_includes
+       }
+    }
+}
similarity index 60%
rename from libvtv/testsuite/register_pair_inserts_mt.cc
rename to libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc
index a79dc1f9196d07ce66d7a7a095292e0a4a80e46c..6df197343f7da1d890157118847e8ed0e52c31a2 100644 (file)
@@ -1,7 +1,11 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
 #include "vtv_utils.h"
 #include "vtv_rts.h"
 #include "pthread.h"
-#include <stdio.h>
 
 
 /* Multi-threaded test for calls to RegisterPair */
 
 #define NUM_THREADS 9
 
+#define KEY_TYPE_FIXED_SIZE 8
+void *key_buffer = malloc (17);
+typedef char * name_string;
+name_string fake_names[NUM_MAPS];
+
 /* This variable has to be put in rel.ro */
 void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
 
@@ -30,6 +39,29 @@ void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
 volatile int current_map = -1;
 volatile int threads_completed_it = 0;
 
+void
+generate_names (void)
+{
+  int i;
+
+  for (i = 0; i < NUM_MAPS; ++i)
+    {
+      fake_names[i] = (char *) malloc (9 * sizeof (char));
+      snprintf (fake_names[i], 9, "name%d", i);
+    }
+}
+
+static uint32_t
+vtv_string_hash(const char *in)
+{
+  const char *s = in;
+  uint32_t h = 0;
+
+  for ( ; *s; ++s)
+    h = 5 * h + *s;
+  return h;
+}
+
 void * do_register_pairs(void *)
 {
   for (int k = 0; k < NUM_REPEATS; k++)
@@ -37,22 +69,44 @@ void * do_register_pairs(void *)
       int curr_fake_vt = 0;
       for (int i = 0; i < NUM_MAPS; i++)
        {
+         uint32_t *value_ptr = (uint32_t *) key_buffer;
+         uint32_t len1 = strlen (fake_names[i]);
+         uint32_t hash_value = vtv_string_hash (fake_names[i]);
+         void *temp_array[ELEMENTS_PER_MAP];
+
          while (current_map < (k*NUM_MAPS + i))
            ;
 
          __VLTChangePermission(__VLTP_READ_WRITE);
 
-         for (int j = 0; j < ELEMENTS_PER_MAP; j++)
-           {
+         *value_ptr = len1;
+         value_ptr++;
+         *value_ptr = hash_value;
+         
+         memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
+                 len1);
+
+
 #ifdef VTV_DEBUG
-             __VLTRegisterPairDebug((void **) &maps[i], &fake_vts[curr_fake_vt], 0, 0, 0, 0);
+         __VLTRegisterPairDebug ((void **) &maps[i], (char *) key_buffer, 128,
+                             &fake_vts[curr_fake_vt], "", "");
 #else
-             __VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt]);
+         __VLTRegisterPair ((void **) &maps[i], (char *) key_buffer, 128,
+                        &fake_vts[curr_fake_vt]);
 #endif
-             __VLTVerifyVtablePointer((void **) &maps[i],  &fake_vts[curr_fake_vt]);
+         for (int j = 0; j < ELEMENTS_PER_MAP; j++)
+           {
+             temp_array[j] = &fake_vts[curr_fake_vt];
              curr_fake_vt++;
            }
 
+#ifdef VTV_DEBUG
+         __VLTRegisterSetDebug ((void **) &maps[i], (char *) key_buffer, 128, 100,
+                              (void **) &temp_array);
+#else
+         __VLTRegisterSet ((void **) &maps[i], (char *) key_buffer, 128, 100,
+                         (void **) &temp_array);
+#endif
          __VLTChangePermission(__VLTP_READ_ONLY);
 
          int old_value;
@@ -78,6 +132,8 @@ int main()
 {
   pthread_t thread_ids[NUM_THREADS];
  
+  generate_names();
+
   for (int t = 0; t < NUM_THREADS; t++ )
     if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
       {
similarity index 59%
rename from libvtv/testsuite/register_pair_mt.cc
rename to libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc
index e421c4f0d2b85e41940c6aaa5a1392d8194e0ccd..1d480a1e3b86aaa44a5502c22e047472c03ba074 100644 (file)
@@ -1,7 +1,11 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
 #include "vtv_utils.h"
 #include "vtv_rts.h"
 #include "pthread.h"
-#include <stdio.h>
 
 
 /* Multi-threaded test for calls to RegisterPair */
 
 #define NUM_THREADS 9
 
+#define KEY_TYPE_FIXED_SIZE 8
+void *key_buffer = malloc (17);
+typedef char * name_string;
+name_string fake_names[NUM_MAPS];
+
 /* This variable has to be put in rel.ro */
 void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
 
@@ -30,6 +39,29 @@ void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
 volatile int current_map = -1;
 volatile int threads_completed_it = 0;
 
+void
+generate_names (void)
+{
+  int i;
+
+  for (i = 0; i < NUM_MAPS; ++i)
+    {
+      fake_names[i] = (char *) malloc (9 * sizeof (char));
+      snprintf (fake_names[i], 9, "name%d", i);
+    }
+}
+
+static uint32_t
+vtv_string_hash(const char *in)
+{
+  const char *s = in;
+  uint32_t h = 0;
+
+  for ( ; *s; ++s)
+    h = 5 * h + *s;
+  return h;
+}
+
 void * do_register_pairs(void *)
 {
   for (int k = 0; k < NUM_REPEATS; k++)
@@ -37,22 +69,44 @@ void * do_register_pairs(void *)
       int curr_fake_vt = 0;
       for (int i = 0; i < NUM_MAPS; i++)
        {
+         uint32_t *value_ptr = (uint32_t *) key_buffer;
+         uint32_t len1 = strlen (fake_names[i]);
+         uint32_t hash_value = vtv_string_hash (fake_names[i]);
+         void *temp_array[ELEMENTS_PER_MAP];
+         
          while (current_map < (k*NUM_MAPS + i))
            ;
-
+         
          __VLTChangePermission(__VLTP_READ_WRITE);
+         
+         *value_ptr = len1;
+         value_ptr++;
+         *value_ptr = hash_value;
+         
+         memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
+                 len1);
+
 
-         for (int j = 0; j < ELEMENTS_PER_MAP; j++)
-           {
 #ifdef VTV_DEBUG
-             __VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt], 0, 0, 0, 0);
+         __VLTRegisterPairDebug ((void **) &maps[i], (char *) key_buffer, 128,
+                                 &fake_vts[curr_fake_vt], "", "");
 #else
-             __VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt]);
+         __VLTRegisterPair ((void **) &maps[i], (char *) key_buffer, 128,
+                            &fake_vts[curr_fake_vt]);
 #endif
-             __VLTVerifyVtablePointer((void **) &maps[i],  &fake_vts[curr_fake_vt]);
+         for (int j = 0; j < ELEMENTS_PER_MAP; j++)
+           {
+             temp_array[j] = &fake_vts[curr_fake_vt];
              curr_fake_vt++;
            }
 
+#ifdef VTV_DEBUG
+         __VLTRegisterSetDebug ((void **) &maps[i], (char *) key_buffer, 128, 100,
+                              (void **) &temp_array);
+#else
+         __VLTRegisterSet ((void **) &maps[i], (char *) key_buffer, 128, 100,
+                         (void **) &temp_array);
+#endif
          __VLTChangePermission(__VLTP_READ_ONLY);
 
          int old_value;
@@ -77,6 +131,8 @@ void * do_register_pairs(void *)
 int main()
 {
   pthread_t thread_ids[NUM_THREADS];
+
+  generate_names ();
  
   for (int t = 0; t < NUM_THREADS; t++ )
     if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
diff --git a/libvtv/testsuite/other-tests/Makefile.am b/libvtv/testsuite/other-tests/Makefile.am
new file mode 100644 (file)
index 0000000..56f76a7
--- /dev/null
@@ -0,0 +1,52 @@
+## Makefile for the testsuite subdirectory of the VTV library.
+##
+## Copyright (C) 2013 Free Software Foundation, Inc.
+##
+## Process this file with automake to produce Makefile.in.
+##
+## This file is part of the Vtable Verification (VTV) Library.  This
+## library 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, or (at your option)
+## any later version.
+
+## This library 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 library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+
+AUTOMAKE_OPTIONS = nostdinc
+
+# Runs the testsuite via a script.
+
+# Create subdirectories.
+stamp-subdir:
+       if test ! -d lib64; then \
+         mkdir -p lib64; \
+       fi; \
+       if test ! -d lib32; then \
+         mkdir -p lib32; \
+       fi; \
+       echo `date` > stamp-subdir;
+
+
+testing_script=${libvtv_srcdir}/scripts/run-testsuite.sh
+check-script: ${testing_script} stamp-subdir
+       -@(chmod +x ${testing_script}; \
+       ${testing_script} ${libvtv_srcdir} ${libvtv_builddir})
+
+check-am:
+       $(MAKE) $(AM_MAKEFLAGS) check-script
+
+.PHONY: check-script
+
+# By adding these files here, automake will remove them for 'make clean'
+CLEANFILES = *.out environment-fail-*  stamp-* replace-fail-*
+
+# To remove directories.
+clean-local:
+       rm -rf lib*
diff --git a/libvtv/testsuite/other-tests/Makefile.in b/libvtv/testsuite/other-tests/Makefile.in
new file mode 100644 (file)
index 0000000..66a75e1
--- /dev/null
@@ -0,0 +1,379 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = testsuite
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+       $(top_srcdir)/../config/depstand.m4 \
+       $(top_srcdir)/../config/lead-dot.m4 \
+       $(top_srcdir)/../config/libstdc++-raw-cxx.m4 \
+       $(top_srcdir)/../config/multi.m4 \
+       $(top_srcdir)/../config/override.m4 \
+       $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+       $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+       $(top_srcdir)/acinclude.m4 $(top_srcdir)/../libtool.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCAS = @CCAS@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSTDCXX_RAW_CXX_CXXFLAGS = @LIBSTDCXX_RAW_CXX_CXXFLAGS@
+LIBSTDCXX_RAW_CXX_LDFLAGS = @LIBSTDCXX_RAW_CXX_LDFLAGS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XCFLAGS = @XCFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_shared = @enable_shared@
+enable_static = @enable_static@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libtool_VERSION = @libtool_VERSION@
+libvtv_builddir = @libvtv_builddir@
+libvtv_srcdir = @libvtv_srcdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_noncanonical = @target_noncanonical@
+target_os = @target_os@
+target_vendor = @target_vendor@
+toolexecdir = @toolexecdir@
+toolexeclibdir = @toolexeclibdir@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+toplevel_builddir = @toplevel_builddir@
+toplevel_srcdir = @toplevel_srcdir@
+AUTOMAKE_OPTIONS = nostdinc
+testing_script = ${libvtv_srcdir}/scripts/run-testsuite.sh
+
+# By adding these files here, automake will remove them for 'make clean'
+CLEANFILES = *.out environment-fail-*  stamp-* replace-fail-*
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign testsuite/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       clean-local distclean distclean-generic distclean-libtool dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Runs the testsuite via a script.
+
+# Create subdirectories.
+stamp-subdir:
+       if test ! -d lib64; then \
+         mkdir -p lib64; \
+       fi; \
+       if test ! -d lib32; then \
+         mkdir -p lib32; \
+       fi; \
+       echo `date` > stamp-subdir;
+check-script: ${testing_script} stamp-subdir
+       -@(chmod +x ${testing_script}; \
+       ${testing_script} ${libvtv_srcdir} ${libvtv_builddir})
+
+check-am:
+       $(MAKE) $(AM_MAKEFLAGS) check-script
+
+.PHONY: check-script
+
+# To remove directories.
+clean-local:
+       rm -rf lib*
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libvtv/testsuite/other-tests/README b/libvtv/testsuite/other-tests/README
new file mode 100644 (file)
index 0000000..a640474
--- /dev/null
@@ -0,0 +1,8 @@
+This directory contains tests that have not yet been converted to
+proper dejagnu tests.  If you look at the run_testsuite script in
+libvtv/scripts, you should get a fair idea as to how to run these
+tests.  The plan is to convert these tests into proper dejangnu tests
+sometime in the near future.
+
+
+Aug. 30, 2013
\ No newline at end of file
diff --git a/libvtv/testsuite/parts-test.list b/libvtv/testsuite/parts-test.list
deleted file mode 100644 (file)
index fdf95a8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-parts-test-main.cc parts-test-extra-parts.cc parts-test-extra-parts-views.cc
diff --git a/libvtv/testsuite/register_pair.cc b/libvtv/testsuite/register_pair.cc
deleted file mode 100644 (file)
index 0759c47..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "vtv_utils.h"
-#include "vtv_rts.h"
-
-/* This configuration will test mostly inserting of elements that are already inserted since 
-   the number of repeats is 200 */
-
-#define NUM_MAPS 4000
-#define ELEMENTS_PER_MAP 100
-#define NUM_REPEATS 200
-
-/* This variable has to be put in rel.ro */
-void * maps[NUM_MAPS] VTV_PROTECTED_VAR;
-
-struct fake_vt {
-  void * fake_vfp [4];
-};
-void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
-
-int main()
-{
-  __VLTChangePermission(__VLTP_READ_WRITE);
-
-  for (int k = 0; k < NUM_REPEATS; k++)
-    {
-      int curr_fake_vt = 0;
-      for (int i = 0; i < NUM_MAPS; i++)
-       for (int j = 0; j < ELEMENTS_PER_MAP; j++)
-         {
-#ifdef VTV_DEBUG
-           __VLTRegisterPairDebug(&maps[i], &fake_vts[curr_fake_vt]);
-#endif
-           curr_fake_vt++;
-         }
-    }
-
-  __VLTChangePermission(__VLTP_READ_ONLY);
-  
-  return 0;
-}
diff --git a/libvtv/testsuite/register_pair_inserts.cc b/libvtv/testsuite/register_pair_inserts.cc
deleted file mode 100644 (file)
index 72d6d96..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "vtv_utils.h"
-#include "vtv_rts.h"
-
-/* This configuration will test mostly inserting of new elements since 
-   the number of repeats is 1. It should also do a lot of rehashing */
-
-/* This test case may fail depending on the system configuration.
-   Check the value of  /proc/sys/vm/max_map_count and fix by doing
-   Ex: sudo sh -c  "echo 131060 > /proc/sys/vm/max_map_count" */
-
-#define NUM_MAPS 40000
-#define ELEMENTS_PER_MAP 100
-#define NUM_REPEATS 1
-
-/* This variable has to be put in rel.ro */
-void * maps[NUM_MAPS] VTV_PROTECTED_VAR;
-
-struct fake_vt {
-  void * fake_vfp [4];
-};
-void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
-
-
-int main()
-{
-  __VLTChangePermission(__VLTP_READ_WRITE);
-
-  for (int k = 0; k < NUM_REPEATS; k++)
-    {
-      int curr_fake_vt = 0;
-      for (int i = 0; i < NUM_MAPS; i++)
-       for (int j = 0; j < ELEMENTS_PER_MAP; j++)
-         {
-#ifdef VTV_DEBUG
-           __VLTRegisterPairDebug(&maps[i], &fake_vts[curr_fake_vt], 0, 0, 0, 0);
-#else
-           __VLTRegisterPair(&maps[i], &fake_vts[curr_fake_vt]);
-#endif
-           curr_fake_vt++;
-         }
-    }
-
-  __VLTChangePermission(__VLTP_READ_ONLY);
-
-  return 0;
-}