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
66 changed files with 2134 additions and 203 deletions
|
@ -1,3 +1,84 @@
|
|||
2013-09-08 Caroline Tice <cmtice@google.com>
|
||||
|
||||
* testsuite/event-main.cc: Move to libvtv.cc subdirectory.
|
||||
* testsuite/environment.cc: Ditto.
|
||||
* testsuite/template-list2.cc: Ditto.
|
||||
* testsuite/event.h: Ditto.
|
||||
* testsuite/dataentry.cc: Ditto.
|
||||
* testsuite/event-private.h: Ditto.
|
||||
* testsuite/virtual_inheritance.cc: Ditto.
|
||||
* testsuite/povray-derived.cc: Ditto.
|
||||
* testsuite/nested_vcall_test.cc: Ditto.
|
||||
* testsuite/template-list-iostream.cc: Ditto.
|
||||
* testsuite/parts-test-extra-parts-views.h: Ditto.
|
||||
* testsuite/virtfunc-test.cc: Ditto.
|
||||
* testsuite/parts-test-extra-parts.h: Ditto.
|
||||
* testsuite/const_vtable.cc: Ditto.
|
||||
* testsuite/template-list.cc: Ditto.
|
||||
* testsuite/dup_name.cc: Ditto.
|
||||
* testsuite/thunk.cc: Ditto.
|
||||
* testsuite/parts-test-main.h: Ditto.
|
||||
* testsuite/mul_inh.cc: Ditto.
|
||||
* testsuite/test1.cc: Ditto.
|
||||
* testsuite/bb_tests.cc: Ditto.
|
||||
* testsuite/v8-test-2.cc: Ditto.
|
||||
* testsuite/thunk_vtable_map_attack.cc: Ditto.
|
||||
* testsuite/xlan-test.cc: Ditto.
|
||||
* testsuite/parts-test-main.cpp: Move to libvtv.cc subdirectory and
|
||||
change file extension from .cc to .cpp.
|
||||
* testsuite/event-definitions.cpp: Ditto.
|
||||
* testsuite/event-main.cpp: Ditto.
|
||||
* testsuite/derived-main.cpp: Ditto.
|
||||
* testsuite/derived-lib.cpp: Ditto.
|
||||
* testsuite/event-private.cpp: Ditto.
|
||||
* testsuite/parts-test-extra-parts-views.cpp: Ditto.
|
||||
* testsuite/parts-test-extra-parts.cpp: Ditto.
|
||||
* testsuite/parts-test.list: Move to libvtv.cc subdirectory. Change
|
||||
file extensions inside file from .cc to .cpp.
|
||||
* testsuite/event.list: Ditto.
|
||||
* testsuite/derived.list: Ditto.
|
||||
* testsuite/register_pair.cc: Move to libvtv.cc; rename file to
|
||||
register_set_pair.cc; include stdlib.h, stdio.h stdint.h string.h
|
||||
(KEY_TYPE_FIXED_SIZE): New define.
|
||||
(key_buffer, name_string, fake_names): New global variables.
|
||||
(generate_names): New function.
|
||||
(vtv_string_hans): New function.
|
||||
(main): Add call to generate_names. Update middle for-loop to
|
||||
initialize new parameters for __VLTRegisterPair... calls; move calls
|
||||
to __VLTRegisterPair... to middle for-loop. Add calls to
|
||||
__VLTRegisterSet...
|
||||
* testsuite/register_pair_mt.cc: Ditto; renamed to
|
||||
register_set_pair_mt.cc
|
||||
* testsuite/libvtv.cc/vtv.exp: New file.
|
||||
* testsuite/libvtv.mempool.cc/mempool.exp: New file.
|
||||
* testsuite/libvtv.mt.cc/mt.exp: New file.
|
||||
* testsuite/lib/libvtv.exp: New file.
|
||||
* testsuite/lib/libvtv-dg.exp: New file.
|
||||
* testsuite/config/default.exp: New file.
|
||||
* testsuite/Makefile.am: New file. (Old file was moved to other-tests
|
||||
subdirectory.)
|
||||
* testsuite/Makefile.in: New file (generated).
|
||||
* testsuite/mempool_negative.c: Change to C++ file; move to
|
||||
libvtv.mempool.cc; include vtv-change-permission.h.
|
||||
(main): Add call to __VLTChangePermission.
|
||||
* testsuite/mempool_positive.c: Change to C++ file; move to
|
||||
libvtv.mempool.cc; include vtv-change-permission.h.
|
||||
(main): Add call to __VLTChangePermission.
|
||||
* testsuite/temp_deriv3.cc: Move to other-tests subdirectory.
|
||||
* testsuite/environment-fail-64.s: Ditto.
|
||||
* testsutite/dlopen.cc: Ditto.
|
||||
* testsuite/so.cc: Ditto.
|
||||
* testsuite/temp_deriv2.cc: Ditto.
|
||||
* testsuite/field-test.cc: Ditto.
|
||||
* testsuite/dlopen_mt.cc: Ditto.
|
||||
* testsuite/environment-fail-32.s: Ditto.
|
||||
* testsuite/temp_deriv.cc: Ditto.
|
||||
* testsuite/replace-fail.cc: Ditto.
|
||||
* testsuite/other-tests/Makefile.am: New file. Copied from the
|
||||
Makefile.am that used to be in testsuite directory.
|
||||
* testsuite/other-tests/Makefile.in: Generated. (New file).
|
||||
* testsuite/other-tests/README: New file.
|
||||
|
||||
2013-09-07 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* testsuite/Makefile.am: Remove #if ENABLE_VTABLE_VERIFY check around
|
||||
|
|
|
@ -1,52 +1,11 @@
|
|||
## Makefile for the testsuite subdirectory of the VTV library.
|
||||
##
|
||||
## Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
##
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
##
|
||||
## This file is part of the Vtable Verification (VTV) Library. This
|
||||
## library is free software; you can redistribute it and/or modify it
|
||||
## under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation; either version 3, or (at your option)
|
||||
## any later version.
|
||||
## Process this with automake to create Makefile.in
|
||||
|
||||
## This library is distributed in the hope that it will be useful, but
|
||||
## WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
## General Public License for more details.
|
||||
AUTOMAKE_OPTIONS = foreign dejagnu
|
||||
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this library; see the file COPYING3. If not see
|
||||
## <http://www.gnu.org/licenses/>.
|
||||
EXPECT = `if [ -f ../../expect/expect ] ; then \
|
||||
echo ../../expect/expect ; \
|
||||
else echo expect ; fi`
|
||||
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
|
||||
# Runs the testsuite via a script.
|
||||
|
||||
# Create subdirectories.
|
||||
stamp-subdir:
|
||||
if test ! -d lib64; then \
|
||||
mkdir -p lib64; \
|
||||
fi; \
|
||||
if test ! -d lib32; then \
|
||||
mkdir -p lib32; \
|
||||
fi; \
|
||||
echo `date` > stamp-subdir;
|
||||
|
||||
|
||||
testing_script=${libvtv_srcdir}/scripts/run-testsuite.sh
|
||||
check-script: ${testing_script} stamp-subdir
|
||||
-@(chmod +x ${testing_script}; \
|
||||
${testing_script} ${libvtv_srcdir} ${libvtv_builddir})
|
||||
|
||||
check-am:
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-script
|
||||
|
||||
.PHONY: check-script
|
||||
|
||||
# By adding these files here, automake will remove them for 'make clean'
|
||||
CLEANFILES = *.out environment-fail-* stamp-* replace-fail-*
|
||||
|
||||
# To remove directories.
|
||||
clean-local:
|
||||
rm -rf lib*
|
||||
RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \
|
||||
echo ${srcdir}/../../dejagnu/runtest ; \
|
||||
else echo runtest ; fi`
|
||||
|
|
|
@ -53,6 +53,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
|||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DEJATOOL = $(PACKAGE)
|
||||
RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
|
@ -190,11 +192,15 @@ top_builddir = @top_builddir@
|
|||
top_srcdir = @top_srcdir@
|
||||
toplevel_builddir = @toplevel_builddir@
|
||||
toplevel_srcdir = @toplevel_srcdir@
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
testing_script = ${libvtv_srcdir}/scripts/run-testsuite.sh
|
||||
AUTOMAKE_OPTIONS = foreign dejagnu
|
||||
EXPECT = `if [ -f ../../expect/expect ] ; then \
|
||||
echo ../../expect/expect ; \
|
||||
else echo expect ; fi`
|
||||
|
||||
RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; then \
|
||||
echo ${srcdir}/../../dejagnu/runtest ; \
|
||||
else echo runtest ; fi`
|
||||
|
||||
# By adding these files here, automake will remove them for 'make clean'
|
||||
CLEANFILES = *.out environment-fail-* stamp-* replace-fail-*
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
|
@ -240,7 +246,46 @@ TAGS:
|
|||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
check-DEJAGNU: site.exp
|
||||
srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
|
||||
EXPECT=$(EXPECT); export EXPECT; \
|
||||
runtest=$(RUNTEST); \
|
||||
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
|
||||
if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
|
||||
then :; else exit_status=1; fi; \
|
||||
done; \
|
||||
else echo "WARNING: could not find \`runtest'" 1>&2; :;\
|
||||
fi; \
|
||||
exit $$exit_status
|
||||
site.exp: Makefile
|
||||
@echo 'Making a new site.exp file...'
|
||||
@echo '## these variables are automatically generated by make ##' >site.tmp
|
||||
@echo '# Do not edit here. If you wish to override these values' >>site.tmp
|
||||
@echo '# edit the last section' >>site.tmp
|
||||
@echo 'set srcdir $(srcdir)' >>site.tmp
|
||||
@echo "set objdir `pwd`" >>site.tmp
|
||||
@echo 'set build_alias "$(build_alias)"' >>site.tmp
|
||||
@echo 'set build_triplet $(build_triplet)' >>site.tmp
|
||||
@echo 'set host_alias "$(host_alias)"' >>site.tmp
|
||||
@echo 'set host_triplet $(host_triplet)' >>site.tmp
|
||||
@echo 'set target_alias "$(target_alias)"' >>site.tmp
|
||||
@echo 'set target_triplet $(target_triplet)' >>site.tmp
|
||||
@echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
|
||||
@test ! -f site.exp || \
|
||||
sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
|
||||
@-rm -f site.bak
|
||||
@test ! -f site.exp || mv site.exp site.bak
|
||||
@mv site.tmp site.exp
|
||||
|
||||
distclean-DEJAGNU:
|
||||
-rm -f site.exp site.bak
|
||||
-l='$(DEJATOOL)'; for tool in $$l; do \
|
||||
rm -f $$tool.sum $$tool.log; \
|
||||
done
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
|
@ -261,7 +306,6 @@ install-strip:
|
|||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
@ -272,11 +316,11 @@ maintainer-clean-generic:
|
|||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
distclean-am: clean-am distclean-DEJAGNU distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
|
@ -336,44 +380,21 @@ ps-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 \
|
||||
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
|
||||
.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \
|
||||
clean-libtool distclean distclean-DEJAGNU distclean-generic \
|
||||
distclean-libtool dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
uninstall uninstall-am
|
||||
|
||||
|
||||
# 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:
|
||||
|
|
17
libvtv/testsuite/config/default.exp
Normal file
17
libvtv/testsuite/config/default.exp
Normal file
|
@ -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
|
21
libvtv/testsuite/lib/libvtv-dg.exp
Normal file
21
libvtv/testsuite/lib/libvtv-dg.exp
Normal file
|
@ -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]
|
||||
}
|
220
libvtv/testsuite/lib/libvtv.exp
Normal file
220
libvtv/testsuite/lib/libvtv.exp
Normal file
|
@ -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
|
||||
}
|
||||
}
|
53
libvtv/testsuite/libvtv.cc/bb_tests.cc
Normal file
53
libvtv/testsuite/libvtv.cc/bb_tests.cc
Normal file
|
@ -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 *,...);
|
||||
struct V1 {
|
||||
int v;
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
template<int patch_dim, int patch_space_dim>
|
||||
class DataOutInterface
|
||||
{
|
18
libvtv/testsuite/libvtv.cc/derived-lib.cpp
Normal file
18
libvtv/testsuite/libvtv.cc/derived-lib.cpp
Normal file
|
@ -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
|
||||
}
|
||||
|
18
libvtv/testsuite/libvtv.cc/derived-main.cpp
Normal file
18
libvtv/testsuite/libvtv.cc/derived-main.cpp
Normal file
|
@ -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
|
||||
}
|
||||
|
1
libvtv/testsuite/libvtv.cc/derived.list
Normal file
1
libvtv/testsuite/libvtv.cc/derived.list
Normal file
|
@ -0,0 +1 @@
|
|||
derived-main.cpp derived-lib.cpp
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
extern "C" int printf(const char *, ...);
|
|
@ -1,3 +1,4 @@
|
|||
// { dg-do run }
|
||||
|
||||
extern "C" int printf(const char *, ...);
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include "event-private.h"
|
||||
|
||||
template<typename T> void derefIfNotNull(T* ptr)
|
1
libvtv/testsuite/libvtv.cc/event.list
Normal file
1
libvtv/testsuite/libvtv.cc/event.list
Normal file
|
@ -0,0 +1 @@
|
|||
event-main.cpp event-definitions.cpp event-private.cpp
|
27
libvtv/testsuite/libvtv.cc/mul_inh.cc
Normal file
27
libvtv/testsuite/libvtv.cc/mul_inh.cc
Normal file
|
@ -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 {
|
||||
protected:
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include "parts-test-main.h"
|
||||
#include "parts-test-extra-parts-views.h"
|
||||
|
1
libvtv/testsuite/libvtv.cc/parts-test.list
Normal file
1
libvtv/testsuite/libvtv.cc/parts-test.list
Normal file
|
@ -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.
|
||||
|
||||
#include <stdio.h>
|
101
libvtv/testsuite/libvtv.cc/register_set_pair.cc
Normal file
101
libvtv/testsuite/libvtv.cc/register_set_pair.cc
Normal file
|
@ -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;
|
||||
}
|
106
libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc
Normal file
106
libvtv/testsuite/libvtv.cc/register_set_pair_inserts.cc
Normal file
|
@ -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 <iostream>
|
||||
#include <fstream>
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
extern "C" int printf(const char *, ...);
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
extern "C" int printf(const char *, ...);
|
74
libvtv/testsuite/libvtv.cc/test1.cc
Normal file
74
libvtv/testsuite/libvtv.cc/test1.cc
Normal file
|
@ -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>
|
||||
struct A {
|
||||
A():value(123) {}
|
|
@ -1,3 +1,5 @@
|
|||
// { dg-do run }
|
||||
|
||||
#include <assert.h>
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
97
libvtv/testsuite/libvtv.cc/v8-test-2.cc
Normal file
97
libvtv/testsuite/libvtv.cc/v8-test-2.cc
Normal file
|
@ -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;
|
||||
}
|
222
libvtv/testsuite/libvtv.cc/virtfunc-test.cc
Normal file
222
libvtv/testsuite/libvtv.cc/virtfunc-test.cc
Normal file
|
@ -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>
|
||||
struct V {
|
||||
V(): virtual_value(-123) {}
|
83
libvtv/testsuite/libvtv.cc/vtv.exp
Normal file
83
libvtv/testsuite/libvtv.cc/vtv.exp
Normal file
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
185
libvtv/testsuite/libvtv.cc/xlan-test.cc
Normal file
185
libvtv/testsuite/libvtv.cc/xlan-test.cc
Normal file
|
@ -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;
|
||||
}
|
68
libvtv/testsuite/libvtv.mempool.cc/mempool.exp
Normal file
68
libvtv/testsuite/libvtv.mempool.cc/mempool.exp
Normal file
|
@ -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 "vtv_malloc.h"
|
||||
#include "../../../include/vtv-change-permission.h"
|
||||
|
||||
volatile static int signal_count = 0;
|
||||
|
||||
sigjmp_buf before_segv;
|
||||
|
||||
bool vtv_debug = false;
|
||||
unsigned int vtv_debug = 0;
|
||||
|
||||
static void
|
||||
handler(int sig, siginfo_t *si, void *unused)
|
||||
{
|
||||
/*
|
||||
printf("Got SIGSEGV at address: 0x%lx\n",
|
||||
(long) si->si_addr);
|
||||
*/
|
||||
|
||||
signal_count++;
|
||||
/* You are not supposed to longjmp out of a signal handler but it seems
|
||||
to work for this test case and it simplifies it */
|
||||
siglongjmp(before_segv, 1);
|
||||
/* exit(1); */
|
||||
}
|
||||
|
||||
/* Try to modify the memory pointed by "s" but dont actually change the values.
|
||||
|
@ -38,13 +33,13 @@ void mempoke(void * s, size_t n)
|
|||
ret = sigsetjmp(before_segv, 1);
|
||||
if (ret == 0)
|
||||
p[0] = p[0];
|
||||
/* printf("after first setjmp ret=%d\n", ret); */
|
||||
|
||||
assert(ret == 1 && signal_count == 1);
|
||||
|
||||
ret = sigsetjmp(before_segv, 1);
|
||||
if (ret == 0)
|
||||
p[n - 1] = p[n - 1];
|
||||
/* printf("after second setjmp ret=%d\n", ret); */
|
||||
|
||||
assert(ret == 1 && signal_count == 2);
|
||||
}
|
||||
|
||||
|
@ -61,6 +56,8 @@ int main()
|
|||
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
||||
assert(0);
|
||||
|
||||
/* Make the 'bookkeeping' vars read-write. */
|
||||
__VLTChangePermission (__VLTP_READ_WRITE);
|
||||
__vtv_malloc_init();
|
||||
|
||||
size = 10;
|
|
@ -4,8 +4,9 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "vtv_malloc.h"
|
||||
#include "../../../include/vtv-change-permission.h"
|
||||
|
||||
bool vtv_debug = false;
|
||||
unsigned int vtv_debug = 0;
|
||||
|
||||
static void
|
||||
handler(int sig, siginfo_t *si, void *unused)
|
||||
|
@ -37,6 +38,8 @@ int main()
|
|||
if (sigaction(SIGSEGV, &sa, NULL) == -1)
|
||||
assert(0);
|
||||
|
||||
/* Make the 'bookkeeping' vars read-write. */
|
||||
__VLTChangePermission (__VLTP_READ_WRITE);
|
||||
__vtv_malloc_init();
|
||||
|
||||
size = 10;
|
68
libvtv/testsuite/libvtv.mt.cc/mt.exp
Normal file
68
libvtv/testsuite/libvtv.mt.cc/mt.exp
Normal file
|
@ -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_rts.h"
|
||||
#include "pthread.h"
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
/* Multi-threaded test for calls to RegisterPair */
|
||||
|
@ -19,6 +23,11 @@
|
|||
|
||||
#define NUM_THREADS 9
|
||||
|
||||
#define KEY_TYPE_FIXED_SIZE 8
|
||||
void *key_buffer = malloc (17);
|
||||
typedef char * name_string;
|
||||
name_string fake_names[NUM_MAPS];
|
||||
|
||||
/* This variable has to be put in rel.ro */
|
||||
void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
|
||||
|
||||
|
@ -30,6 +39,29 @@ void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
|
|||
volatile int current_map = -1;
|
||||
volatile int threads_completed_it = 0;
|
||||
|
||||
void
|
||||
generate_names (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_MAPS; ++i)
|
||||
{
|
||||
fake_names[i] = (char *) malloc (9 * sizeof (char));
|
||||
snprintf (fake_names[i], 9, "name%d", i);
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
vtv_string_hash(const char *in)
|
||||
{
|
||||
const char *s = in;
|
||||
uint32_t h = 0;
|
||||
|
||||
for ( ; *s; ++s)
|
||||
h = 5 * h + *s;
|
||||
return h;
|
||||
}
|
||||
|
||||
void * do_register_pairs(void *)
|
||||
{
|
||||
for (int k = 0; k < NUM_REPEATS; k++)
|
||||
|
@ -37,22 +69,44 @@ void * do_register_pairs(void *)
|
|||
int curr_fake_vt = 0;
|
||||
for (int i = 0; i < NUM_MAPS; i++)
|
||||
{
|
||||
uint32_t *value_ptr = (uint32_t *) key_buffer;
|
||||
uint32_t len1 = strlen (fake_names[i]);
|
||||
uint32_t hash_value = vtv_string_hash (fake_names[i]);
|
||||
void *temp_array[ELEMENTS_PER_MAP];
|
||||
|
||||
while (current_map < (k*NUM_MAPS + i))
|
||||
;
|
||||
|
||||
__VLTChangePermission(__VLTP_READ_WRITE);
|
||||
|
||||
*value_ptr = len1;
|
||||
value_ptr++;
|
||||
*value_ptr = hash_value;
|
||||
|
||||
memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
|
||||
len1);
|
||||
|
||||
|
||||
#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++)
|
||||
{
|
||||
#ifdef VTV_DEBUG
|
||||
__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]);
|
||||
temp_array[j] = &fake_vts[curr_fake_vt];
|
||||
curr_fake_vt++;
|
||||
}
|
||||
|
||||
#ifdef VTV_DEBUG
|
||||
__VLTRegisterSetDebug ((void **) &maps[i], (char *) key_buffer, 128, 100,
|
||||
(void **) &temp_array);
|
||||
#else
|
||||
__VLTRegisterSet ((void **) &maps[i], (char *) key_buffer, 128, 100,
|
||||
(void **) &temp_array);
|
||||
#endif
|
||||
__VLTChangePermission(__VLTP_READ_ONLY);
|
||||
|
||||
int old_value;
|
||||
|
@ -78,6 +132,8 @@ int main()
|
|||
{
|
||||
pthread_t thread_ids[NUM_THREADS];
|
||||
|
||||
generate_names();
|
||||
|
||||
for (int t = 0; t < NUM_THREADS; t++ )
|
||||
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
||||
{
|
|
@ -1,7 +1,11 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "vtv_utils.h"
|
||||
#include "vtv_rts.h"
|
||||
#include "pthread.h"
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
/* Multi-threaded test for calls to RegisterPair */
|
||||
|
@ -19,6 +23,11 @@
|
|||
|
||||
#define NUM_THREADS 9
|
||||
|
||||
#define KEY_TYPE_FIXED_SIZE 8
|
||||
void *key_buffer = malloc (17);
|
||||
typedef char * name_string;
|
||||
name_string fake_names[NUM_MAPS];
|
||||
|
||||
/* This variable has to be put in rel.ro */
|
||||
void * volatile maps[NUM_MAPS] VTV_PROTECTED_VAR;
|
||||
|
||||
|
@ -30,6 +39,29 @@ void * fake_vts [NUM_MAPS * ELEMENTS_PER_MAP];
|
|||
volatile int current_map = -1;
|
||||
volatile int threads_completed_it = 0;
|
||||
|
||||
void
|
||||
generate_names (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_MAPS; ++i)
|
||||
{
|
||||
fake_names[i] = (char *) malloc (9 * sizeof (char));
|
||||
snprintf (fake_names[i], 9, "name%d", i);
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
vtv_string_hash(const char *in)
|
||||
{
|
||||
const char *s = in;
|
||||
uint32_t h = 0;
|
||||
|
||||
for ( ; *s; ++s)
|
||||
h = 5 * h + *s;
|
||||
return h;
|
||||
}
|
||||
|
||||
void * do_register_pairs(void *)
|
||||
{
|
||||
for (int k = 0; k < NUM_REPEATS; k++)
|
||||
|
@ -37,22 +69,44 @@ void * do_register_pairs(void *)
|
|||
int curr_fake_vt = 0;
|
||||
for (int i = 0; i < NUM_MAPS; i++)
|
||||
{
|
||||
uint32_t *value_ptr = (uint32_t *) key_buffer;
|
||||
uint32_t len1 = strlen (fake_names[i]);
|
||||
uint32_t hash_value = vtv_string_hash (fake_names[i]);
|
||||
void *temp_array[ELEMENTS_PER_MAP];
|
||||
|
||||
while (current_map < (k*NUM_MAPS + i))
|
||||
;
|
||||
|
||||
|
||||
__VLTChangePermission(__VLTP_READ_WRITE);
|
||||
|
||||
*value_ptr = len1;
|
||||
value_ptr++;
|
||||
*value_ptr = hash_value;
|
||||
|
||||
memcpy ((char *) key_buffer + KEY_TYPE_FIXED_SIZE, fake_names[i],
|
||||
len1);
|
||||
|
||||
|
||||
#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++)
|
||||
{
|
||||
#ifdef VTV_DEBUG
|
||||
__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]);
|
||||
temp_array[j] = &fake_vts[curr_fake_vt];
|
||||
curr_fake_vt++;
|
||||
}
|
||||
|
||||
#ifdef VTV_DEBUG
|
||||
__VLTRegisterSetDebug ((void **) &maps[i], (char *) key_buffer, 128, 100,
|
||||
(void **) &temp_array);
|
||||
#else
|
||||
__VLTRegisterSet ((void **) &maps[i], (char *) key_buffer, 128, 100,
|
||||
(void **) &temp_array);
|
||||
#endif
|
||||
__VLTChangePermission(__VLTP_READ_ONLY);
|
||||
|
||||
int old_value;
|
||||
|
@ -77,6 +131,8 @@ void * do_register_pairs(void *)
|
|||
int main()
|
||||
{
|
||||
pthread_t thread_ids[NUM_THREADS];
|
||||
|
||||
generate_names ();
|
||||
|
||||
for (int t = 0; t < NUM_THREADS; t++ )
|
||||
if (pthread_create(&thread_ids[t], NULL, do_register_pairs, NULL) != 0)
|
52
libvtv/testsuite/other-tests/Makefile.am
Normal file
52
libvtv/testsuite/other-tests/Makefile.am
Normal file
|
@ -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*
|
379
libvtv/testsuite/other-tests/Makefile.in
Normal file
379
libvtv/testsuite/other-tests/Makefile.in
Normal file
|
@ -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:
|
8
libvtv/testsuite/other-tests/README
Normal file
8
libvtv/testsuite/other-tests/README
Normal file
|
@ -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…
Add table
Reference in a new issue