summaryrefslogtreecommitdiffstats
path: root/contrib/libstdc++/libsupc++
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2004-07-28 03:12:05 +0000
committerkan <kan@FreeBSD.org>2004-07-28 03:12:05 +0000
commit96bad46eee8bf907dceb152bbb9d128bed5a4956 (patch)
tree75ef0e6da73746d6849e25a0996ae34e1aeff51d /contrib/libstdc++/libsupc++
parent5e00ec74d8ce58f99801200d4d3d0412c7cc1b28 (diff)
downloadFreeBSD-src-96bad46eee8bf907dceb152bbb9d128bed5a4956.zip
FreeBSD-src-96bad46eee8bf907dceb152bbb9d128bed5a4956.tar.gz
Gcc 3.4.2 20040728 C++ support bits.
Diffstat (limited to 'contrib/libstdc++/libsupc++')
-rw-r--r--contrib/libstdc++/libsupc++/Makefile.am144
-rw-r--r--contrib/libstdc++/libsupc++/Makefile.in731
-rw-r--r--contrib/libstdc++/libsupc++/cxxabi.h917
-rw-r--r--contrib/libstdc++/libsupc++/del_op.cc9
-rw-r--r--contrib/libstdc++/libsupc++/del_opnt.cc8
-rw-r--r--contrib/libstdc++/libsupc++/del_opv.cc8
-rw-r--r--contrib/libstdc++/libsupc++/del_opvnt.cc8
-rw-r--r--contrib/libstdc++/libsupc++/eh_alloc.cc14
-rw-r--r--contrib/libstdc++/libsupc++/eh_aux_runtime.cc9
-rw-r--r--contrib/libstdc++/libsupc++/eh_catch.cc18
-rw-r--r--contrib/libstdc++/libsupc++/eh_exception.cc8
-rw-r--r--contrib/libstdc++/libsupc++/eh_globals.cc15
-rw-r--r--contrib/libstdc++/libsupc++/eh_personality.cc18
-rw-r--r--contrib/libstdc++/libsupc++/eh_term_handler.cc51
-rw-r--r--contrib/libstdc++/libsupc++/eh_terminate.cc14
-rw-r--r--contrib/libstdc++/libsupc++/eh_throw.cc12
-rw-r--r--contrib/libstdc++/libsupc++/eh_type.cc8
-rw-r--r--contrib/libstdc++/libsupc++/eh_unex_handler.cc34
-rw-r--r--contrib/libstdc++/libsupc++/exception12
-rw-r--r--contrib/libstdc++/libsupc++/exception_defines.h7
-rw-r--r--contrib/libstdc++/libsupc++/new16
-rw-r--r--contrib/libstdc++/libsupc++/new_handler.cc8
-rw-r--r--contrib/libstdc++/libsupc++/new_op.cc8
-rw-r--r--contrib/libstdc++/libsupc++/new_opnt.cc8
-rw-r--r--contrib/libstdc++/libsupc++/new_opv.cc8
-rw-r--r--contrib/libstdc++/libsupc++/new_opvnt.cc8
-rw-r--r--contrib/libstdc++/libsupc++/pure.cc10
-rw-r--r--contrib/libstdc++/libsupc++/tinfo.cc28
-rw-r--r--contrib/libstdc++/libsupc++/tinfo.h28
-rw-r--r--contrib/libstdc++/libsupc++/tinfo2.cc8
-rw-r--r--contrib/libstdc++/libsupc++/typeinfo12
-rw-r--r--contrib/libstdc++/libsupc++/unwind-cxx.h14
-rw-r--r--contrib/libstdc++/libsupc++/vec.cc40
-rw-r--r--contrib/libstdc++/libsupc++/vterminate.cc98
34 files changed, 1287 insertions, 1052 deletions
diff --git a/contrib/libstdc++/libsupc++/Makefile.am b/contrib/libstdc++/libsupc++/Makefile.am
index 8d66e0e..5550686 100644
--- a/contrib/libstdc++/libsupc++/Makefile.am
+++ b/contrib/libstdc++/libsupc++/Makefile.am
@@ -1,73 +1,41 @@
## Makefile for the GNU C++ Support library.
##
-## Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+## Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
##
## Process this file with automake to produce Makefile.in.
##
-## This file is part of GNU CC.
+## This file is part of GCC.
##
-## GNU CC is free software; you can redistribute it and/or modify
+## GCC 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.
##
-## GNU CC is distributed in the hope that it will be useful,
+## GCC 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 GNU CC; see the file COPYING. If not, write to
+## along with GCC; see the file COPYING. If not, write to
## the Free Software Foundation, 59 Temple Place - Suite 330,
-## Boston, MA 02111-1307, USA.
-
-AUTOMAKE_OPTIONS = 1.3 cygnus
-MAINT_CHARSET = latin1
-
-mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
-
-# Cross compiler and multilib support.
-CC = @CC@
-CXX = @glibcpp_CXX@
-toolexecdir = @glibcpp_toolexecdir@
-toolexeclibdir = @glibcpp_toolexeclibdir@
+## Boston, MA 02111-1307, USA.
+include $(top_srcdir)/fragment.am
# Need this library to both be part of libstdc++.a, and installed
# separately too.
-# 1) separate libsupc++.la
+# 1) separate libsupc++.la
toolexeclib_LTLIBRARIES = libsupc++.la
# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
noinst_LTLIBRARIES = libsupc++convenience.la
-# Compile flags that should be constant throughout the build, both for
-# SUBDIRS and for libstdc++-v3 in general.
-OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
-
-# These bits are all figured out from configure. Look in acinclude.m4
-# or configure.in to see how they are set. See GLIBCPP_EXPORT_FLAGS
-CONFIG_CXXFLAGS = \
- @SECTION_FLAGS@ @EXTRA_CXX_FLAGS@
-
-# Warning flags to use.
-WARN_CXXFLAGS = \
- @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once
-
-# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
-GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
-LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
-GCC_INCLUDES = -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include
-
-INCLUDES = \
- $(GCC_INCLUDES) $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES)
-
headers = \
- exception new typeinfo cxxabi.h exception_defines.h
+ exception new typeinfo cxxabi.h exception_defines.h
c_sources = \
- cxa_demangle.c \
- dyn-string.c
+ cp-demangle.c
sources = \
del_op.cc \
@@ -80,9 +48,11 @@ sources = \
eh_exception.cc \
eh_globals.cc \
eh_personality.cc \
+ eh_term_handler.cc \
eh_terminate.cc \
eh_throw.cc \
eh_type.cc \
+ eh_unex_handler.cc \
guard.cc \
new_handler.cc \
new_op.cc \
@@ -92,58 +62,52 @@ sources = \
pure.cc \
tinfo.cc \
tinfo2.cc \
- vec.cc
+ vec.cc \
+ vterminate.cc
libsupc___la_SOURCES = $(sources) $(c_sources)
libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
-glibcppinstalldir = $(gxx_include_dir)
-glibcppinstall_HEADERS = $(headers)
+glibcxxinstalldir = $(gxx_include_dir)
+glibcxxinstall_HEADERS = $(headers)
+
+# AM_CXXFLAGS needs to be in each subdirectory so that it can be
+# modified in a per-library or per-sub-library way. Need to manually
+# set this option because CONFIG_CXXFLAGS has to be after
+# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
+# as the occasion call for it.
+AM_CXXFLAGS = \
+ -fno-implicit-templates \
+ $(LIBSUPCXX_PICFLAGS) \
+ $(WARN_CXXFLAGS) \
+ $(OPTIMIZE_CXXFLAGS) \
+ $(CONFIG_CXXFLAGS)
+
+AM_MAKEFLAGS = \
+ "gxx_include_dir=$(gxx_include_dir)"
-LIBSUPCXX_CXXFLAGS = $(LIBSUPCXX_PICFLAGS)
# Use special rules for pulling things out of libiberty. These
# objects should be compiled with the "C" compiler, not the C++
# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
C_COMPILE = \
- $(CC) $(DEFS) $(GCC_INCLUDES) \
+ $(CC) $(DEFS) $(C_INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-cxa_demangle.c:
- rm -f $@
- $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
-cxa_demangle.lo: cxa_demangle.c
- $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-cxa_demangle.o: cxa_demangle.c
- $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-dyn-string.c:
- rm -f $@
- $(LN_S) $(toplevel_srcdir)/libiberty/dyn-string.c $@
-dyn-string.lo: dyn-string.c
- $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-dyn-string.o: dyn-string.c
- $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-
# LTCOMPILE is copied from LTCXXCOMPILE below.
LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared --mode=compile $(CC) \
- $(DEFS) $(GCC_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+ $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+cp-demangle.c:
+ rm -f $@
+ $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
+cp-demangle.lo: cp-demangle.c
+ $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+cp-demangle.o: cp-demangle.c
+ $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-# AM_CXXFLAGS needs to be in each subdirectory so that it can be
-# modified in a per-library or per-sub-library way. Need to manually
-# set this option because CONFIG_CXXFLAGS has to be after
-# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
-# as the occasion call for it. (ie, --enable-debug)
-AM_CXXFLAGS = \
- -fno-implicit-templates \
- $(LIBSUPCXX_CXXFLAGS) \
- $(WARN_CXXFLAGS) \
- $(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
-
-AM_MAKEFLAGS = \
- "gxx_include_dir=$(gxx_include_dir)"
# libstdc++ libtool notes
@@ -167,8 +131,8 @@ AM_MAKEFLAGS = \
# We have to put --tag disable-shared after --tag CXX lest things
# CXX undo the affect of disable-shared.
LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared \
- --mode=compile $(CXX) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS)
+ --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS)
# 3) We'd have a problem when building the shared libstdc++ object if
# the rules automake generates would be used. We cannot allow g++ to
@@ -177,24 +141,24 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared \
# directory to configure libstdc++-v3 to use gcc as the C++
# compilation driver.
CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared \
- --mode=link $(CXX) \
- @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
+ --mode=link $(CXX) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
# We have to have rules modified from the default to counteract SUN make
-# prepending each of $(glibcppinstall_HEADERS) with VPATH below.
-install-glibcppinstallHEADERS: $(glibcppinstall_HEADERS)
+# prepending each of $(glibcxxinstall_HEADERS) with VPATH below.
+install-glibcxxinstallHEADERS: $(glibcxxinstall_HEADERS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(glibcppinstalldir)
- @list='$(glibcppinstall_HEADERS)'; for p in $$list; do \
+ $(mkinstalldirs) $(DESTDIR)$(glibcxxinstalldir)
+ @list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
q=`echo $$p | sed -e 's,.*/,,'`; \
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
- echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcppinstalldir)/$$q"; \
- $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcppinstalldir)/$$q; \
+ echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q"; \
+ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q; \
done
-uninstall-glibcppinstallHEADERS:
+uninstall-glibcxxinstallHEADERS:
@$(NORMAL_UNINSTALL)
- list='$(glibcppinstall_HEADERS)'; for p in $$list; do \
+ list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
q=`echo $$p | sed -e 's,.*/,,'`; \
- rm -f $(DESTDIR)$(glibcppinstalldir)/$$q; \
+ rm -f $(DESTDIR)$(glibcxxinstalldir)/$$q; \
done
diff --git a/contrib/libstdc++/libsupc++/Makefile.in b/contrib/libstdc++/libsupc++/Makefile.in
index 843c7f4..4e2776a 100644
--- a/contrib/libstdc++/libsupc++/Makefile.in
+++ b/contrib/libstdc++/libsupc++/Makefile.in
@@ -1,6 +1,8 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
+# @configure_input@
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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.
@@ -10,70 +12,52 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-
-SHELL = @SHELL@
+@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-
top_builddir = ..
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
+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_alias = @build_alias@
build_triplet = @build@
-host_alias = @host_alias@
host_triplet = @host@
-target_alias = @target_alias@
target_triplet = @target@
+ACLOCAL = @ACLOCAL@
+ALLOCATOR_H = @ALLOCATOR_H@
+ALLOCATOR_NAME = @ALLOCATOR_NAME@
+AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
-ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@
+ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@
+ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BASIC_FILE_CC = @BASIC_FILE_CC@
BASIC_FILE_H = @BASIC_FILE_H@
-CCODECVT_C = @CCODECVT_C@
+CC = @CC@
CCODECVT_CC = @CCODECVT_CC@
CCODECVT_H = @CCODECVT_H@
CCOLLATE_CC = @CCOLLATE_CC@
CCTYPE_CC = @CCTYPE_CC@
+CFLAGS = @CFLAGS@
CLOCALE_CC = @CLOCALE_CC@
CLOCALE_H = @CLOCALE_H@
CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@
@@ -82,35 +66,73 @@ CMESSAGES_H = @CMESSAGES_H@
CMONEY_CC = @CMONEY_CC@
CNUMERIC_CC = @CNUMERIC_CC@
CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
CSTDIO_H = @CSTDIO_H@
CTIME_CC = @CTIME_CC@
CTIME_H = @CTIME_H@
+CXX = @CXX@
CXXCPP = @CXXCPP@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
C_INCLUDE_DIR = @C_INCLUDE_DIR@
DEBUG_FLAGS = @DEBUG_FLAGS@
-DLLTOOL = @DLLTOOL@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
EXEEXT = @EXEEXT@
EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@
-LIBIO_INCLUDES = @LIBIO_INCLUDES@
+GLIBCXX_BUILD_DEBUG_FALSE = @GLIBCXX_BUILD_DEBUG_FALSE@
+GLIBCXX_BUILD_DEBUG_TRUE = @GLIBCXX_BUILD_DEBUG_TRUE@
+GLIBCXX_BUILD_PCH_FALSE = @GLIBCXX_BUILD_PCH_FALSE@
+GLIBCXX_BUILD_PCH_TRUE = @GLIBCXX_BUILD_PCH_TRUE@
+GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE = @GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE@
+GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE = @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@
+GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE = @GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@
+GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE = @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@
+GLIBCXX_C_HEADERS_C_FALSE = @GLIBCXX_C_HEADERS_C_FALSE@
+GLIBCXX_C_HEADERS_C_STD_FALSE = @GLIBCXX_C_HEADERS_C_STD_FALSE@
+GLIBCXX_C_HEADERS_C_STD_TRUE = @GLIBCXX_C_HEADERS_C_STD_TRUE@
+GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HEADERS_C_TRUE@
+GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
+GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
+GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
+GLIBCXX_TEST_ABI_FALSE = @GLIBCXX_TEST_ABI_FALSE@
+GLIBCXX_TEST_ABI_TRUE = @GLIBCXX_TEST_ABI_TRUE@
+GLIBCXX_TEST_WCHAR_T_FALSE = @GLIBCXX_TEST_WCHAR_T_FALSE@
+GLIBCXX_TEST_WCHAR_T_TRUE = @GLIBCXX_TEST_WCHAR_T_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBMATHOBJS = @LIBMATHOBJS@
-LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
LIBTOOL = @LIBTOOL@
-LIBUNWIND_FLAG = @LIBUNWIND_FLAG@
LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
-OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
+OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
OPT_LDFLAGS = @OPT_LDFLAGS@
OS_INC_SRCDIR = @OS_INC_SRCDIR@
PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
SECTION_FLAGS = @SECTION_FLAGS@
SECTION_LDFLAGS = @SECTION_LDFLAGS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
STRIP = @STRIP@
SYMVER_MAP = @SYMVER_MAP@
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
@@ -118,76 +140,98 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@
WARN_FLAGS = @WARN_FLAGS@
WERROR = @WERROR@
-baseline_file = @baseline_file@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__leading_dot = @am__leading_dot@
+baseline_dir = @baseline_dir@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
check_msgfmt = @check_msgfmt@
+datadir = @datadir@
enable_shared = @enable_shared@
enable_static = @enable_static@
-glibcpp_CXX = @glibcpp_CXX@
-glibcpp_MOFILES = @glibcpp_MOFILES@
-glibcpp_POFILES = @glibcpp_POFILES@
-glibcpp_basedir = @glibcpp_basedir@
-glibcpp_builddir = @glibcpp_builddir@
-glibcpp_localedir = @glibcpp_localedir@
-glibcpp_prefixdir = @glibcpp_prefixdir@
-glibcpp_srcdir = @glibcpp_srcdir@
-glibcpp_thread_h = @glibcpp_thread_h@
-glibcpp_toolexecdir = @glibcpp_toolexecdir@
-glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
+exec_prefix = @exec_prefix@
+glibcxx_MOFILES = @glibcxx_MOFILES@
+glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@
+glibcxx_POFILES = @glibcxx_POFILES@
+glibcxx_builddir = @glibcxx_builddir@
+glibcxx_localedir = @glibcxx_localedir@
+glibcxx_prefixdir = @glibcxx_prefixdir@
+glibcxx_srcdir = @glibcxx_srcdir@
+glibcxx_thread_h = @glibcxx_thread_h@
+glibcxx_toolexecdir = @glibcxx_toolexecdir@
+glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@
gxx_include_dir = @gxx_include_dir@
-ifGNUmake = @ifGNUmake@
-libio_la = @libio_la@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
libtool_VERSION = @libtool_VERSION@
+localstatedir = @localstatedir@
+mandir = @mandir@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+port_specific_symbol_files = @port_specific_symbol_files@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
toplevel_srcdir = @toplevel_srcdir@
-AUTOMAKE_OPTIONS = 1.3 cygnus
MAINT_CHARSET = latin1
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+PWD_COMMAND = $${PWDCMD-pwd}
+STAMP = echo timestamp >
-# Cross compiler and multilib support.
-CC = @CC@
-CXX = @glibcpp_CXX@
-toolexecdir = @glibcpp_toolexecdir@
-toolexeclibdir = @glibcpp_toolexeclibdir@
-
-# Need this library to both be part of libstdc++.a, and installed
-# separately too.
-# 1) separate libsupc++.la
-toolexeclib_LTLIBRARIES = libsupc++.la
-# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
-noinst_LTLIBRARIES = libsupc++convenience.la
-
-# Compile flags that should be constant throughout the build, both for
-# SUBDIRS and for libstdc++-v3 in general.
-OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
+toolexecdir = $(glibcxx_toolexecdir)
+toolexeclibdir = $(glibcxx_toolexeclibdir)
-# These bits are all figured out from configure. Look in acinclude.m4
-# or configure.in to see how they are set. See GLIBCPP_EXPORT_FLAGS
+# These bits are all figured out from configure. Look in acinclude.m4
+# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS.
CONFIG_CXXFLAGS = \
- @SECTION_FLAGS@ @EXTRA_CXX_FLAGS@
+ $(SECTION_FLAGS) $(EXTRA_CXX_FLAGS)
-
-# Warning flags to use.
WARN_CXXFLAGS = \
- @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once
-
+ $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
-# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
-GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
-LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
-GCC_INCLUDES = -I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include
-INCLUDES = \
- $(GCC_INCLUDES) $(GLIBCPP_INCLUDES) $(LIBSUPCXX_INCLUDES)
+# -I/-D flags to pass when compiling.
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+# Need this library to both be part of libstdc++.a, and installed
+# separately too.
+# 1) separate libsupc++.la
+toolexeclib_LTLIBRARIES = libsupc++.la
+# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
+noinst_LTLIBRARIES = libsupc++convenience.la
headers = \
- exception new typeinfo cxxabi.h exception_defines.h
+ exception new typeinfo cxxabi.h exception_defines.h
c_sources = \
- cxa_demangle.c \
- dyn-string.c
+ cp-demangle.c
sources = \
@@ -201,9 +245,11 @@ sources = \
eh_exception.cc \
eh_globals.cc \
eh_personality.cc \
+ eh_term_handler.cc \
eh_terminate.cc \
eh_throw.cc \
eh_type.cc \
+ eh_unex_handler.cc \
guard.cc \
new_handler.cc \
new_op.cc \
@@ -213,48 +259,48 @@ sources = \
pure.cc \
tinfo.cc \
tinfo2.cc \
- vec.cc
+ vec.cc \
+ vterminate.cc
libsupc___la_SOURCES = $(sources) $(c_sources)
libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
-glibcppinstalldir = $(gxx_include_dir)
-glibcppinstall_HEADERS = $(headers)
-
-LIBSUPCXX_CXXFLAGS = $(LIBSUPCXX_PICFLAGS)
-
-# Use special rules for pulling things out of libiberty. These
-# objects should be compiled with the "C" compiler, not the C++
-# compiler, and also should not use the C++ includes.
-C_COMPILE = \
- $(CC) $(DEFS) $(GCC_INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-
-
-# LTCOMPILE is copied from LTCXXCOMPILE below.
-LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared --mode=compile $(CC) \
- $(DEFS) $(GCC_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-
+glibcxxinstalldir = $(gxx_include_dir)
+glibcxxinstall_HEADERS = $(headers)
# AM_CXXFLAGS needs to be in each subdirectory so that it can be
# modified in a per-library or per-sub-library way. Need to manually
# set this option because CONFIG_CXXFLAGS has to be after
# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
-# as the occasion call for it. (ie, --enable-debug)
+# as the occasion call for it.
AM_CXXFLAGS = \
-fno-implicit-templates \
- $(LIBSUPCXX_CXXFLAGS) \
+ $(LIBSUPCXX_PICFLAGS) \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
+ $(CONFIG_CXXFLAGS)
AM_MAKEFLAGS = \
"gxx_include_dir=$(gxx_include_dir)"
+# Use special rules for pulling things out of libiberty. These
+# objects should be compiled with the "C" compiler, not the C++
+# compiler, and also should not use the C++ includes.
+C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include
+C_COMPILE = \
+ $(CC) $(DEFS) $(C_INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
+# LTCOMPILE is copied from LTCXXCOMPILE below.
+LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared --mode=compile $(CC) \
+ $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+
+
# libstdc++ libtool notes
# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
@@ -277,8 +323,8 @@ AM_MAKEFLAGS = \
# We have to put --tag disable-shared after --tag CXX lest things
# CXX undo the affect of disable-shared.
LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared \
- --mode=compile $(CXX) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS)
+ --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS)
# 3) We'd have a problem when building the shared libstdc++ object if
@@ -288,129 +334,124 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared \
# directory to configure libstdc++-v3 to use gcc as the C++
# compilation driver.
CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared \
- --mode=link $(CXX) \
- @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
-
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
-
+ --mode=link $(CXX) \
+ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
-DEFS = @DEFS@ -I. -I$(srcdir) -I..
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-libsupc__convenience_la_LDFLAGS =
-libsupc__convenience_la_LIBADD =
-libsupc__convenience_la_OBJECTS = del_op.lo del_opnt.lo del_opv.lo \
-del_opvnt.lo eh_alloc.lo eh_aux_runtime.lo eh_catch.lo eh_exception.lo \
-eh_globals.lo eh_personality.lo eh_terminate.lo eh_throw.lo eh_type.lo \
-guard.lo new_handler.lo new_op.lo new_opnt.lo new_opv.lo new_opvnt.lo \
-pure.lo tinfo.lo tinfo2.lo vec.lo cxa_demangle.lo dyn-string.lo
-libsupc___la_LDFLAGS =
-libsupc___la_LIBADD =
-libsupc___la_OBJECTS = del_op.lo del_opnt.lo del_opv.lo del_opvnt.lo \
-eh_alloc.lo eh_aux_runtime.lo eh_catch.lo eh_exception.lo eh_globals.lo \
-eh_personality.lo eh_terminate.lo eh_throw.lo eh_type.lo guard.lo \
-new_handler.lo new_op.lo new_opnt.lo new_opv.lo new_opvnt.lo pure.lo \
-tinfo.lo tinfo2.lo vec.lo cxa_demangle.lo dyn-string.lo
-CXXFLAGS = @CXXFLAGS@
-CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CFLAGS = @CFLAGS@
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+subdir = libsupc++
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
+
+libsupc___la_LDFLAGS =
+libsupc___la_LIBADD =
+am__objects_1 = del_op.lo del_opnt.lo del_opv.lo del_opvnt.lo \
+ eh_alloc.lo eh_aux_runtime.lo eh_catch.lo eh_exception.lo \
+ eh_globals.lo eh_personality.lo eh_term_handler.lo \
+ eh_terminate.lo eh_throw.lo eh_type.lo eh_unex_handler.lo \
+ guard.lo new_handler.lo new_op.lo new_opnt.lo new_opv.lo \
+ new_opvnt.lo pure.lo tinfo.lo tinfo2.lo vec.lo vterminate.lo
+am__objects_2 = cp-demangle.lo
+am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
+libsupc__convenience_la_LDFLAGS =
+libsupc__convenience_la_LIBADD =
+am_libsupc__convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsupc__convenience_la_OBJECTS = $(am_libsupc__convenience_la_OBJECTS)
+
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-HEADERS = $(glibcppinstall_HEADERS)
-
-DIST_COMMON = Makefile.am Makefile.in
-
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+DIST_SOURCES = $(libsupc___la_SOURCES) \
+ $(libsupc__convenience_la_SOURCES)
+HEADERS = $(glibcxxinstall_HEADERS)
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+DIST_COMMON = $(glibcxxinstall_HEADERS) $(srcdir)/Makefile.in \
+ $(top_srcdir)/fragment.am Makefile.am
+SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
-TAR = gtar
-GZIP_ENV = --best
-SOURCES = $(libsupc__convenience_la_SOURCES) $(libsupc___la_SOURCES)
-OBJECTS = $(libsupc__convenience_la_OBJECTS) $(libsupc___la_OBJECTS)
+all: all-am
-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 libsupc++/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-noinstLTLIBRARIES:
+.SUFFIXES: .c .cc .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/fragment.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libsupc++/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-
-distclean-noinstLTLIBRARIES:
-
-maintainer-clean-noinstLTLIBRARIES:
-
-mostlyclean-toolexeclibLTLIBRARIES:
-
-clean-toolexeclibLTLIBRARIES:
- -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
-
-distclean-toolexeclibLTLIBRARIES:
-
-maintainer-clean-toolexeclibLTLIBRARIES:
-
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" = "$$p" && dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(toolexeclibdir)
@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
- echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \
- $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \
+ f="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(toolexeclibdir)/$$f"; \
+ $(LIBTOOL) --mode=install $(toolexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(toolexeclibdir)/$$f; \
else :; fi; \
done
uninstall-toolexeclibLTLIBRARIES:
@$(NORMAL_UNINSTALL)
- list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \
+ @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+ p="`echo $$p | sed -e 's|^.*/||'`"; \
+ echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p"; \
+ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \
done
-.c.o:
- $(COMPILE) -c $<
-
-# 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 $<
+clean-toolexeclibLTLIBRARIES:
+ -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+ @list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" = "$$p" && dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(toolexeclibdir) $(libsupc___la_LDFLAGS) $(libsupc___la_OBJECTS) $(libsupc___la_LIBADD) $(LIBS)
+libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES)
+ $(CXXLINK) $(libsupc__convenience_la_LDFLAGS) $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_LIBADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.o core *.core
- -rm -f *.$(OBJEXT)
-
-clean-compile:
+ -rm -f *.$(OBJEXT) core *.core
distclean-compile:
-rm -f *.tab.c
-maintainer-clean-compile:
+.c.o:
+ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
.c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cc.o:
+ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-.s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+.cc.obj:
+ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-.S.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+.cc.lo:
+ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
mostlyclean-libtool:
-rm -f *.lo
@@ -419,187 +460,215 @@ clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+glibcxxinstallHEADERS_INSTALL = $(INSTALL_HEADER)
-maintainer-clean-libtool:
+ETAGS = etags
+ETAGSFLAGS =
-libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES)
- $(CXXLINK) $(libsupc__convenience_la_LDFLAGS) $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_LIBADD) $(LIBS)
-
-libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES)
- $(CXXLINK) -rpath $(toolexeclibdir) $(libsupc___la_LDFLAGS) $(libsupc___la_OBJECTS) $(libsupc___la_LIBADD) $(LIBS)
-.cc.o:
- $(CXXCOMPILE) -c $<
-.cc.obj:
- $(CXXCOMPILE) -c `cygpath -w $<`
-.cc.lo:
- $(LTCXXCOMPILE) -c $<
+CTAGS = ctags
+CTAGSFLAGS =
tags: TAGS
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
+ mkid -fID $$unique
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ 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)
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
-mostlyclean-tags:
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
-clean-tags:
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = libsupc++
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ $(mkinstalldirs) $(distdir)/..
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
fi; \
done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am:
+check-am: all-am
check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-info-am:
-install-info: install-info-am
-install-exec-am: install-toolexeclibLTLIBRARIES
-install-exec: install-exec-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-install-data-am: install-glibcppinstallHEADERS
+installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(toolexeclibdir) $(DESTDIR)$(glibcxxinstalldir)
+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
-install: install-am
-uninstall-am: uninstall-toolexeclibLTLIBRARIES \
- uninstall-glibcppinstallHEADERS
-uninstall: uninstall-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
- $(mkinstalldirs) $(DESTDIR)$(toolexeclibdir) \
- $(DESTDIR)$(glibcppinstalldir)
-
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+ -rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
-mostlyclean-am: mostlyclean-noinstLTLIBRARIES \
- mostlyclean-toolexeclibLTLIBRARIES mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags \
- mostlyclean-generic
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
-mostlyclean: mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+ clean-toolexeclibLTLIBRARIES mostlyclean-am
-clean-am: clean-noinstLTLIBRARIES clean-toolexeclibLTLIBRARIES \
- clean-compile clean-libtool clean-tags clean-generic \
- mostlyclean-am
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
-clean: clean-am
+dvi: dvi-am
-distclean-am: distclean-noinstLTLIBRARIES \
- distclean-toolexeclibLTLIBRARIES distclean-compile \
- distclean-libtool distclean-tags distclean-generic \
- clean-am
- -rm -f libtool
+dvi-am:
-distclean: distclean-am
+info: info-am
-maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \
- maintainer-clean-toolexeclibLTLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-tags 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."
+info-am:
+
+install-data-am: install-glibcxxinstallHEADERS
+
+install-exec-am: install-toolexeclibLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-glibcxxinstallHEADERS uninstall-info-am \
+ uninstall-toolexeclibLTLIBRARIES
-.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \
-clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \
-mostlyclean-toolexeclibLTLIBRARIES distclean-toolexeclibLTLIBRARIES \
-clean-toolexeclibLTLIBRARIES maintainer-clean-toolexeclibLTLIBRARIES \
-uninstall-toolexeclibLTLIBRARIES install-toolexeclibLTLIBRARIES \
-mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile mostlyclean-libtool distclean-libtool \
-clean-libtool maintainer-clean-libtool uninstall-glibcppinstallHEADERS \
-install-glibcppinstallHEADERS tags mostlyclean-tags distclean-tags \
-clean-tags maintainer-clean-tags distdir 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
-
-
-cxa_demangle.c:
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLTLIBRARIES \
+ clean-toolexeclibLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am \
+ install-glibcxxinstallHEADERS install-info install-info-am \
+ install-man install-strip install-toolexeclibLTLIBRARIES \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-glibcxxinstallHEADERS \
+ uninstall-info-am uninstall-toolexeclibLTLIBRARIES
+
+
+cp-demangle.c:
rm -f $@
$(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@
-cxa_demangle.lo: cxa_demangle.c
- $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-cxa_demangle.o: cxa_demangle.c
- $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-dyn-string.c:
- rm -f $@
- $(LN_S) $(toplevel_srcdir)/libiberty/dyn-string.c $@
-dyn-string.lo: dyn-string.c
+cp-demangle.lo: cp-demangle.c
$(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
-dyn-string.o: dyn-string.c
+cp-demangle.o: cp-demangle.c
$(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
# We have to have rules modified from the default to counteract SUN make
-# prepending each of $(glibcppinstall_HEADERS) with VPATH below.
-install-glibcppinstallHEADERS: $(glibcppinstall_HEADERS)
+# prepending each of $(glibcxxinstall_HEADERS) with VPATH below.
+install-glibcxxinstallHEADERS: $(glibcxxinstall_HEADERS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(glibcppinstalldir)
- @list='$(glibcppinstall_HEADERS)'; for p in $$list; do \
+ $(mkinstalldirs) $(DESTDIR)$(glibcxxinstalldir)
+ @list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
q=`echo $$p | sed -e 's,.*/,,'`; \
if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \
- echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcppinstalldir)/$$q"; \
- $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcppinstalldir)/$$q; \
+ echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q"; \
+ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(glibcxxinstalldir)/$$q; \
done
-uninstall-glibcppinstallHEADERS:
+uninstall-glibcxxinstallHEADERS:
@$(NORMAL_UNINSTALL)
- list='$(glibcppinstall_HEADERS)'; for p in $$list; do \
+ list='$(glibcxxinstall_HEADERS)'; for p in $$list; do \
q=`echo $$p | sed -e 's,.*/,,'`; \
- rm -f $(DESTDIR)$(glibcppinstalldir)/$$q; \
+ rm -f $(DESTDIR)$(glibcxxinstalldir)/$$q; \
done
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/contrib/libstdc++/libsupc++/cxxabi.h b/contrib/libstdc++/libsupc++/cxxabi.h
index 301fa7f..3553549 100644
--- a/contrib/libstdc++/libsupc++/cxxabi.h
+++ b/contrib/libstdc++/libsupc++/cxxabi.h
@@ -1,21 +1,21 @@
// new abi support -*- C++ -*-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -39,523 +39,490 @@
is includable from both C and C++. Though the C++ specific parts are not
available in C, naturally enough. */
-#ifndef __CXXABI_H
-#define __CXXABI_H 1
+#ifndef _CXXABI_H
+#define _CXXABI_H 1
+#include <stddef.h>
+
#ifdef __cplusplus
+namespace __cxxabiv1
+{
+ extern "C"
+ {
+#endif
+
+ // Allocate array.
+ void*
+ __cxa_vec_new(size_t __element_count, size_t __element_size,
+ size_t __padding_size, void (*__constructor) (void*),
+ void (*__destructor) (void*));
+
+ void*
+ __cxa_vec_new2(size_t __element_count, size_t __element_size,
+ size_t __padding_size, void (*__constructor) (void*),
+ void (*__destructor) (void*), void *(*__alloc) (size_t),
+ void (*__dealloc) (void*));
+
+ void*
+ __cxa_vec_new3(size_t __element_count, size_t __element_size,
+ size_t __padding_size, void (*__constructor) (void*),
+ void (*__destructor) (void*), void *(*__alloc) (size_t),
+ void (*__dealloc) (void*, size_t));
+
+ // Construct array.
+ void
+ __cxa_vec_ctor(void* __array_address, size_t __element_count,
+ size_t __element_size, void (*__constructor) (void*),
+ void (*__destructor) (void*));
+
+ void
+ __cxa_vec_cctor(void* dest_array, void* src_array, size_t element_count,
+ size_t element_size, void (*constructor) (void*, void*),
+ void (*destructor) (void*));
+
+ // Destruct array.
+ void
+ __cxa_vec_dtor(void* __array_address, size_t __element_count,
+ size_t __element_size, void (*__destructor) (void*));
+
+ void
+ __cxa_vec_cleanup(void* __array_address, size_t __element_count,
+ size_t __element_size, void (*__destructor) (void*));
+
+ // Destruct and release array.
+ void
+ __cxa_vec_delete(void* __array_address, size_t __element_size,
+ size_t __padding_size, void (*__destructor) (void*));
+
+ void
+ __cxa_vec_delete2(void* __array_address, size_t __element_size,
+ size_t __padding_size, void (*__destructor) (void*),
+ void (*__dealloc) (void*));
+
+ void
+ __cxa_vec_delete3(void* __array_address, size_t __element_size,
+ size_t __padding_size, void (*__destructor) (void*),
+ void (*__dealloc) (void*, size_t));
-// We use the compiler builtins __SIZE_TYPE__ and __PTRDIFF_TYPE__ instead of
-// std::size_t and std::ptrdiff_t respectively. This makes us independent of
-// the conformance level of <cstddef> and whether -fhonor-std was supplied.
-// <cstddef> is not currently available during compiler building anyway.
-// Including <stddef.h> would be wrong, as that would rudely place size_t in
-// the global namespace.
+ // The ABI requires a 64-bit type.
+ __extension__ typedef int __guard __attribute__((mode (__DI__)));
-#include <typeinfo>
+ int
+ __cxa_guard_acquire(__guard*);
-namespace __cxxabiv1
-{
+ void
+ __cxa_guard_release(__guard*);
-/* type information for int, float etc */
-class __fundamental_type_info
- : public std::type_info
-{
-public:
- virtual ~__fundamental_type_info ();
-public:
- explicit __fundamental_type_info (const char *__n)
- : std::type_info (__n)
- { }
-};
+ void
+ __cxa_guard_abort(__guard*);
-/* type information for array objects */
-class __array_type_info
- : public std::type_info
-{
-/* abi defined member functions */
-protected:
- virtual ~__array_type_info ();
-public:
- explicit __array_type_info (const char *__n)
- : std::type_info (__n)
- { }
-};
+ // Pure virtual functions.
+ void
+ __cxa_pure_virtual(void);
-/* type information for functions (both member and non-member) */
-class __function_type_info
- : public std::type_info
-{
-/* abi defined member functions */
-public:
- virtual ~__function_type_info ();
-public:
- explicit __function_type_info (const char *__n)
- : std::type_info (__n)
- { }
-
-/* implementation defined member functions */
-protected:
- virtual bool __is_function_p () const;
-};
-
-/* type information for enumerations */
-class __enum_type_info
- : public std::type_info
-{
-/* abi defined member functions */
-public:
- virtual ~__enum_type_info ();
-public:
- explicit __enum_type_info (const char *__n)
- : std::type_info (__n)
- { }
-};
+ // Exception handling.
+ void
+ __cxa_bad_cast();
-/* common type information for simple pointers and pointers to member */
-class __pbase_type_info
- : public std::type_info
-{
-/* abi defined member variables */
-public:
- unsigned int __flags; /* qualification of the target object */
- const std::type_info *__pointee; /* type of pointed to object */
-
-/* abi defined member functions */
-public:
- virtual ~__pbase_type_info ();
-public:
- explicit __pbase_type_info (const char *__n,
- int __quals,
- const std::type_info *__type)
- : std::type_info (__n), __flags (__quals), __pointee (__type)
- { }
+ void
+ __cxa_bad_typeid();
-/* implementation defined types */
-public:
- enum __masks {
- __const_mask = 0x1,
- __volatile_mask = 0x2,
- __restrict_mask = 0x4,
- __incomplete_mask = 0x8,
- __incomplete_class_mask = 0x10
- };
+ // DSO destruction.
+ int
+ __cxa_atexit(void (*)(void*), void*, void*);
-/* implementation defined member functions */
-protected:
- virtual bool __do_catch (const std::type_info *__thr_type,
- void **__thr_obj,
- unsigned __outer) const;
-protected:
- inline virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
- void **__thr_obj,
- unsigned __outer) const;
-};
-
-/* type information for simple pointers */
-class __pointer_type_info
- : public __pbase_type_info
-{
-/* abi defined member functions */
-public:
- virtual ~__pointer_type_info ();
-public:
- explicit __pointer_type_info (const char *__n,
- int __quals,
- const std::type_info *__type)
- : __pbase_type_info (__n, __quals, __type)
- { }
+ int
+ __cxa_finalize(void*);
-/* implementation defined member functions */
-protected:
- virtual bool __is_pointer_p () const;
+ // Demangling routines.
+ char*
+ __cxa_demangle(const char* __mangled_name, char* __output_buffer,
+ size_t* __length, int* __status);
+#ifdef __cplusplus
+ }
+} // namespace __cxxabiv1
+#endif
-protected:
- virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
- void **__thr_obj,
- unsigned __outer) const;
-};
+#ifdef __cplusplus
-class __class_type_info;
+#include <typeinfo>
-/* type information for a pointer to member variable */
-class __pointer_to_member_type_info
- : public __pbase_type_info
+namespace __cxxabiv1
{
-/* abi defined member variables */
-public:
- __class_type_info *__context; /* class of the member */
-
-/* abi defined member functions */
-public:
- virtual ~__pointer_to_member_type_info ();
-public:
- explicit __pointer_to_member_type_info (const char *__n,
- int __quals,
- const std::type_info *__type,
- __class_type_info *__klass)
- : __pbase_type_info (__n, __quals, __type), __context (__klass)
- { }
+ // Type information for int, float etc.
+ class __fundamental_type_info : public std::type_info
+ {
+ public:
+ explicit
+ __fundamental_type_info(const char* __n) : std::type_info(__n) { }
-/* implementation defined member functions */
-protected:
- virtual bool __pointer_catch (const __pbase_type_info *__thr_type,
- void **__thr_obj,
- unsigned __outer) const;
-};
+ virtual
+ ~__fundamental_type_info();
+ };
-/* helper class for __vmi_class_type */
-class __base_class_type_info
-{
-/* abi defined member variables */
-public:
- const __class_type_info* __base_type; /* base class type */
- long __offset_flags; /* offset and info */
-
-/* implementation defined types */
-public:
- enum __offset_flags_masks {
- __virtual_mask = 0x1,
- __public_mask = 0x2,
- __hwm_bit = 2,
- __offset_shift = 8 /* bits to shift offset by */
+ // Type information for array objects.
+ class __array_type_info : public std::type_info
+ {
+ public:
+ explicit
+ __array_type_info(const char* __n) : std::type_info(__n) { }
+
+ virtual
+ ~__array_type_info();
};
-
-/* implementation defined member functions */
-public:
- bool __is_virtual_p () const
- { return __offset_flags & __virtual_mask; }
- bool __is_public_p () const
- { return __offset_flags & __public_mask; }
- __PTRDIFF_TYPE__ __offset () const
- {
- // This shift, being of a signed type, is implementation defined. GCC
- // implements such shifts as arithmetic, which is what we want.
- return static_cast<__PTRDIFF_TYPE__> (__offset_flags) >> __offset_shift;
- }
-};
-/* type information for a class */
-class __class_type_info
- : public std::type_info
-{
-/* abi defined member functions */
-public:
- virtual ~__class_type_info ();
-public:
- explicit __class_type_info (const char *__n)
- : type_info (__n)
- { }
+ // Type information for functions (both member and non-member).
+ class __function_type_info : public std::type_info
+ {
+ public:
+ explicit
+ __function_type_info(const char* __n) : std::type_info(__n) { }
-/* implementation defined types */
-public:
- /* sub_kind tells us about how a base object is contained within a derived
- object. We often do this lazily, hence the UNKNOWN value. At other times
- we may use NOT_CONTAINED to mean not publicly contained. */
- enum __sub_kind
+ virtual
+ ~__function_type_info();
+
+ protected:
+ // Implementation defined member function.
+ virtual bool
+ __is_function_p() const;
+ };
+
+ // Type information for enumerations.
+ class __enum_type_info : public std::type_info
{
- __unknown = 0, /* we have no idea */
- __not_contained, /* not contained within us (in some */
- /* circumstances this might mean not contained */
- /* publicly) */
- __contained_ambig, /* contained ambiguously */
-
- __contained_virtual_mask = __base_class_type_info::__virtual_mask, /* via a virtual path */
- __contained_public_mask = __base_class_type_info::__public_mask, /* via a public path */
- __contained_mask = 1 << __base_class_type_info::__hwm_bit, /* contained within us */
-
- __contained_private = __contained_mask,
- __contained_public = __contained_mask | __contained_public_mask
+ public:
+ explicit
+ __enum_type_info(const char* __n) : std::type_info(__n) { }
+
+ virtual
+ ~__enum_type_info();
};
-public:
- struct __upcast_result;
- struct __dyncast_result;
-
-/* implementation defined member functions */
-protected:
- virtual bool __do_upcast (const __class_type_info *__dst_type, void **__obj_ptr) const;
-
-protected:
- virtual bool __do_catch (const type_info *__thr_type, void **__thr_obj,
- unsigned __outer) const;
-
-
-public:
- /* Helper for upcast. See if DST is us, or one of our bases. */
- /* Return false if not found, true if found. */
- virtual bool __do_upcast (const __class_type_info *__dst,
- const void *__obj,
- __upcast_result &__restrict __result) const;
-
-public:
- /* Indicate whether SRC_PTR of type SRC_TYPE is contained publicly within
- OBJ_PTR. OBJ_PTR points to a base object of our type, which is the
- destination type. SRC2DST indicates how SRC objects might be contained
- within this type. If SRC_PTR is one of our SRC_TYPE bases, indicate the
- virtuality. Returns not_contained for non containment or private
- containment. */
- inline __sub_kind __find_public_src (__PTRDIFF_TYPE__ __src2dst,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr) const;
-
-public:
- /* dynamic cast helper. ACCESS_PATH gives the access from the most derived
- object to this base. DST_TYPE indicates the desired type we want. OBJ_PTR
- points to a base of our type within the complete object. SRC_TYPE
- indicates the static type started from and SRC_PTR points to that base
- within the most derived object. Fill in RESULT with what we find. Return
- true if we have located an ambiguous match. */
- virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
- __sub_kind __access_path,
- const __class_type_info *__dst_type,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr,
- __dyncast_result &__result) const;
-public:
- /* Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE bases are
- inherited by the type started from -- which is not necessarily the
- current type. The current type will be a base of the destination type.
- OBJ_PTR points to the current base. */
- virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr) const;
-};
-
-/* type information for a class with a single non-virtual base */
-class __si_class_type_info
- : public __class_type_info
-{
-/* abi defined member variables */
-public:
- const __class_type_info *__base_type;
-
-/* abi defined member functions */
-public:
- virtual ~__si_class_type_info ();
-public:
- explicit __si_class_type_info (const char *__n,
- const __class_type_info *__base)
- : __class_type_info (__n), __base_type (__base)
+ // Common type information for simple pointers and pointers to member.
+ class __pbase_type_info : public std::type_info
+ {
+ public:
+ unsigned int __flags; // Qualification of the target object.
+ const std::type_info* __pointee; // Type of pointed to object.
+
+ explicit
+ __pbase_type_info(const char* __n, int __quals,
+ const std::type_info* __type)
+ : std::type_info(__n), __flags(__quals), __pointee(__type)
{ }
+
+ virtual
+ ~__pbase_type_info();
+
+ // Implementation defined type.
+ enum __masks
+ {
+ __const_mask = 0x1,
+ __volatile_mask = 0x2,
+ __restrict_mask = 0x4,
+ __incomplete_mask = 0x8,
+ __incomplete_class_mask = 0x10
+ };
+
+ protected:
+ __pbase_type_info(const __pbase_type_info&);
+
+ __pbase_type_info&
+ operator=(const __pbase_type_info&);
+
+ // Implementation defined member functions.
+ virtual bool
+ __do_catch(const std::type_info* __thr_type, void** __thr_obj,
+ unsigned int __outer) const;
+
+ inline virtual bool
+ __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+ unsigned __outer) const;
+ };
-/* implementation defined member functions */
-protected:
- virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
- __sub_kind __access_path,
- const __class_type_info *__dst_type,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr,
- __dyncast_result &__result) const;
- virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__sub_ptr) const;
- virtual bool __do_upcast (const __class_type_info *__dst,
- const void *__obj,
- __upcast_result &__restrict __result) const;
-};
-
-/* type information for a class with multiple and/or virtual bases */
-class __vmi_class_type_info : public __class_type_info {
-/* abi defined member variables */
-public:
- unsigned int __flags; /* details about the class hierarchy */
- unsigned int __base_count; /* number of direct bases */
- __base_class_type_info __base_info[1]; /* array of bases */
- /* The array of bases uses the trailing array struct hack
- so this class is not constructable with a normal constructor. It is
- internally generated by the compiler. */
-
-/* abi defined member functions */
-public:
- virtual ~__vmi_class_type_info ();
-public:
- explicit __vmi_class_type_info (const char *__n,
- int ___flags)
- : __class_type_info (__n), __flags (___flags), __base_count (0)
- { }
+ // Type information for simple pointers.
+ class __pointer_type_info : public __pbase_type_info
+ {
+ public:
+ explicit
+ __pointer_type_info(const char* __n, int __quals,
+ const std::type_info* __type)
+ : __pbase_type_info (__n, __quals, __type) { }
-/* implementation defined types */
-public:
- enum __flags_masks {
- __non_diamond_repeat_mask = 0x1, /* distinct instance of repeated base */
- __diamond_shaped_mask = 0x2, /* diamond shaped multiple inheritance */
- non_public_base_mask = 0x4, /* has non-public direct or indirect base */
- public_base_mask = 0x8, /* has public base (direct) */
-
- __flags_unknown_mask = 0x10
+
+ virtual
+ ~__pointer_type_info();
+
+ protected:
+ // Implementation defined member functions.
+ virtual bool
+ __is_pointer_p() const;
+
+ virtual bool
+ __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+ unsigned __outer) const;
};
-/* implementation defined member functions */
-protected:
- virtual bool __do_dyncast (__PTRDIFF_TYPE__ __src2dst,
- __sub_kind __access_path,
- const __class_type_info *__dst_type,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr,
- __dyncast_result &__result) const;
- virtual __sub_kind __do_find_public_src (__PTRDIFF_TYPE__ __src2dst,
- const void *__obj_ptr,
- const __class_type_info *__src_type,
- const void *__src_ptr) const;
- virtual bool __do_upcast (const __class_type_info *__dst,
- const void *__obj,
- __upcast_result &__restrict __result) const;
-};
-
-/* dynamic cast runtime */
-extern "C"
-void *__dynamic_cast (const void *__src_ptr, /* object started from */
- const __class_type_info *__src_type, /* static type of object */
- const __class_type_info *__dst_type, /* desired target type */
- __PTRDIFF_TYPE__ __src2dst); /* how src and dst are related */
-
- /* src2dst has the following possible values
- >= 0: src_type is a unique public non-virtual base of dst_type
- dst_ptr + src2dst == src_ptr
- -1: unspecified relationship
- -2: src_type is not a public base of dst_type
- -3: src_type is a multiple public non-virtual base of dst_type */
-
-/* array ctor/dtor routines */
-
-/* allocate and construct array */
-extern "C"
-void *__cxa_vec_new (__SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__constructor) (void *),
- void (*__destructor) (void *));
-
-extern "C"
-void *__cxa_vec_new2 (__SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__constructor) (void *),
- void (*__destructor) (void *),
- void *(*__alloc) (__SIZE_TYPE__),
- void (*__dealloc) (void *));
-
-extern "C"
-void *__cxa_vec_new3 (__SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__constructor) (void *),
- void (*__destructor) (void *),
- void *(*__alloc) (__SIZE_TYPE__),
- void (*__dealloc) (void *, __SIZE_TYPE__));
-
-/* construct array */
-extern "C"
-void __cxa_vec_ctor (void *__array_address,
- __SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- void (*__constructor) (void *),
- void (*__destructor) (void *));
-
-extern "C"
-void __cxa_vec_cctor (void *dest_array,
- void *src_array,
- __SIZE_TYPE__ element_count,
- __SIZE_TYPE__ element_size,
- void (*constructor) (void *, void *),
- void (*destructor) (void *));
-
-/* destruct array */
-extern "C"
-void __cxa_vec_dtor (void *__array_address,
- __SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- void (*__destructor) (void *));
-
-/* destruct array */
-extern "C"
-void __cxa_vec_cleanup (void *__array_address,
- __SIZE_TYPE__ __element_count,
- __SIZE_TYPE__ __element_size,
- void (*__destructor) (void *));
-
-/* destruct and release array */
-extern "C"
-void __cxa_vec_delete (void *__array_address,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__destructor) (void *));
-
-extern "C"
-void __cxa_vec_delete2 (void *__array_address,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__destructor) (void *),
- void (*__dealloc) (void *));
-
-extern "C"
-void __cxa_vec_delete3 (void *__array_address,
- __SIZE_TYPE__ __element_size,
- __SIZE_TYPE__ __padding_size,
- void (*__destructor) (void *),
- void (*__dealloc) (void *, __SIZE_TYPE__));
+ class __class_type_info;
+
+ // Type information for a pointer to member variable.
+ class __pointer_to_member_type_info : public __pbase_type_info
+ {
+ public:
+ __class_type_info* __context; // Class of the member.
+
+ explicit
+ __pointer_to_member_type_info(const char* __n, int __quals,
+ const std::type_info* __type,
+ __class_type_info* __klass)
+ : __pbase_type_info(__n, __quals, __type), __context(__klass) { }
-/* guard variables */
+ virtual
+ ~__pointer_to_member_type_info();
-/* The ABI requires a 64-bit type. */
-__extension__ typedef int __guard __attribute__((mode (__DI__)));
+ protected:
+ __pointer_to_member_type_info(const __pointer_to_member_type_info&);
-extern "C"
-int __cxa_guard_acquire (__guard *);
+ __pointer_to_member_type_info&
+ operator=(const __pointer_to_member_type_info&);
-extern "C"
-void __cxa_guard_release (__guard *);
+ // Implementation defined member function.
+ virtual bool
+ __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,
+ unsigned __outer) const;
+ };
-extern "C"
-void __cxa_guard_abort (__guard *);
+ // Helper class for __vmi_class_type.
+ class __base_class_type_info
+ {
+ public:
+ const __class_type_info* __base_type; // Base class type.
+ long __offset_flags; // Offset and info.
+
+ enum __offset_flags_masks
+ {
+ __virtual_mask = 0x1,
+ __public_mask = 0x2,
+ __hwm_bit = 2,
+ __offset_shift = 8 // Bits to shift offset.
+ };
+
+ // Implementation defined member functions.
+ bool
+ __is_virtual_p() const
+ { return __offset_flags & __virtual_mask; }
-/* pure virtual functions */
+ bool
+ __is_public_p() const
+ { return __offset_flags & __public_mask; }
-extern "C" void
-__cxa_pure_virtual (void);
+ ptrdiff_t
+ __offset() const
+ {
+ // This shift, being of a signed type, is implementation
+ // defined. GCC implements such shifts as arithmetic, which is
+ // what we want.
+ return static_cast<ptrdiff_t>(__offset_flags) >> __offset_shift;
+ }
+ };
-/* exception handling */
+ // Type information for a class.
+ class __class_type_info : public std::type_info
+ {
+ public:
+ explicit
+ __class_type_info (const char *__n) : type_info(__n) { }
+
+ virtual
+ ~__class_type_info ();
+
+ // Implementation defined types.
+ // The type sub_kind tells us about how a base object is contained
+ // within a derived object. We often do this lazily, hence the
+ // UNKNOWN value. At other times we may use NOT_CONTAINED to mean
+ // not publicly contained.
+ enum __sub_kind
+ {
+ // We have no idea.
+ __unknown = 0,
+
+ // Not contained within us (in some circumstances this might
+ // mean not contained publicly)
+ __not_contained,
+
+ // Contained ambiguously.
+ __contained_ambig,
+
+ // Via a virtual path.
+ __contained_virtual_mask = __base_class_type_info::__virtual_mask,
-extern "C" void
-__cxa_bad_cast ();
+ // Via a public path.
+ __contained_public_mask = __base_class_type_info::__public_mask,
-extern "C" void
-__cxa_bad_typeid ();
+ // Contained within us.
+ __contained_mask = 1 << __base_class_type_info::__hwm_bit,
+
+ __contained_private = __contained_mask,
+ __contained_public = __contained_mask | __contained_public_mask
+ };
+
+ struct __upcast_result;
+ struct __dyncast_result;
+
+ protected:
+ // Implementation defined member functions.
+ virtual bool
+ __do_upcast(const __class_type_info* __dst_type, void**__obj_ptr) const;
+
+ virtual bool
+ __do_catch(const type_info* __thr_type, void** __thr_obj,
+ unsigned __outer) const;
+
+ public:
+ // Helper for upcast. See if DST is us, or one of our bases.
+ // Return false if not found, true if found.
+ virtual bool
+ __do_upcast(const __class_type_info* __dst, const void* __obj,
+ __upcast_result& __restrict __result) const;
+
+ // Indicate whether SRC_PTR of type SRC_TYPE is contained publicly
+ // within OBJ_PTR. OBJ_PTR points to a base object of our type,
+ // which is the destination type. SRC2DST indicates how SRC
+ // objects might be contained within this type. If SRC_PTR is one
+ // of our SRC_TYPE bases, indicate the virtuality. Returns
+ // not_contained for non containment or private containment.
+ inline __sub_kind
+ __find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+ const __class_type_info* __src_type,
+ const void* __src_ptr) const;
+
+ // Helper for dynamic cast. ACCESS_PATH gives the access from the
+ // most derived object to this base. DST_TYPE indicates the
+ // desired type we want. OBJ_PTR points to a base of our type
+ // within the complete object. SRC_TYPE indicates the static type
+ // started from and SRC_PTR points to that base within the most
+ // derived object. Fill in RESULT with what we find. Return true
+ // if we have located an ambiguous match.
+ virtual bool
+ __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+ const __class_type_info* __dst_type, const void* __obj_ptr,
+ const __class_type_info* __src_type, const void* __src_ptr,
+ __dyncast_result& __result) const;
+
+ // Helper for find_public_subobj. SRC2DST indicates how SRC_TYPE
+ // bases are inherited by the type started from -- which is not
+ // necessarily the current type. The current type will be a base
+ // of the destination type. OBJ_PTR points to the current base.
+ virtual __sub_kind
+ __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+ const __class_type_info* __src_type,
+ const void* __src_ptr) const;
+ };
-/* DSO destruction */
+ // Type information for a class with a single non-virtual base.
+ class __si_class_type_info : public __class_type_info
+ {
+ public:
+ const __class_type_info* __base_type;
-extern "C" int
-__cxa_atexit (void (*)(void *), void *, void *);
+ explicit
+ __si_class_type_info(const char *__n, const __class_type_info *__base)
+ : __class_type_info(__n), __base_type(__base) { }
-extern "C" int
-__cxa_finalize (void *);
+ virtual
+ ~__si_class_type_info();
-/* demangling routines */
+ protected:
+ __si_class_type_info(const __si_class_type_info&);
-extern "C"
-char *__cxa_demangle (const char *__mangled_name,
- char *__output_buffer,
- __SIZE_TYPE__ *__length,
- int *__status);
+ __si_class_type_info&
+ operator=(const __si_class_type_info&);
-// Returns the type_info for the currently handled exception [15.3/8], or
-// null if there is none.
-extern "C"
-std::type_info *__cxa_current_exception_type ();
+ // Implementation defined member functions.
+ virtual bool
+ __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+ const __class_type_info* __dst_type, const void* __obj_ptr,
+ const __class_type_info* __src_type, const void* __src_ptr,
+ __dyncast_result& __result) const;
-} /* namespace __cxxabiv1 */
+ virtual __sub_kind
+ __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+ const __class_type_info* __src_type,
+ const void* __sub_ptr) const;
-/* User programs should use the alias `abi'. */
-namespace abi = __cxxabiv1;
+ virtual bool
+ __do_upcast(const __class_type_info*__dst, const void*__obj,
+ __upcast_result& __restrict __result) const;
+ };
-#else
-#endif /* __cplusplus */
+ // Type information for a class with multiple and/or virtual bases.
+ class __vmi_class_type_info : public __class_type_info
+ {
+ public:
+ unsigned int __flags; // Details about the class hierarchy.
+ unsigned int __base_count; // Dumber of direct bases.
+
+ // The array of bases uses the trailing array struct hack so this
+ // class is not constructable with a normal constructor. It is
+ // internally generated by the compiler.
+ __base_class_type_info __base_info[1]; // Array of bases.
+
+ explicit
+ __vmi_class_type_info(const char* __n, int ___flags)
+ : __class_type_info(__n), __flags(___flags), __base_count(0) { }
+
+ virtual
+ ~__vmi_class_type_info();
+
+ // Implementation defined types.
+ enum __flags_masks
+ {
+ __non_diamond_repeat_mask = 0x1, // Distinct instance of repeated base.
+ __diamond_shaped_mask = 0x2, // Diamond shaped multiple inheritance.
+ __flags_unknown_mask = 0x10
+ };
+
+ protected:
+ // Implementation defined member functions.
+ virtual bool
+ __do_dyncast(ptrdiff_t __src2dst, __sub_kind __access_path,
+ const __class_type_info* __dst_type, const void* __obj_ptr,
+ const __class_type_info* __src_type, const void* __src_ptr,
+ __dyncast_result& __result) const;
+
+ virtual __sub_kind
+ __do_find_public_src(ptrdiff_t __src2dst, const void* __obj_ptr,
+ const __class_type_info* __src_type,
+ const void* __src_ptr) const;
+
+ virtual bool
+ __do_upcast(const __class_type_info* __dst, const void* __obj,
+ __upcast_result& __restrict __result) const;
+ };
+
+ // Dynamic cast runtime.
+ // src2dst has the following possible values
+ // >-1: src_type is a unique public non-virtual base of dst_type
+ // dst_ptr + src2dst == src_ptr
+ // -1: unspecified relationship
+ // -2: src_type is not a public base of dst_type
+ // -3: src_type is a multiple public non-virtual base of dst_type
+ extern "C" void*
+ __dynamic_cast(const void* __src_ptr, // Starting object.
+ const __class_type_info* __src_type, // Static type of object.
+ const __class_type_info* __dst_type, // Desired target type.
+ ptrdiff_t __src2dst); // How src and dst are related.
+
+
+ // Returns the type_info for the currently handled exception [15.3/8], or
+ // null if there is none.
+ extern "C" std::type_info*
+ __cxa_current_exception_type();
+} // namespace __cxxabiv1
+
+// User programs should use the alias `abi'.
+namespace abi = __cxxabiv1;
+#endif // __cplusplus
-#endif /* __CXXABI_H */
+#endif // __CXXABI_H
diff --git a/contrib/libstdc++/libsupc++/del_op.cc b/contrib/libstdc++/libsupc++/del_op.cc
index f433024..e1859d0 100644
--- a/contrib/libstdc++/libsupc++/del_op.cc
+++ b/contrib/libstdc++/libsupc++/del_op.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
@@ -30,6 +30,7 @@
#include "new"
+// We can't rely on having stdlib.h if we're freestanding.
extern "C" void free (void *);
void
diff --git a/contrib/libstdc++/libsupc++/del_opnt.cc b/contrib/libstdc++/libsupc++/del_opnt.cc
index 032ea68..44a7a92 100644
--- a/contrib/libstdc++/libsupc++/del_opnt.cc
+++ b/contrib/libstdc++/libsupc++/del_opnt.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/del_opv.cc b/contrib/libstdc++/libsupc++/del_opv.cc
index 47d7842..95b1f79 100644
--- a/contrib/libstdc++/libsupc++/del_opv.cc
+++ b/contrib/libstdc++/libsupc++/del_opv.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/del_opvnt.cc b/contrib/libstdc++/libsupc++/del_opvnt.cc
index 3504d99a..01a64f8 100644
--- a/contrib/libstdc++/libsupc++/del_opvnt.cc
+++ b/contrib/libstdc++/libsupc++/del_opvnt.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/eh_alloc.cc b/contrib/libstdc++/libsupc++/eh_alloc.cc
index b328acb..ab285fd 100644
--- a/contrib/libstdc++/libsupc++/eh_alloc.cc
+++ b/contrib/libstdc++/libsupc++/eh_alloc.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- Allocate exception objects.
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -94,7 +94,7 @@ emergency_mutex_init ()
extern "C" void *
-__cxa_allocate_exception(std::size_t thrown_size)
+__cxa_allocate_exception(std::size_t thrown_size) throw()
{
void *ret;
@@ -141,7 +141,7 @@ __cxa_allocate_exception(std::size_t thrown_size)
extern "C" void
-__cxa_free_exception(void *vptr)
+__cxa_free_exception(void *vptr) throw()
{
char *ptr = (char *) vptr;
if (ptr >= &emergency_buffer[0][0]
diff --git a/contrib/libstdc++/libsupc++/eh_aux_runtime.cc b/contrib/libstdc++/libsupc++/eh_aux_runtime.cc
index 118aa91..95c0e25 100644
--- a/contrib/libstdc++/libsupc++/eh_aux_runtime.cc
+++ b/contrib/libstdc++/libsupc++/eh_aux_runtime.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -34,7 +34,6 @@
#include "unwind-cxx.h"
#include "exception_defines.h"
-
extern "C" void
__cxa_bad_cast ()
{
diff --git a/contrib/libstdc++/libsupc++/eh_catch.cc b/contrib/libstdc++/libsupc++/eh_catch.cc
index 4a678eb9..0d2196d 100644
--- a/contrib/libstdc++/libsupc++/eh_catch.cc
+++ b/contrib/libstdc++/libsupc++/eh_catch.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- Exception handling routines for catching.
-// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -35,7 +35,7 @@ using namespace __cxxabiv1;
extern "C" void *
-__cxa_begin_catch (void *exc_obj_in)
+__cxa_begin_catch (void *exc_obj_in) throw()
{
_Unwind_Exception *exceptionObject
= reinterpret_cast <_Unwind_Exception *>(exc_obj_in);
@@ -65,10 +65,12 @@ __cxa_begin_catch (void *exc_obj_in)
// This exception was rethrown from an immediately enclosing region.
count = -count + 1;
else
- count += 1;
+ {
+ count += 1;
+ globals->uncaughtExceptions -= 1;
+ }
header->handlerCount = count;
- globals->uncaughtExceptions -= 1;
if (header != prev)
{
header->nextException = prev;
diff --git a/contrib/libstdc++/libsupc++/eh_exception.cc b/contrib/libstdc++/libsupc++/eh_exception.cc
index a581be7..5efd1bc 100644
--- a/contrib/libstdc++/libsupc++/eh_exception.cc
+++ b/contrib/libstdc++/libsupc++/eh_exception.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
diff --git a/contrib/libstdc++/libsupc++/eh_globals.cc b/contrib/libstdc++/libsupc++/eh_globals.cc
index 3033619..4276022 100644
--- a/contrib/libstdc++/libsupc++/eh_globals.cc
+++ b/contrib/libstdc++/libsupc++/eh_globals.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- Manage the thread-local exception globals.
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -47,7 +47,6 @@ static int use_thread_key = -1;
static void
get_globals_dtor (void *ptr)
{
- __gthread_key_dtor (globals_key, ptr);
if (ptr)
std::free (ptr);
}
@@ -70,7 +69,7 @@ get_globals_init_once ()
#endif
extern "C" __cxa_eh_globals *
-__cxa_get_globals_fast ()
+__cxa_get_globals_fast () throw()
{
#if __GTHREADS
if (use_thread_key)
@@ -83,7 +82,7 @@ __cxa_get_globals_fast ()
}
extern "C" __cxa_eh_globals *
-__cxa_get_globals ()
+__cxa_get_globals () throw()
{
#if __GTHREADS
__cxa_eh_globals *g;
diff --git a/contrib/libstdc++/libsupc++/eh_personality.cc b/contrib/libstdc++/libsupc++/eh_personality.cc
index 2b315c3..4d5ae57 100644
--- a/contrib/libstdc++/libsupc++/eh_personality.cc
+++ b/contrib/libstdc++/libsupc++/eh_personality.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- The GNU C++ exception personality routine.
// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -170,7 +170,7 @@ empty_exception_spec (lsda_header_info *info, _Unwind_Sword filter_value)
// Using a different personality function name causes link failures
// when trying to mix code using different exception handling models.
-#ifdef _GLIBCPP_SJLJ_EXCEPTIONS
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
#define PERSONALITY_FUNCTION __gxx_personality_sj0
#define __builtin_eh_return_data_regno(x) x
#else
@@ -232,7 +232,7 @@ PERSONALITY_FUNCTION (int version,
action_record = 0;
handler_switch_value = 0;
-#ifdef _GLIBCPP_SJLJ_EXCEPTIONS
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
// The given "IP" is an index into the call-site table, with two
// exceptions -- -1 means no-action, and 0 means terminate. But
// since we're using uleb128 values, we've not got random access
@@ -285,7 +285,7 @@ PERSONALITY_FUNCTION (int version,
goto found_something;
}
}
-#endif // _GLIBCPP_SJLJ_EXCEPTIONS
+#endif // _GLIBCXX_SJLJ_EXCEPTIONS
// If ip is not present in the table, call terminate. This is for
// a destructor inside a cleanup, or a library routine the compiler
@@ -443,8 +443,10 @@ PERSONALITY_FUNCTION (int version,
}
}
+ /* For targets with pointers smaller than the word size, we must extend the
+ pointer, and this extension is target dependent. */
_Unwind_SetGR (context, __builtin_eh_return_data_regno (0),
- (_Unwind_Ptr) &xh->unwindHeader);
+ __builtin_extend_pointer (&xh->unwindHeader));
_Unwind_SetGR (context, __builtin_eh_return_data_regno (1),
handler_switch_value);
_Unwind_SetIP (context, landing_pad);
diff --git a/contrib/libstdc++/libsupc++/eh_term_handler.cc b/contrib/libstdc++/libsupc++/eh_term_handler.cc
new file mode 100644
index 0000000..f4f1193
--- /dev/null
+++ b/contrib/libstdc++/libsupc++/eh_term_handler.cc
@@ -0,0 +1,51 @@
+// -*- C++ -*- std::terminate handler
+// Copyright (C) 2002, 2003 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC 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.
+//
+// GCC 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 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 "unwind-cxx.h"
+#include <bits/c++config.h>
+
+/* We default to the talkative, informative handler in a normal hosted
+ library. This pulls in the demangler, the dyn-string utilities, and
+ elements of the I/O library. For a low-memory environment, you can return
+ to the earlier "silent death" handler by including <cstdlib>, initializing
+ to "std::abort", and rebuilding the library. In a freestanding mode, we
+ default to this latter approach. */
+
+#if ! _GLIBCXX_HOSTED
+# include <cstdlib>
+#endif
+
+/* The current installed user handler. */
+std::terminate_handler __cxxabiv1::__terminate_handler =
+#if _GLIBCXX_HOSTED
+ __gnu_cxx::__verbose_terminate_handler;
+#else
+ std::abort;
+#endif
+
diff --git a/contrib/libstdc++/libsupc++/eh_terminate.cc b/contrib/libstdc++/libsupc++/eh_terminate.cc
index 58a6ea4..bf9d74d 100644
--- a/contrib/libstdc++/libsupc++/eh_terminate.cc
+++ b/contrib/libstdc++/libsupc++/eh_terminate.cc
@@ -1,21 +1,21 @@
// -*- C++ -*- std::terminate, std::unexpected and friends.
-// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -36,10 +36,6 @@
using namespace __cxxabiv1;
-/* The current installed user handlers. */
-std::terminate_handler __cxxabiv1::__terminate_handler = std::abort;
-std::unexpected_handler __cxxabiv1::__unexpected_handler = std::terminate;
-
void
__cxxabiv1::__terminate (std::terminate_handler handler)
{
diff --git a/contrib/libstdc++/libsupc++/eh_throw.cc b/contrib/libstdc++/libsupc++/eh_throw.cc
index 0e13066..55af4ee 100644
--- a/contrib/libstdc++/libsupc++/eh_throw.cc
+++ b/contrib/libstdc++/libsupc++/eh_throw.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- Exception handling routines for throwing.
// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -69,7 +69,7 @@ __cxa_throw (void *obj, std::type_info *tinfo, void (*dest) (void *))
__cxa_eh_globals *globals = __cxa_get_globals ();
globals->uncaughtExceptions += 1;
-#ifdef _GLIBCPP_SJLJ_EXCEPTIONS
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
_Unwind_SjLj_RaiseException (&header->unwindHeader);
#else
_Unwind_RaiseException (&header->unwindHeader);
@@ -95,7 +95,7 @@ __cxa_rethrow ()
else
header->handlerCount = -header->handlerCount;
-#ifdef _GLIBCPP_SJLJ_EXCEPTIONS
+#ifdef _GLIBCXX_SJLJ_EXCEPTIONS
_Unwind_SjLj_Resume_or_Rethrow (&header->unwindHeader);
#else
#ifdef _LIBUNWIND_STD_ABI
diff --git a/contrib/libstdc++/libsupc++/eh_type.cc b/contrib/libstdc++/libsupc++/eh_type.cc
index 1c8afac..edd5e7b 100644
--- a/contrib/libstdc++/libsupc++/eh_type.cc
+++ b/contrib/libstdc++/libsupc++/eh_type.cc
@@ -1,20 +1,20 @@
// -*- C++ -*- Exception handling routines for catching.
// Copyright (C) 2001 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
diff --git a/contrib/libstdc++/libsupc++/eh_unex_handler.cc b/contrib/libstdc++/libsupc++/eh_unex_handler.cc
new file mode 100644
index 0000000..a8cabb8
--- /dev/null
+++ b/contrib/libstdc++/libsupc++/eh_unex_handler.cc
@@ -0,0 +1,34 @@
+// -*- C++ -*- std::unexpected handler
+// Copyright (C) 2002 Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC 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.
+//
+// GCC 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 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 "unwind-cxx.h"
+
+/* The current installed user handler. */
+std::unexpected_handler __cxxabiv1::__unexpected_handler = std::terminate;
+
diff --git a/contrib/libstdc++/libsupc++/exception b/contrib/libstdc++/libsupc++/exception
index d76a947..6a1a194 100644
--- a/contrib/libstdc++/libsupc++/exception
+++ b/contrib/libstdc++/libsupc++/exception
@@ -3,20 +3,20 @@
// Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -78,7 +78,7 @@ namespace std
/// Takes a new handler function as an argument, returns the old function.
terminate_handler set_terminate(terminate_handler) throw();
/** The runtime will call this function if %exception handling must be
- * abandoned for any reason. */
+ * abandoned for any reason. It can also be called by the user. */
void terminate() __attribute__ ((__noreturn__));
/// Takes a new handler function as an argument, returns the old function.
@@ -109,6 +109,8 @@ namespace __gnu_cxx
@endcode
to use. For more info, see
http://gcc.gnu.org/onlinedocs/libstdc++/19_diagnostics/howto.html#4
+
+ In 3.4 and later, this is on by default.
*/
void __verbose_terminate_handler ();
} // namespace __gnu_cxx
diff --git a/contrib/libstdc++/libsupc++/exception_defines.h b/contrib/libstdc++/libsupc++/exception_defines.h
index fca2d83..1466486 100644
--- a/contrib/libstdc++/libsupc++/exception_defines.h
+++ b/contrib/libstdc++/libsupc++/exception_defines.h
@@ -1,6 +1,6 @@
// -fno-exceptions Support -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2003 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
@@ -31,6 +31,9 @@
// ISO C++ 14882: 19.1 Exception classes
//
+#ifndef _EXCEPTION_DEFINES_H
+#define _EXCEPTION_DEFINES_H 1
+
#ifndef __EXCEPTIONS
// Iff -fno-exceptions, transform error handling code to work without it.
# define try if (true)
@@ -40,3 +43,5 @@
// Else proceed normally.
# define __throw_exception_again throw
#endif
+
+#endif
diff --git a/contrib/libstdc++/libsupc++/new b/contrib/libstdc++/libsupc++/new
index af19ed8..00e9946 100644
--- a/contrib/libstdc++/libsupc++/new
+++ b/contrib/libstdc++/libsupc++/new
@@ -3,20 +3,20 @@
// Copyright (C) 1994, 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -35,8 +35,8 @@
* http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more.
*/
-#ifndef __NEW__
-#define __NEW__
+#ifndef _NEW
+#define _NEW
#include <cstddef>
#include <exception>
@@ -93,8 +93,8 @@ inline void* operator new(std::size_t, void* __p) throw() { return __p; }
inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
// Default placement versions of operator delete.
-inline void operator delete (void*, void*) throw() { };
-inline void operator delete[](void*, void*) throw() { };
+inline void operator delete (void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
//@}
} // extern "C++"
diff --git a/contrib/libstdc++/libsupc++/new_handler.cc b/contrib/libstdc++/libsupc++/new_handler.cc
index 7c6aae0..2f9f6bd 100644
--- a/contrib/libstdc++/libsupc++/new_handler.cc
+++ b/contrib/libstdc++/libsupc++/new_handler.cc
@@ -3,20 +3,20 @@
// Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/new_op.cc b/contrib/libstdc++/libsupc++/new_op.cc
index 6e83b39..29eac93 100644
--- a/contrib/libstdc++/libsupc++/new_op.cc
+++ b/contrib/libstdc++/libsupc++/new_op.cc
@@ -1,20 +1,20 @@
// Support routines for the -*- C++ -*- dynamic memory management.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/new_opnt.cc b/contrib/libstdc++/libsupc++/new_opnt.cc
index e97ac98..4d7a508 100644
--- a/contrib/libstdc++/libsupc++/new_opnt.cc
+++ b/contrib/libstdc++/libsupc++/new_opnt.cc
@@ -1,20 +1,20 @@
// Support routines for the -*- C++ -*- dynamic memory management.
// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/new_opv.cc b/contrib/libstdc++/libsupc++/new_opv.cc
index 7b1b1ca..74ad49c 100644
--- a/contrib/libstdc++/libsupc++/new_opv.cc
+++ b/contrib/libstdc++/libsupc++/new_opv.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/new_opvnt.cc b/contrib/libstdc++/libsupc++/new_opvnt.cc
index ad5fbf4..0a3f716 100644
--- a/contrib/libstdc++/libsupc++/new_opvnt.cc
+++ b/contrib/libstdc++/libsupc++/new_opvnt.cc
@@ -2,20 +2,20 @@
// Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
diff --git a/contrib/libstdc++/libsupc++/pure.cc b/contrib/libstdc++/libsupc++/pure.cc
index 1f35133..66ccb7d 100644
--- a/contrib/libstdc++/libsupc++/pure.cc
+++ b/contrib/libstdc++/libsupc++/pure.cc
@@ -1,20 +1,20 @@
// -*- C++ -*-
// Copyright (C) 2000, 2001 Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
//
@@ -30,7 +30,7 @@
#include <bits/c++config.h>
#include "unwind-cxx.h"
-#ifdef _GLIBCPP_HAVE_UNISTD_H
+#ifdef _GLIBCXX_HAVE_UNISTD_H
# include <unistd.h>
# define writestr(str) write(2, str, sizeof(str) - 1)
# ifdef __GNU_LIBRARY__
diff --git a/contrib/libstdc++/libsupc++/tinfo.cc b/contrib/libstdc++/libsupc++/tinfo.cc
index d6e465e..62fa448 100644
--- a/contrib/libstdc++/libsupc++/tinfo.cc
+++ b/contrib/libstdc++/libsupc++/tinfo.cc
@@ -1,21 +1,21 @@
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
-// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -85,7 +85,7 @@ __do_upcast (const abi::__class_type_info *, void **) const
return false;
}
-};
+}
namespace {
@@ -100,7 +100,7 @@ struct vtable_prefix
ptrdiff_t whole_object;
// Additional padding if necessary.
-#ifdef _GLIBCPP_VTABLE_PADDING
+#ifdef _GLIBCXX_VTABLE_PADDING
ptrdiff_t padding1;
#endif
@@ -108,7 +108,7 @@ struct vtable_prefix
const __class_type_info *whole_type;
// Additional padding if necessary.
-#ifdef _GLIBCPP_VTABLE_PADDING
+#ifdef _GLIBCXX_VTABLE_PADDING
ptrdiff_t padding2;
#endif
@@ -172,7 +172,7 @@ inline bool contained_nonvirtual_p (__class_type_info::__sub_kind access_path)
static const __class_type_info *const nonvirtual_base_type =
static_cast <const __class_type_info *> (0) + 1;
-}; // namespace
+} // namespace
namespace __cxxabiv1
{
@@ -200,7 +200,6 @@ struct __class_type_info::__upcast_result
// if in vbase the __class_type_info of vbase
// if a non-virtual base then 1
// else NULL
- public:
__upcast_result (int d)
:dst_ptr (NULL), part2dst (__unknown), src_details (d), base_type (NULL)
{}
@@ -216,12 +215,17 @@ struct __class_type_info::__dyncast_result
__sub_kind dst2src; // path from target to sub object
int whole_details; // details of the whole class hierarchy
- public:
__dyncast_result (int details_ = __vmi_class_type_info::__flags_unknown_mask)
:dst_ptr (NULL), whole2dst (__unknown),
whole2src (__unknown), dst2src (__unknown),
whole_details (details_)
{}
+
+protected:
+ __dyncast_result(const __dyncast_result&);
+
+ __dyncast_result&
+ operator=(const __dyncast_result&);
};
bool __class_type_info::
@@ -736,4 +740,4 @@ __dynamic_cast (const void *src_ptr, // object started from
return NULL;
}
-}; // namespace __cxxabiv1
+} // namespace __cxxabiv1
diff --git a/contrib/libstdc++/libsupc++/tinfo.h b/contrib/libstdc++/libsupc++/tinfo.h
index b7191900..2c55e03 100644
--- a/contrib/libstdc++/libsupc++/tinfo.h
+++ b/contrib/libstdc++/libsupc++/tinfo.h
@@ -1,7 +1,33 @@
// RTTI support internals for -*- C++ -*-
-// Copyright (C) 1994, 1995, 1996, 1998, 1999, 2000, 2001
+// Copyright (C) 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2004
// Free Software Foundation
+// This file is part of GCC.
+//
+// GCC 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.
+
+// GCC 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 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 "typeinfo"
#include <cstddef>
diff --git a/contrib/libstdc++/libsupc++/tinfo2.cc b/contrib/libstdc++/libsupc++/tinfo2.cc
index 600cdf6..d6a17c8 100644
--- a/contrib/libstdc++/libsupc++/tinfo2.cc
+++ b/contrib/libstdc++/libsupc++/tinfo2.cc
@@ -3,20 +3,20 @@
// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
diff --git a/contrib/libstdc++/libsupc++/typeinfo b/contrib/libstdc++/libsupc++/typeinfo
index 88a2639..1396baa 100644
--- a/contrib/libstdc++/libsupc++/typeinfo
+++ b/contrib/libstdc++/libsupc++/typeinfo
@@ -2,20 +2,20 @@
// Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002
// Free Software Foundation
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -32,8 +32,8 @@
* This header provides RTTI support.
*/
-#ifndef __TYPEINFO__
-#define __TYPEINFO__
+#ifndef _TYPEINFO
+#define _TYPEINFO
#include <exception>
diff --git a/contrib/libstdc++/libsupc++/unwind-cxx.h b/contrib/libstdc++/libsupc++/unwind-cxx.h
index b0b0b366..1e17972 100644
--- a/contrib/libstdc++/libsupc++/unwind-cxx.h
+++ b/contrib/libstdc++/libsupc++/unwind-cxx.h
@@ -1,20 +1,20 @@
// -*- C++ -*- Exception handling and frame unwind runtime interface routines.
// Copyright (C) 2001 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
//
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -30,8 +30,8 @@
// This is derived from the C++ ABI for IA-64. Where we diverge
// for cross-architecture compatibility are noted with "@@@".
-#ifndef __UNWIND_CXX_H
-#define __UNWIND_CXX_H 1
+#ifndef _UNWIND_CXX_H
+#define _UNWIND_CXX_H 1
// Level 2: C++ ABI
@@ -168,4 +168,4 @@ __get_exception_header_from_ue (_Unwind_Exception *exc)
} /* namespace __cxxabiv1 */
-#endif // __UNWIND_CXX_H
+#endif // _UNWIND_CXX_H
diff --git a/contrib/libstdc++/libsupc++/vec.cc b/contrib/libstdc++/libsupc++/vec.cc
index 557fd03..86d41d9 100644
--- a/contrib/libstdc++/libsupc++/vec.cc
+++ b/contrib/libstdc++/libsupc++/vec.cc
@@ -1,21 +1,21 @@
// New abi Support -*- C++ -*-
-// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
//
-// This file is part of GNU CC.
+// This file is part of GCC.
//
-// GNU CC is free software; you can redistribute it and/or modify
+// GCC 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.
-// GNU CC is distributed in the hope that it will be useful,
+// GCC 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 GNU CC; see the file COPYING. If not, write to
+// along with GCC; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
@@ -42,13 +42,19 @@ namespace __cxxabiv1
{
struct uncatch_exception
{
- uncatch_exception ();
+ uncatch_exception();
~uncatch_exception () { __cxa_begin_catch (&p->unwindHeader); }
- __cxa_exception *p;
+ __cxa_exception* p;
+
+ private:
+ uncatch_exception&
+ operator=(const uncatch_exception&);
+
+ uncatch_exception(const uncatch_exception&);
};
- uncatch_exception::uncatch_exception ()
+ uncatch_exception::uncatch_exception() : p(0)
{
__cxa_eh_globals *globals = __cxa_get_globals_fast ();
@@ -83,7 +89,9 @@ namespace __cxxabiv1
{
std::size_t size = element_count * element_size + padding_size;
char *base = static_cast <char *> (alloc (size));
-
+ if (!base)
+ return base;
+
if (padding_size)
{
base += padding_size;
@@ -116,6 +124,8 @@ namespace __cxxabiv1
{
std::size_t size = element_count * element_size + padding_size;
char *base = static_cast<char *>(alloc (size));
+ if (!base)
+ return base;
if (padding_size)
{
@@ -278,7 +288,10 @@ namespace __cxxabiv1
void (*destructor) (void *),
void (*dealloc) (void *))
{
- char *base = static_cast<char *>(array_address);
+ if (!array_address)
+ return;
+
+ char* base = static_cast<char *>(array_address);
if (padding_size)
{
@@ -308,9 +321,12 @@ namespace __cxxabiv1
void (*destructor) (void *),
void (*dealloc) (void *, std::size_t))
{
- char *base = static_cast <char *> (array_address);
+ if (!array_address)
+ return;
+
+ char* base = static_cast <char *> (array_address);
std::size_t size = 0;
-
+
if (padding_size)
{
std::size_t element_count = reinterpret_cast<std::size_t *> (base)[-1];
diff --git a/contrib/libstdc++/libsupc++/vterminate.cc b/contrib/libstdc++/libsupc++/vterminate.cc
new file mode 100644
index 0000000..b53e9ce
--- /dev/null
+++ b/contrib/libstdc++/libsupc++/vterminate.cc
@@ -0,0 +1,98 @@
+// Verbose terminate_handler -*- C++ -*-
+
+// Copyright (C) 2001, 2002, 2004 Free Software Foundation
+//
+// 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 <bits/c++config.h>
+#include <cstdlib>
+#include <exception>
+#include <exception_defines.h>
+#include <cxxabi.h>
+# include <cstdio>
+
+using namespace std;
+using namespace abi;
+
+namespace __gnu_cxx
+{
+ // A replacement for the standard terminate_handler which prints
+ // more information about the terminating exception (if any) on
+ // stderr.
+ void __verbose_terminate_handler()
+ {
+ static bool terminating;
+ if (terminating)
+ {
+ fputs("terminate called recursively\n", stderr);
+ abort ();
+ }
+ terminating = true;
+
+ // Make sure there was an exception; terminate is also called for an
+ // attempt to rethrow when there is no suitable exception.
+ type_info *t = __cxa_current_exception_type();
+ if (t)
+ {
+ // Note that "name" is the mangled name.
+ char const *name = t->name();
+ {
+ int status = -1;
+ char *dem = 0;
+
+ dem = __cxa_demangle(name, 0, 0, &status);
+
+ fputs("terminate called after throwing an instance of '", stderr);
+ if (status == 0)
+ fputs(dem, stderr);
+ else
+ fputs(name, stderr);
+ fputs("'\n", stderr);
+
+ if (status == 0)
+ free(dem);
+ }
+
+ // If the exception is derived from std::exception, we can
+ // give more information.
+ try { __throw_exception_again; }
+#ifdef __EXCEPTIONS
+ catch (exception &exc)
+ {
+ char const *w = exc.what();
+ fputs(" what(): ", stderr);
+ fputs(w, stderr);
+ fputs("\n", stderr);
+ }
+#endif
+ catch (...) { }
+ }
+ else
+ fputs("terminate called without an active exception\n", stderr);
+
+ abort();
+ }
+} // namespace __gnu_cxx
OpenPOWER on IntegriCloud