mirror of git://gcc.gnu.org/git/gcc.git
Update libvtv testsuite so that most of the tests now run under
the dejagnu test harness. From-SVN: r202373
This commit is contained in:
parent
f085f27e12
commit
41e96dc8f0
|
|
@ -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>
|
2013-09-07 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
* testsuite/Makefile.am: Remove #if ENABLE_VTABLE_VERIFY check around
|
* testsuite/Makefile.am: Remove #if ENABLE_VTABLE_VERIFY check around
|
||||||
|
|
|
||||||
|
|
@ -1,52 +1,11 @@
|
||||||
## Makefile for the testsuite subdirectory of the VTV library.
|
## Process this with automake to create Makefile.in
|
||||||
##
|
|
||||||
## 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
|
AUTOMAKE_OPTIONS = foreign dejagnu
|
||||||
## 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
|
EXPECT = `if [ -f ../../expect/expect ] ; then \
|
||||||
## along with this library; see the file COPYING3. If not see
|
echo ../../expect/expect ; \
|
||||||
## <http://www.gnu.org/licenses/>.
|
else echo expect ; fi`
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = nostdinc
|
RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \
|
||||||
|
echo ${srcdir}/../../dejagnu/runtest ; \
|
||||||
# Runs the testsuite via a script.
|
else echo runtest ; fi`
|
||||||
|
|
||||||
# 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*
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
|
DEJATOOL = $(PACKAGE)
|
||||||
|
RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
|
|
@ -190,11 +192,15 @@ top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
toplevel_builddir = @toplevel_builddir@
|
toplevel_builddir = @toplevel_builddir@
|
||||||
toplevel_srcdir = @toplevel_srcdir@
|
toplevel_srcdir = @toplevel_srcdir@
|
||||||
AUTOMAKE_OPTIONS = nostdinc
|
AUTOMAKE_OPTIONS = foreign dejagnu
|
||||||
testing_script = ${libvtv_srcdir}/scripts/run-testsuite.sh
|
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
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
|
@ -240,7 +246,46 @@ TAGS:
|
||||||
ctags: CTAGS
|
ctags: 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
|
check-am: all-am
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile
|
all-am: Makefile
|
||||||
installdirs:
|
installdirs:
|
||||||
|
|
@ -261,7 +306,6 @@ install-strip:
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-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."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
distclean-am: clean-am distclean-generic
|
distclean-am: clean-am distclean-DEJAGNU distclean-generic
|
||||||
|
|
||||||
dvi: dvi-am
|
dvi: dvi-am
|
||||||
|
|
||||||
|
|
@ -336,44 +380,21 @@ ps-am:
|
||||||
|
|
||||||
uninstall-am:
|
uninstall-am:
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
.MAKE: check-am install-am install-strip
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
|
||||||
clean-local distclean distclean-generic distclean-libtool dvi \
|
clean-libtool distclean distclean-DEJAGNU distclean-generic \
|
||||||
dvi-am html html-am info info-am install install-am \
|
distclean-libtool dvi dvi-am html html-am info info-am install \
|
||||||
install-data install-data-am install-dvi install-dvi-am \
|
install-am install-data install-data-am install-dvi \
|
||||||
install-exec install-exec-am install-html install-html-am \
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
install-info install-info-am install-man install-pdf \
|
install-html-am install-info install-info-am install-man \
|
||||||
install-pdf-am install-ps install-ps-am install-strip \
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
installcheck installcheck-am installdirs maintainer-clean \
|
install-strip installcheck installcheck-am installdirs \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
|
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.
|
# 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.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
event-main.cc event-definitions.cc event-private.cc
|
|
||||||
|
|
@ -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]
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
// { dg-do run }
|
||||||
extern "C" int printf(const char *,...);
|
extern "C" int printf(const char *,...);
|
||||||
struct V1 {
|
struct V1 {
|
||||||
int v;
|
int v;
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
template<int patch_dim, int patch_space_dim>
|
template<int patch_dim, int patch_space_dim>
|
||||||
class DataOutInterface
|
class DataOutInterface
|
||||||
{
|
{
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
derived-main.cpp derived-lib.cpp
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
extern "C" int printf(const char *, ...);
|
extern "C" int printf(const char *, ...);
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
extern "C" int printf(const char *, ...);
|
extern "C" int printf(const char *, ...);
|
||||||
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include "event-private.h"
|
#include "event-private.h"
|
||||||
|
|
||||||
template<typename T> void derefIfNotNull(T* ptr)
|
template<typename T> void derefIfNotNull(T* ptr)
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
event-main.cpp event-definitions.cpp event-private.cpp
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
class EtherCtrl {
|
class EtherCtrl {
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include "parts-test-main.h"
|
#include "parts-test-main.h"
|
||||||
#include "parts-test-extra-parts-views.h"
|
#include "parts-test-extra-parts-views.h"
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
parts-test-main.cpp parts-test-extra-parts.cpp parts-test-extra-parts-views.cpp
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
// Small test case from povray, see if it reproduces.
|
// Small test case from povray, see if it reproduces.
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
extern "C" int printf(const char *, ...);
|
extern "C" int printf(const char *, ...);
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
extern "C" int printf(const char *, ...);
|
extern "C" int printf(const char *, ...);
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
struct A {
|
struct A {
|
||||||
A():value(123) {}
|
A():value(123) {}
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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 = ⅆ
|
||||||
|
AD* pAd = ⅆ
|
||||||
|
|
||||||
|
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;}
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
// { dg-do run }
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
struct V {
|
struct V {
|
||||||
V(): virtual_value(-123) {}
|
V(): virtual_value(-123) {}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,26 +5,21 @@
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
||||||
#include "vtv_malloc.h"
|
#include "vtv_malloc.h"
|
||||||
|
#include "../../../include/vtv-change-permission.h"
|
||||||
|
|
||||||
volatile static int signal_count = 0;
|
volatile static int signal_count = 0;
|
||||||
|
|
||||||
sigjmp_buf before_segv;
|
sigjmp_buf before_segv;
|
||||||
|
|
||||||
bool vtv_debug = false;
|
unsigned int vtv_debug = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handler(int sig, siginfo_t *si, void *unused)
|
handler(int sig, siginfo_t *si, void *unused)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
printf("Got SIGSEGV at address: 0x%lx\n",
|
|
||||||
(long) si->si_addr);
|
|
||||||
*/
|
|
||||||
|
|
||||||
signal_count++;
|
signal_count++;
|
||||||
/* You are not supposed to longjmp out of a signal handler but it seems
|
/* You are not supposed to longjmp out of a signal handler but it seems
|
||||||
to work for this test case and it simplifies it */
|
to work for this test case and it simplifies it */
|
||||||
siglongjmp(before_segv, 1);
|
siglongjmp(before_segv, 1);
|
||||||
/* exit(1); */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try to modify the memory pointed by "s" but dont actually change the values.
|
/* 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);
|
ret = sigsetjmp(before_segv, 1);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
p[0] = p[0];
|
p[0] = p[0];
|
||||||
/* printf("after first setjmp ret=%d\n", ret); */
|
|
||||||
assert(ret == 1 && signal_count == 1);
|
assert(ret == 1 && signal_count == 1);
|
||||||
|
|
||||||
ret = sigsetjmp(before_segv, 1);
|
ret = sigsetjmp(before_segv, 1);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
p[n - 1] = p[n - 1];
|
p[n - 1] = p[n - 1];
|
||||||
/* printf("after second setjmp ret=%d\n", ret); */
|
|
||||||
assert(ret == 1 && signal_count == 2);
|
assert(ret == 1 && signal_count == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,6 +56,8 @@ int main()
|
||||||
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
|
/* Make the 'bookkeeping' vars read-write. */
|
||||||
|
__VLTChangePermission (__VLTP_READ_WRITE);
|
||||||
__vtv_malloc_init();
|
__vtv_malloc_init();
|
||||||
|
|
||||||
size = 10;
|
size = 10;
|
||||||
|
|
@ -4,8 +4,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "vtv_malloc.h"
|
#include "vtv_malloc.h"
|
||||||
|
#include "../../../include/vtv-change-permission.h"
|
||||||
|
|
||||||
bool vtv_debug = false;
|
unsigned int vtv_debug = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handler(int sig, siginfo_t *si, void *unused)
|
handler(int sig, siginfo_t *si, void *unused)
|
||||||
|
|
@ -37,6 +38,8 @@ int main()
|
||||||
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
||||||
|
/* Make the 'bookkeeping' vars read-write. */
|
||||||
|
__VLTChangePermission (__VLTP_READ_WRITE);
|
||||||
__vtv_malloc_init();
|
__vtv_malloc_init();
|
||||||
|
|
||||||
size = 10;
|
size = 10;
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "vtv_utils.h"
|
#include "vtv_utils.h"
|
||||||
#include "vtv_rts.h"
|
#include "vtv_rts.h"
|
||||||
#include "pthread.h"
|
#include "pthread.h"
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Multi-threaded test for calls to RegisterPair */
|
/* Multi-threaded test for calls to RegisterPair */
|
||||||
|
|
@ -19,6 +23,11 @@
|
||||||
|
|
||||||
#define NUM_THREADS 9
|
#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 */
|
/* This variable has to be put in rel.ro */
|
||||||
void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
|
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 current_map = -1;
|
||||||
volatile int threads_completed_it = 0;
|
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 *)
|
void * do_register_pairs(void *)
|
||||||
{
|
{
|
||||||
for (int k = 0; k < NUM_REPEATS; k++)
|
for (int k = 0; k < NUM_REPEATS; k++)
|
||||||
|
|
@ -37,22 +69,44 @@ void * do_register_pairs(void *)
|
||||||
int curr_fake_vt = 0;
|
int curr_fake_vt = 0;
|
||||||
for (int i = 0; i < NUM_MAPS; i++)
|
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))
|
while (current_map < (k*NUM_MAPS + i))
|
||||||
;
|
;
|
||||||
|
|
||||||
__VLTChangePermission(__VLTP_READ_WRITE);
|
__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);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VTV_DEBUG
|
||||||
|
__VLTRegisterPairDebug ((void **) &maps[i], (char *) key_buffer, 128,
|
||||||
|
&fake_vts[curr_fake_vt], "", "");
|
||||||
|
#else
|
||||||
|
__VLTRegisterPair ((void **) &maps[i], (char *) key_buffer, 128,
|
||||||
|
&fake_vts[curr_fake_vt]);
|
||||||
|
#endif
|
||||||
for (int j = 0; j < ELEMENTS_PER_MAP; j++)
|
for (int j = 0; j < ELEMENTS_PER_MAP; j++)
|
||||||
{
|
{
|
||||||
#ifdef VTV_DEBUG
|
temp_array[j] = &fake_vts[curr_fake_vt];
|
||||||
__VLTRegisterPairDebug((void **) &maps[i], &fake_vts[curr_fake_vt], 0, 0, 0, 0);
|
|
||||||
#else
|
|
||||||
__VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt]);
|
|
||||||
#endif
|
|
||||||
__VLTVerifyVtablePointer((void **) &maps[i], &fake_vts[curr_fake_vt]);
|
|
||||||
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);
|
__VLTChangePermission(__VLTP_READ_ONLY);
|
||||||
|
|
||||||
int old_value;
|
int old_value;
|
||||||
|
|
@ -78,6 +132,8 @@ int main()
|
||||||
{
|
{
|
||||||
pthread_t thread_ids[NUM_THREADS];
|
pthread_t thread_ids[NUM_THREADS];
|
||||||
|
|
||||||
|
generate_names();
|
||||||
|
|
||||||
for (int t = 0; t < NUM_THREADS; t++ )
|
for (int t = 0; t < NUM_THREADS; t++ )
|
||||||
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "vtv_utils.h"
|
#include "vtv_utils.h"
|
||||||
#include "vtv_rts.h"
|
#include "vtv_rts.h"
|
||||||
#include "pthread.h"
|
#include "pthread.h"
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Multi-threaded test for calls to RegisterPair */
|
/* Multi-threaded test for calls to RegisterPair */
|
||||||
|
|
@ -19,6 +23,11 @@
|
||||||
|
|
||||||
#define NUM_THREADS 9
|
#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 */
|
/* This variable has to be put in rel.ro */
|
||||||
void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
|
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 current_map = -1;
|
||||||
volatile int threads_completed_it = 0;
|
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 *)
|
void * do_register_pairs(void *)
|
||||||
{
|
{
|
||||||
for (int k = 0; k < NUM_REPEATS; k++)
|
for (int k = 0; k < NUM_REPEATS; k++)
|
||||||
|
|
@ -37,22 +69,44 @@ void * do_register_pairs(void *)
|
||||||
int curr_fake_vt = 0;
|
int curr_fake_vt = 0;
|
||||||
for (int i = 0; i < NUM_MAPS; i++)
|
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))
|
while (current_map < (k*NUM_MAPS + i))
|
||||||
;
|
;
|
||||||
|
|
||||||
__VLTChangePermission(__VLTP_READ_WRITE);
|
__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);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef VTV_DEBUG
|
||||||
|
__VLTRegisterPairDebug ((void **) &maps[i], (char *) key_buffer, 128,
|
||||||
|
&fake_vts[curr_fake_vt], "", "");
|
||||||
|
#else
|
||||||
|
__VLTRegisterPair ((void **) &maps[i], (char *) key_buffer, 128,
|
||||||
|
&fake_vts[curr_fake_vt]);
|
||||||
|
#endif
|
||||||
for (int j = 0; j < ELEMENTS_PER_MAP; j++)
|
for (int j = 0; j < ELEMENTS_PER_MAP; j++)
|
||||||
{
|
{
|
||||||
#ifdef VTV_DEBUG
|
temp_array[j] = &fake_vts[curr_fake_vt];
|
||||||
__VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt], 0, 0, 0, 0);
|
|
||||||
#else
|
|
||||||
__VLTRegisterPair((void **) &maps[i], &fake_vts[curr_fake_vt]);
|
|
||||||
#endif
|
|
||||||
__VLTVerifyVtablePointer((void **) &maps[i], &fake_vts[curr_fake_vt]);
|
|
||||||
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);
|
__VLTChangePermission(__VLTP_READ_ONLY);
|
||||||
|
|
||||||
int old_value;
|
int old_value;
|
||||||
|
|
@ -78,6 +132,8 @@ int main()
|
||||||
{
|
{
|
||||||
pthread_t thread_ids[NUM_THREADS];
|
pthread_t thread_ids[NUM_THREADS];
|
||||||
|
|
||||||
|
generate_names ();
|
||||||
|
|
||||||
for (int t = 0; t < NUM_THREADS; t++ )
|
for (int t = 0; t < NUM_THREADS; t++ )
|
||||||
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -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*
|
||||||
|
|
@ -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:
|
||||||
|
|
@ -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
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
parts-test-main.cc parts-test-extra-parts.cc parts-test-extra-parts-views.cc
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue