Makefile.am (noinst_LIBRARIES): New target.
2002-05-28 Phil Edwards <pme@gcc.gnu.org> * testsuite/Makefile.am (noinst_LIBRARIES): New target. Pull in CXX/INCLUDES. * testsuite/Makefile.in: Regenerate. * testsuite/testsuite_hooks.h (gnu_copy_tracker): Move from list_modifiers.cc and rename from 'T'. Move code bodies... * testsuite/testsuite_hooks.cc: ...to here. New file. * testsuite/23_containers/list_modifiers.cc: Move 'T' class out. * testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3_target_compile): Add libv3test.a to link options. From-SVN: r53977
This commit is contained in:
parent
64de6c0a5f
commit
8ea08b7d7b
7 changed files with 387 additions and 123 deletions
|
@ -1,3 +1,15 @@
|
|||
2002-05-28 Phil Edwards <pme@gcc.gnu.org>
|
||||
|
||||
* testsuite/Makefile.am (noinst_LIBRARIES): New target. Pull in
|
||||
CXX/INCLUDES.
|
||||
* testsuite/Makefile.in: Regenerate.
|
||||
* testsuite/testsuite_hooks.h (gnu_copy_tracker): Move from
|
||||
list_modifiers.cc and rename from 'T'. Move code bodies...
|
||||
* testsuite/testsuite_hooks.cc: ...to here. New file.
|
||||
* testsuite/23_containers/list_modifiers.cc: Move 'T' class out.
|
||||
* testsuite/lib/libstdc++-v3-dg.exp (libstdc++-v3_target_compile):
|
||||
Add libv3test.a to link options.
|
||||
|
||||
2002-05-27 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* src/misc-inst.cc: Define unnecessary algorithm
|
||||
|
|
|
@ -21,60 +21,10 @@
|
|||
#include <list>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
typedef gnu_copy_tracker T;
|
||||
|
||||
bool test = true;
|
||||
|
||||
// Here's a class with nontrivial ctor/dtor that provides
|
||||
// the ability to track the number of copy ctors and dtors
|
||||
// and will throw on demand during copy.
|
||||
class T
|
||||
{
|
||||
public:
|
||||
// default constructor
|
||||
T(int anId, bool throwOnDemand = false)
|
||||
: itsId(anId), willThrow(throwOnDemand)
|
||||
{ }
|
||||
|
||||
// copy constructor
|
||||
T(const T& rhs)
|
||||
: itsId(rhs.id()), willThrow(rhs.willThrow)
|
||||
{
|
||||
++itsCopyCount;
|
||||
if (willThrow)
|
||||
throw "exception";
|
||||
}
|
||||
|
||||
~T()
|
||||
{ ++itsDtorCount; }
|
||||
|
||||
int
|
||||
id() const
|
||||
{ return itsId; }
|
||||
|
||||
private:
|
||||
const int itsId;
|
||||
const bool willThrow;
|
||||
|
||||
public:
|
||||
static void
|
||||
reset()
|
||||
{ itsCopyCount = 0; itsDtorCount = 0; }
|
||||
|
||||
static int
|
||||
copyCount()
|
||||
{ return itsCopyCount; }
|
||||
|
||||
static int
|
||||
dtorCount()
|
||||
{ return itsDtorCount; }
|
||||
|
||||
private:
|
||||
static int itsCopyCount;
|
||||
static int itsDtorCount;
|
||||
};
|
||||
|
||||
int T::itsCopyCount = 0;
|
||||
int T::itsDtorCount = 0;
|
||||
|
||||
|
||||
// This test verifies the following.
|
||||
//
|
||||
|
@ -314,7 +264,7 @@ test03()
|
|||
VERIFY(e == list0301.end());
|
||||
}
|
||||
|
||||
main(int argc, char* argv[])
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
test02();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## Makefile for the testsuite subdirectory of the GNU C++ Standard library.
|
||||
##
|
||||
## Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
## Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||
##
|
||||
## This file is part of the libstdc++ version 3 distribution.
|
||||
## Process this file with automake to produce Makefile.in.
|
||||
|
@ -35,3 +35,12 @@ RUNTEST = `if [ -f @glibcpp_srcdir@/../dejagnu/runtest ] ; then \
|
|||
|
||||
RUNTESTFLAGS =
|
||||
|
||||
CXX = @glibcpp_CXX@ @GLIBCPP_INCLUDES@
|
||||
# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
|
||||
INCLUDES = @TOPLEVEL_INCLUDES@
|
||||
|
||||
noinst_LIBRARIES = libv3test.a
|
||||
|
||||
libv3test_a_SOURCES = testsuite_hooks.cc
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
|
||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994, 1995-8, 1999 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.
|
||||
|
@ -68,6 +68,9 @@ AS = @AS@
|
|||
ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@
|
||||
AWK = @AWK@
|
||||
BASIC_FILE_H = @BASIC_FILE_H@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATALOGS = @CATALOGS@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCODECVT_C = @CCODECVT_C@
|
||||
CCODECVT_H = @CCODECVT_H@
|
||||
|
@ -77,17 +80,27 @@ CPP = @CPP@
|
|||
CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
|
||||
CSHADOW_FLAGS = @CSHADOW_FLAGS@
|
||||
CSTDIO_H = @CSTDIO_H@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
C_INCLUDE_DIR = @C_INCLUDE_DIR@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEBUG_FLAGS = @DEBUG_FLAGS@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
EXEEXT = @EXEEXT@
|
||||
EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
|
||||
GCJ = @GCJ@
|
||||
GCJFLAGS = @GCJFLAGS@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
|
||||
GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@
|
||||
GMOFILES = @GMOFILES@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBIO_INCLUDES = @LIBIO_INCLUDES@
|
||||
LIBMATHOBJS = @LIBMATHOBJS@
|
||||
LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
|
||||
|
@ -98,17 +111,22 @@ LIBUNWIND_FLAG = @LIBUNWIND_FLAG@
|
|||
LN_S = @LN_S@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
|
||||
OPT_LDFLAGS = @OPT_LDFLAGS@
|
||||
OS_INC_SRCDIR = @OS_INC_SRCDIR@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SECTION_FLAGS = @SECTION_FLAGS@
|
||||
SECTION_LDFLAGS = @SECTION_LDFLAGS@
|
||||
STRIP = @STRIP@
|
||||
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WARN_FLAGS = @WARN_FLAGS@
|
||||
|
@ -149,9 +167,31 @@ RUNTEST = `if [ -f @glibcpp_srcdir@/../dejagnu/runtest ] ; then \
|
|||
|
||||
|
||||
RUNTESTFLAGS =
|
||||
|
||||
CXX = @glibcpp_CXX@ @GLIBCPP_INCLUDES@
|
||||
# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
|
||||
INCLUDES = @TOPLEVEL_INCLUDES@
|
||||
|
||||
noinst_LIBRARIES = libv3test.a
|
||||
|
||||
libv3test_a_SOURCES = testsuite_hooks.cc
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
|
||||
|
||||
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
libv3test_a_LIBADD =
|
||||
libv3test_a_OBJECTS = testsuite_hooks.$(OBJEXT)
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_COMMON = README Makefile.am Makefile.in
|
||||
|
||||
|
||||
|
@ -159,26 +199,120 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|||
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
DEP_FILES = .deps/testsuite_hooks.P
|
||||
SOURCES = $(libv3test_a_SOURCES)
|
||||
OBJECTS = $(libv3test_a_OBJECTS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .cc .lo .o .obj .s
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --cygnus testsuite/Makefile
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --foreign testsuite/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
mostlyclean-noinstLIBRARIES:
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
|
||||
distclean-noinstLIBRARIES:
|
||||
|
||||
maintainer-clean-noinstLIBRARIES:
|
||||
|
||||
# FIXME: We should only use cygpath when building on Windows,
|
||||
# and only if it is available.
|
||||
.c.obj:
|
||||
$(COMPILE) -c `cygpath -w $<`
|
||||
|
||||
.s.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.o core *.core
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
.s.lo:
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
||||
|
||||
.S.lo:
|
||||
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
|
||||
maintainer-clean-libtool:
|
||||
|
||||
libv3test.a: $(libv3test_a_OBJECTS) $(libv3test_a_DEPENDENCIES)
|
||||
-rm -f libv3test.a
|
||||
$(AR) cru libv3test.a $(libv3test_a_OBJECTS) $(libv3test_a_LIBADD)
|
||||
$(RANLIB) libv3test.a
|
||||
.cc.o:
|
||||
$(CXXCOMPILE) -c $<
|
||||
.cc.obj:
|
||||
$(CXXCOMPILE) -c `cygpath -w $<`
|
||||
.cc.lo:
|
||||
$(LTCXXCOMPILE) -c $<
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = testsuite
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
here=`cd $(top_builddir) && pwd`; \
|
||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||
distdir=`cd $(distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign testsuite/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
|
@ -188,15 +322,62 @@ distdir: $(DISTFILES)
|
|||
fi; \
|
||||
done
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
mostlyclean-depend:
|
||||
|
||||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf .deps
|
||||
|
||||
maintainer-clean-depend:
|
||||
|
||||
%.o: %.c
|
||||
@echo '$(COMPILE) -c $<'; \
|
||||
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm .deps/$(*F).pp
|
||||
|
||||
%.lo: %.c
|
||||
@echo '$(LTCOMPILE) -c $<'; \
|
||||
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm -f .deps/$(*F).pp
|
||||
|
||||
%.o: %.cc
|
||||
@echo '$(CXXCOMPILE) -c $<'; \
|
||||
$(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-cp .deps/$(*F).pp .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm .deps/$(*F).pp
|
||||
|
||||
%.lo: %.cc
|
||||
@echo '$(LTCXXCOMPILE) -c $<'; \
|
||||
$(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
|
||||
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
|
||||
< .deps/$(*F).pp > .deps/$(*F).P; \
|
||||
tr ' ' '\012' < .deps/$(*F).pp \
|
||||
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
||||
>> .deps/$(*F).P; \
|
||||
rm -f .deps/$(*F).pp
|
||||
|
||||
RUNTESTDEFAULTFLAGS = --tool $(DEJATOOL) --srcdir $$srcdir
|
||||
|
||||
check-DEJAGNU: site.exp
|
||||
srcdir=`cd $(srcdir) && pwd`; export srcdir; \
|
||||
EXPECT=$(EXPECT); export EXPECT; \
|
||||
if [ -f $(top_builddir)/../expect/expect ]; then \
|
||||
TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \
|
||||
export TCL_LIBRARY; \
|
||||
fi; \
|
||||
runtest=$(RUNTEST); \
|
||||
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
$$runtest $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
|
||||
|
@ -225,13 +406,11 @@ info-am:
|
|||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am:
|
||||
check-am: all-am
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-info-am:
|
||||
install-info: install-info-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
|
@ -243,7 +422,7 @@ install-am: all-am
|
|||
install: install-am
|
||||
uninstall-am:
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
|
@ -259,31 +438,46 @@ distclean-generic:
|
|||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
|
||||
mostlyclean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \
|
||||
clean-depend clean-generic mostlyclean-am
|
||||
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-generic clean-am
|
||||
distclean-am: distclean-noinstLIBRARIES distclean-compile \
|
||||
distclean-libtool distclean-tags distclean-depend \
|
||||
distclean-generic clean-am
|
||||
-rm -f libtool
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
maintainer-clean-am: maintainer-clean-generic distclean-am
|
||||
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
|
||||
maintainer-clean-compile maintainer-clean-libtool \
|
||||
maintainer-clean-tags maintainer-clean-depend \
|
||||
maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
.PHONY: tags distdir check-DEJAGNU info-am info dvi-am dvi check \
|
||||
check-am installcheck-am installcheck install-info-am install-info \
|
||||
install-exec-am install-exec install-data-am install-data install-am \
|
||||
install uninstall-am uninstall all-redirect all-am all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
|
||||
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
|
||||
clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
|
||||
distclean-tags clean-tags maintainer-clean-tags distdir \
|
||||
mostlyclean-depend distclean-depend clean-depend \
|
||||
maintainer-clean-depend check-DEJAGNU info-am info dvi-am dvi check \
|
||||
check-am installcheck-am installcheck install-exec-am install-exec \
|
||||
install-data-am install-data install-am install uninstall-am uninstall \
|
||||
all-redirect all-am all installdirs mostlyclean-generic \
|
||||
distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
|
|
|
@ -196,7 +196,12 @@ proc libstdc++-v3_target_compile { source dest type options } {
|
|||
set cxx_final [concat $cxx_final $cxxflags]
|
||||
set cxx_final [concat $cxx_final $includes]
|
||||
|
||||
lappend options "compiler=$cxx_final";
|
||||
lappend options "compiler=$cxx_final"
|
||||
|
||||
# Picks up our local freshly-built testsuite library. We could just
|
||||
# name it directly, "./libv3test.a" but this is more portable.
|
||||
lappend options "ldflags=-L."
|
||||
lappend options "libs=-lv3test"
|
||||
|
||||
return [target_compile $source $dest $type $options]
|
||||
}
|
||||
|
|
77
libstdc++-v3/testsuite/testsuite_hooks.cc
Normal file
77
libstdc++-v3/testsuite/testsuite_hooks.cc
Normal file
|
@ -0,0 +1,77 @@
|
|||
// Utility subroutines for the C++ library testsuite.
|
||||
//
|
||||
// Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ 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 2, 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 COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
//
|
||||
// As a special exception, you may use this file as part of a free software
|
||||
// library without restriction. Specifically, if other files instantiate
|
||||
// templates or use macros or inline functions from this file, or you compile
|
||||
// this file and link it with other files to produce an executable, this
|
||||
// file does not by itself cause the resulting executable to be covered by
|
||||
// the GNU General Public License. This exception does not however
|
||||
// invalidate any other reasons why the executable file might be covered by
|
||||
// the GNU General Public License.
|
||||
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
#ifdef _GLIBCPP_MEM_LIMITS
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void
|
||||
__set_testsuite_memlimit(float __size)
|
||||
{
|
||||
struct rlimit r;
|
||||
rlim_t limit = (rlim_t)(__size * 1048576);
|
||||
|
||||
// Heap size, seems to be common.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_DATA
|
||||
getrlimit(RLIMIT_DATA, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_DATA, &r);
|
||||
#endif
|
||||
|
||||
// Resident set size.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_RSS
|
||||
getrlimit(RLIMIT_RSS, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_RSS, &r);
|
||||
#endif
|
||||
|
||||
// Mapped memory (brk + mmap).
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_VMEM
|
||||
getrlimit(RLIMIT_VMEM, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_VMEM, &r);
|
||||
#endif
|
||||
|
||||
// Virtual memory.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_AS
|
||||
getrlimit(RLIMIT_AS, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_AS, &r);
|
||||
#endif
|
||||
}
|
||||
#endif /* _GLIBCPP_MEM_LIMITS */
|
||||
|
||||
|
||||
gnu_counting_struct::size_type gnu_counting_struct::count = 0;
|
||||
|
||||
int gnu_copy_tracker::itsCopyCount = 0;
|
||||
int gnu_copy_tracker::itsDtorCount = 0;
|
||||
|
|
@ -46,6 +46,10 @@
|
|||
// which starts at zero, increments on instance construction, and decrements
|
||||
// on instance destruction. "assert_count(n)" can be called to VERIFY()
|
||||
// that the count equals N.
|
||||
//
|
||||
// 4) gnu_copy_tracker, from Stephen M. Webb <stephen@bregmasoft.com>.
|
||||
// A class with nontrivial ctor/dtor that provides the ability to track the
|
||||
// number of copy ctors and dtors, and will throw on demand during copy.
|
||||
|
||||
#ifndef _GLIBCPP_TESTSUITE_HOOKS_H
|
||||
#define _GLIBCPP_TESTSUITE_HOOKS_H
|
||||
|
@ -61,64 +65,28 @@
|
|||
|
||||
// Defined in GLIBCPP_CONFIGURE_TESTSUITE.
|
||||
#ifndef _GLIBCPP_MEM_LIMITS
|
||||
|
||||
// Don't do memory limits.
|
||||
void
|
||||
extern void
|
||||
__set_testsuite_memlimit(float x = 0)
|
||||
{ }
|
||||
|
||||
#else
|
||||
|
||||
// Do memory limits.
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef MEMLIMIT_MB
|
||||
#define MEMLIMIT_MB 16.0
|
||||
#endif
|
||||
|
||||
void
|
||||
__set_testsuite_memlimit(float __size = MEMLIMIT_MB)
|
||||
{
|
||||
struct rlimit r;
|
||||
rlim_t limit = (rlim_t)(__size * 1048576);
|
||||
|
||||
// Heap size, seems to be common.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_DATA
|
||||
getrlimit(RLIMIT_DATA, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_DATA, &r);
|
||||
#endif
|
||||
|
||||
// Resident set size.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_RSS
|
||||
getrlimit(RLIMIT_RSS, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_RSS, &r);
|
||||
#endif
|
||||
|
||||
// Mapped memory (brk + mmap).
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_VMEM
|
||||
getrlimit(RLIMIT_VMEM, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_VMEM, &r);
|
||||
#endif
|
||||
|
||||
// Virtual memory.
|
||||
#if _GLIBCPP_HAVE_MEMLIMIT_AS
|
||||
getrlimit(RLIMIT_AS, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit(RLIMIT_AS, &r);
|
||||
#endif
|
||||
}
|
||||
extern void
|
||||
__set_testsuite_memlimit(float __size = MEMLIMIT_MB);
|
||||
#endif
|
||||
|
||||
|
||||
struct gnu_counting_struct
|
||||
{
|
||||
// Specifically and glaringly-obviously marked 'signed' so that when
|
||||
// count mistakenly goes negative, we can track the patterns of
|
||||
// deletions easier.
|
||||
// COUNT mistakenly goes negative, we can track the patterns of
|
||||
// deletions more easily.
|
||||
typedef signed int size_type;
|
||||
static size_type count;
|
||||
gnu_counting_struct() { ++count; }
|
||||
|
@ -128,7 +96,56 @@ struct gnu_counting_struct
|
|||
|
||||
#define assert_count(n) VERIFY(gnu_counting_struct::count == n)
|
||||
|
||||
gnu_counting_struct::size_type gnu_counting_struct::count = 0;
|
||||
|
||||
class gnu_copy_tracker
|
||||
{
|
||||
public:
|
||||
// Cannot be explicit. Conversion ctor used by list_modifiers.cc's
|
||||
// test03(), "range fill at beginning".
|
||||
gnu_copy_tracker (int anId, bool throwOnDemand = false)
|
||||
: itsId(anId), willThrow(throwOnDemand)
|
||||
{}
|
||||
|
||||
gnu_copy_tracker (const gnu_copy_tracker& rhs)
|
||||
: itsId(rhs.id()), willThrow(rhs.willThrow)
|
||||
{
|
||||
++itsCopyCount;
|
||||
if (willThrow) throw "copy tracker exception";
|
||||
}
|
||||
|
||||
gnu_copy_tracker& operator=(const gnu_copy_tracker& rhs)
|
||||
{
|
||||
itsId = rhs.id();
|
||||
// willThrow must obviously already be false to get this far
|
||||
}
|
||||
|
||||
~gnu_copy_tracker() { ++itsDtorCount; }
|
||||
|
||||
int
|
||||
id() const
|
||||
{ return itsId; }
|
||||
|
||||
private:
|
||||
int itsId;
|
||||
const bool willThrow;
|
||||
|
||||
public:
|
||||
static void
|
||||
reset()
|
||||
{ itsCopyCount = 0; itsDtorCount = 0; }
|
||||
|
||||
static int
|
||||
copyCount()
|
||||
{ return itsCopyCount; }
|
||||
|
||||
static int
|
||||
dtorCount()
|
||||
{ return itsDtorCount; }
|
||||
|
||||
private:
|
||||
static int itsCopyCount;
|
||||
static int itsDtorCount;
|
||||
};
|
||||
|
||||
|
||||
#endif // _GLIBCPP_TESTSUITE_HOOKS_H
|
||||
|
|
Loading…
Add table
Reference in a new issue