diff options
210 files changed, 9862 insertions, 0 deletions
diff --git a/gcc/config/rs6000/aix52.h b/gcc/config/rs6000/aix52.h new file mode 100644 index 00000000000..b61cc3057e2 --- /dev/null +++ b/gcc/config/rs6000/aix52.h @@ -0,0 +1,191 @@ +/* Definitions of target machine for GNU compiler, + for IBM RS/6000 POWER running AIX V5.2. + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by David Edelsohn (edelsohn@gnu.org). + +This file is part of GNU CC. + +GNU CC 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, +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 +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + + +/* AIX V5 and above support 64-bit executables. */ +#undef SUBSUBTARGET_SWITCHES +#define SUBSUBTARGET_SWITCHES \ + {"aix64", MASK_64BIT | MASK_POWERPC64 | MASK_POWERPC, \ + N_("Compile for 64-bit pointers") }, \ + {"aix32", - (MASK_64BIT | MASK_POWERPC64), \ + N_("Compile for 32-bit pointers") }, \ + {"pe", 0, \ + N_("Support message passing with the Parallel Environment") }, + +/* Sometimes certain combinations of command options do not make sense + on a particular target machine. You can define a macro + `OVERRIDE_OPTIONS' to take account of this. This macro, if + defined, is executed once just after all the command options have + been parsed. + + The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to + get control. */ + +#define NON_POWERPC_MASKS (MASK_POWER | MASK_POWER2) +#define SUBTARGET_OVERRIDE_OPTIONS \ +do { \ + if (TARGET_64BIT && (target_flags & NON_POWERPC_MASKS)) \ + { \ + target_flags &= ~NON_POWERPC_MASKS; \ + warning ("-maix64 and POWER architecture are incompatible"); \ + } \ + if (TARGET_64BIT && ! TARGET_POWERPC64) \ + { \ + target_flags |= MASK_POWERPC64; \ + warning ("-maix64 requires PowerPC64 architecture remain enabled"); \ + } \ + if (TARGET_POWERPC64 && ! TARGET_64BIT) \ + { \ + error ("-maix64 required: 64-bit computation with 32-bit addressing not yet supported"); \ + } \ +} while (0); + +#undef ASM_SPEC +#define ASM_SPEC "-u %{maix64:-a64 -mppc64} %(asm_cpu)" + +/* Common ASM definitions used by ASM_SPEC amonst the various targets + for handling -mcpu=xxx switches. */ +#undef ASM_CPU_SPEC +#define ASM_CPU_SPEC \ +"%{!mcpu*: %{!maix64: \ + %{mpowerpc64: -mppc64} \ + %{!mpower64: %(asm_default)}}} \ +%{mcpu=power3: -m604} \ +%{mcpu=power4: -m604} \ +%{mcpu=powerpc: -mppc} \ +%{mcpu=rs64a: -mppc} \ +%{mcpu=603: -m603} \ +%{mcpu=603e: -m603} \ +%{mcpu=604: -m604} \ +%{mcpu=604e: -m604} \ +%{mcpu=620: -mppc} \ +%{mcpu=630: -m604}" + +#undef ASM_DEFAULT_SPEC +#define ASM_DEFAULT_SPEC "-mppc" + +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("_IBMR2"); \ + builtin_define ("_POWER"); \ + builtin_define ("_LONG_LONG"); \ + builtin_define ("_AIX"); \ + builtin_define ("_AIX32"); \ + builtin_define ("_AIX41"); \ + builtin_define ("_AIX43"); \ + builtin_define ("_AIX51"); \ + builtin_define ("_AIX52"); \ + builtin_assert ("system=unix"); \ + builtin_assert ("system=aix"); \ + } \ + while (0) + +#undef CPP_SPEC +#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \ + %{ansi: -D_ANSI_C_SOURCE} \ + %{maix64: -D__64BIT__} \ + %{mpe: -I/usr/lpp/ppe.poe/include} \ + %{pthread: -D_THREAD_SAFE}" + +/* The GNU C++ standard library requires that these macros be + defined. */ +#undef CPLUSPLUS_CPP_SPEC +#define CPLUSPLUS_CPP_SPEC \ + "-D_XOPEN_SOURCE=500 \ + -D_XOPEN_SOURCE_EXTENDED=1 \ + -D_LARGE_FILE_API \ + -D_ALL_SOURCE \ + %{maix64: -D__64BIT__} \ + %{mpe: -I/usr/lpp/ppe.poe/include} \ + %{pthread: -D_THREAD_SAFE}" + +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) + +#undef PROCESSOR_DEFAULT +#define PROCESSOR_DEFAULT PROCESSOR_PPC630 +#undef PROCESSOR_DEFAULT64 +#define PROCESSOR_DEFAULT64 PROCESSOR_POWER4 + +#undef TARGET_POWER +#define TARGET_POWER 0 + +/* Define this macro as a C expression for the initializer of an + array of string to tell the driver program which options are + defaults for this target and thus do not need to be handled + specially when using `MULTILIB_OPTIONS'. + + Do not define this macro if `MULTILIB_OPTIONS' is not defined in + the target makefile fragment or if none of the options listed in + `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ + +#undef MULTILIB_DEFAULTS + +#undef LIB_SPEC +#define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\ + %{p:-L/lib/profiled -L/usr/lib/profiled}\ + %{!maix64:%{!shared:%{g*:-lg}}}\ + %{mpe:-L/usr/lpp/ppe.poe/lib -lmpi -lvtd}\ + %{pthread:-lpthreads} -lc" + +#undef LINK_SPEC +#define LINK_SPEC "-bpT:0x10000000 -bpD:0x20000000 %{!r:-btextro} -bnodelcsect\ + %{static:-bnso %(link_syscalls) } %{shared:-bM:SRE %{!e:-bnoentry}}\ + %{!maix64:%{!shared:%{g*: %(link_libg) }}} %{maix64:-b64}\ + %{mpe:-binitfini:poe_remote_main}" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "%{!shared:\ + %{maix64:%{pg:gcrt0_64%O%s}%{!pg:%{p:mcrt0_64%O%s}%{!p:crt0_64%O%s}}}\ + %{!maix64:\ + %{pthread:%{pg:gcrt0_r%O%s}%{!pg:%{p:mcrt0_r%O%s}%{!p:crt0_r%O%s}}}\ + %{!pthread:%{pg:gcrt0%O%s}%{!pg:%{p:mcrt0%O%s}%{!p:crt0%O%s}}}}}" + +/* AIX V5 typedefs ptrdiff_t as "long" while earlier releases used "int". */ + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "long int" + +/* Type used for wchar_t, as a string used in a declaration. */ +#undef WCHAR_TYPE +#define WCHAR_TYPE (!TARGET_64BIT ? "short unsigned int" : "unsigned int") + +/* Width of wchar_t in bits. */ +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE (!TARGET_64BIT ? 16 : 32) +#define MAX_WCHAR_TYPE_SIZE 32 + +/* AIX V5 uses PowerPC nop (ori 0,0,0) instruction as call glue for PowerPC + and "cror 31,31,31" for POWER architecture. */ + +#undef RS6000_CALL_GLUE +#define RS6000_CALL_GLUE "{cror 31,31,31|nop}" + +/* AIX 4.2 and above provides initialization and finalization function + support from linker command line. */ +#undef HAS_INIT_SECTION +#define HAS_INIT_SECTION + +#undef LD_INIT_SWITCH +#define LD_INIT_SWITCH "-binitfini" diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52 new file mode 100644 index 00000000000..97e1e079508 --- /dev/null +++ b/gcc/config/rs6000/t-aix52 @@ -0,0 +1,52 @@ +# We want fine grained libraries, so use the new code to build the +# floating point emulation libraries. +FPBIT = fp-bit.c +DPBIT = dp-bit.c + +dp-bit.c: $(srcdir)/config/fp-bit.c + cat $(srcdir)/config/fp-bit.c > dp-bit.c + +fp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define FLOAT' > fp-bit.c + cat $(srcdir)/config/fp-bit.c >> fp-bit.c + +# Build the libraries for pthread and all of the +# different processor models + +MULTILIB_OPTIONS = pthread maix64 + +MULTILIB_DIRNAMES = pthread ppc64 + +MULTILIB_MATCHES = + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +# Build a shared libgcc library. +SHLIB_EXT = .a +SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \ + @multilib_flags@ @shlib_objs@ -lc \ + `case @shlib_base_name@ in \ + *pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \ + *) echo -lc ;; esac` ; \ + rm -f tmp-@shlib_base_name@.a ; \ + $(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \ + mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \ + rm -f @multilib_dir@/shr.o +# $(slibdir) double quoted to protect it from expansion while building +# libgcc.mk. We want this delayed until actual install time. +SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(slibdir)/ +SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` +SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_NM_FLAGS = -Bpg -X32_64 + +# Either 32-bit and 64-bit objects in archives. +AR_FLAGS_FOR_TARGET = -X32_64 + +# Compile Ada files with minimal-toc. The primary focus is gnatlib, so +# that the library does not use nearly the entire TOC of applications +# until gnatlib is built as a shared library on AIX. Compiling the +# compiler with -mminimal-toc does not cause any harm. +T_ADAFLAGS = -mminimal-toc diff --git a/gcc/config/vax/elf.h b/gcc/config/vax/elf.h new file mode 100644 index 00000000000..fe00d22336c --- /dev/null +++ b/gcc/config/vax/elf.h @@ -0,0 +1,95 @@ +/* Target definitions for GNU compiler for VAX using ELF + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by Matt Thomas (matt@3am-software.com) + +This file is part of GNU CC. + +GNU CC 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, +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 +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#undef REGISTER_PREFIX +#undef REGISTER_NAMES +#define REGISTER_PREFIX "%" +#define REGISTER_NAMES \ +{"%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7", \ + "%r8", "%r9", "%r10", "%r11", "%ap", "%fp", "%sp", "%pc"} + +#undef SIZE_TYPE +#define SIZE_TYPE "long unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "long int" + +/* Profiling routine. */ +#undef VAX_FUNCTION_PROFILER_NAME +#define VAX_FUNCTION_PROFILER_NAME "__mcount" + +/* Let's be re-entrant. */ +#undef PCC_STATIC_STRUCT_RETURN + +/* Make sure .stabs for a function are always the same section. */ +#define DBX_OUTPUT_FUNCTION_END(file,decl) function_section(decl) + +/* Before the prologue, the top of the frame is below the argument + count pushed by the CALLS and before the start of the saved registers. */ +#define INCOMING_FRAME_SP_OFFSET 0 + +/* We use R2-R5 (call-clobbered) registers for exceptions. */ +#define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N) + 2 : INVALID_REGNUM) + +/* Place the top of the stack for the DWARF2 EH stackadj value. */ +#define EH_RETURN_STACKADJ_RTX \ + gen_rtx_MEM (SImode, \ + plus_constant (gen_rtx_REG (Pmode, FRAME_POINTER_REGNUM), \ + -4)) + +/* Simple store the return handler into the call frame. */ +#define EH_RETURN_HANDLER_RTX \ + gen_rtx_MEM (Pmode, \ + plus_constant (gen_rtx_REG (Pmode, FRAME_POINTER_REGNUM), \ + 16)) + + +/* Reserve the top of the stack for exception handler stackadj value. */ +#undef STARTING_FRAME_OFFSET +#define STARTING_FRAME_OFFSET -4 + +/* The VAX wants no space between the case instruction and the jump table. */ +#undef ASM_OUTPUT_BEFORE_CASE_LABEL +#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE, PREFIX, NUM, TABLE) + +/* Get the udiv/urem calls out of the user's namespace. */ +#undef UDIVSI3_LIBCALL +#define UDIVSI3_LIBCALL "*__udiv" +#undef UMODSI3_LIBCALL +#define UMODSI3_LIBCALL "*__urem" + +#undef OVERRIDE_OPTIONS +#define OVERRIDE_OPTIONS \ + do \ + { \ + /* Do generic VAX overrides. */ \ + override_options (); \ + \ + /* Turn off function CSE if we're \ + doing PIC. */ \ + if (flag_pic) flag_no_function_cse = 1; \ + } \ + while (0) + +/* VAX ELF is always gas; override the generic VAX ASM_SPEC. */ + +#undef ASM_SPEC +#define ASM_SPEC "" diff --git a/gcc/testsuite/README.compat b/gcc/testsuite/README.compat new file mode 100644 index 00000000000..da2340a9050 --- /dev/null +++ b/gcc/testsuite/README.compat @@ -0,0 +1,72 @@ +Compatibility test suites that use lib/compat.exp test interoperability +of two compilers that follow the same ABI, or of multiple sets of +compiler options that are not intended to affect binary compatibility. +They do not test conformance to a formal ABI; they check that things are +done consistently, not that they are done correctly. They are meant to +complement ABI test suites, not to replace them. + +Each test in these suites splits up functionality into two source files +that can be compiled with two different versions of GCC and with two +sets of compiler options. + + Override the default pairs of compiler options (from compat.exp) by + defining the environment variable COMPAT_OPTIONS as: + COMPAT_OPTIONS="[list [list {tst1} {alt1}]...[list {tstn} {altn}]]" + where tsti and alti are lists of options, with "tsti" used by the + compiler under test and "alti" used by the alternate compiler. The + characters "[", "{", "}", and "]" are really in the string, as in + "[list [list {-g} {-O3}] [list {-O3} {-g}]]". + + To use an alternate compiler, define the environment variable for the + language you're testing; e.g., for C++ define ALT_CXX_UNDER_TEST to be + the full pathname of an installed compiler. That will be written to + the site.exp file used by DejaGNU. The default is to build each test + with the compiler under test using the first of each pair of compiler + options from COMPAT_OPTIONS. When ALT_CXX_UNDER_TEST is "same", each + test is built using the compiler under test but with combinations of + the options from COMPAT_OPTIONS. + +A test that fails when the pieces are compiled with different compilers +but passes when the pieces are compiled with the same compiler +demonstrates incompatibility of the generated code or runtime support. +A test that fails for the alternate compiler but passes for the compiler +under test probably tests for a fix that is not present in the alternate +compiler. + +There's a lot more that can be done with these tests. + + Increase the robustness of the existing tests: + + - recognize target triples in dg-options strings in test files + + - continue to split up tests that rely on language runtime support + and add them to this set of tests + + - make sure they work for testing with a simulator + + - multilibs support? + + Build test pieces into more combinations that will be likely to find + unusual errors: + + - link using the alternate compiler; this requires support for + LD_LIBRARY_PATH for the alternate compiler in the support for each + language + + - build pieces of the test into shared libraries; this requires + support for LD_LIBRARY_PATH for the alternate compiler, and + knowledge about how to build a shared library for each target + + - build pieces of the test into static libraries; this requires + knowledge about how to build a static library for each target + + Continue to add tests to g++.dg/compat, based on existing tests for + language runtime support and for test cases in PRs that didn't used to + fit into the test suite. + + Set up similar tests in libstdc++-v3/testsuite. + + Set up similar tests for additional languages and libraries. + +Janis Johnson, <janis187@us.ibm.com> +October 2002 diff --git a/gcc/testsuite/g++.dg/abi/empty8.C b/gcc/testsuite/g++.dg/abi/empty8.C new file mode 100644 index 00000000000..a5287b15fa0 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/empty8.C @@ -0,0 +1,14 @@ +// { dg-do run } +// { dg-options "-fabi-version=0" } + +struct E1 {}; +struct E2 : public E1 {}; +struct S1 { int i; }; +struct S2 : public S1, E2 {}; + +S2 s2; + +int main () { + if ((char *)(E2*) &s2 != (char *)&s2) + return 1; +} diff --git a/gcc/testsuite/g++.dg/abi/mangle10.C b/gcc/testsuite/g++.dg/abi/mangle10.C new file mode 100644 index 00000000000..d5782ba6dfc --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle10.C @@ -0,0 +1,13 @@ +// { dg-options "-fabi-version=0" } + +template <template <typename> class Q> +void f (typename Q<int>::X) {} + +template <typename Q> +struct S { + typedef int X; +}; + +template void f<S> (int); + +// { dg-final { scan-assembler _Z1fI1SEvNT_IiE1XE } } diff --git a/gcc/testsuite/g++.dg/abi/mangle11.C b/gcc/testsuite/g++.dg/abi/mangle11.C new file mode 100644 index 00000000000..f7151171d30 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle11.C @@ -0,0 +1,10 @@ +// { dg-options "-Wabi" } + +template <typename Q> +void f (typename Q::X) {} + +struct S { + typedef int X; +}; + +template void f<S> (int); // { dg-warning "mangle" } diff --git a/gcc/testsuite/g++.dg/abi/mangle12.C b/gcc/testsuite/g++.dg/abi/mangle12.C new file mode 100644 index 00000000000..772b58b7a39 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle12.C @@ -0,0 +1,11 @@ +// { dg-options "-Wabi" } + +template <template <typename> class Q> +void f (typename Q<int>::X) {} + +template <typename Q> +struct S { + typedef int X; +}; + +template void f<S> (int); // { dg-warning "mangle" } diff --git a/gcc/testsuite/g++.dg/abi/mangle13.C b/gcc/testsuite/g++.dg/abi/mangle13.C new file mode 100644 index 00000000000..716c4c36f41 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle13.C @@ -0,0 +1,28 @@ +// { dg-options "-fabi-version=0" } + +struct A { + template <typename T> int f (); + int operator+(); + operator int (); + template <typename T> + int operator-(); +}; + +typedef int (A::*P)(); + +template <P> struct S {}; + +template <typename T> void g (S<&T::template f<int> >) {} +template <typename T> void g (S<&T::operator+ >) {} +template <typename T> void g (S<&T::operator int>) {} +template <typename T> void g (S<&T::template operator- <double> >) {} + +template void g<A> (S<&A::f<int> >); +template void g<A> (S<&A::operator+>); +template void g<A> (S<&A::operator int>); +template void g<A> (S<&A::operator-<double> >); + +// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_1fIiEEE } } +// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_plEE } } +// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_cviEE } } +// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_miIdEEE } } diff --git a/gcc/testsuite/g++.dg/abi/mangle14.C b/gcc/testsuite/g++.dg/abi/mangle14.C new file mode 100644 index 00000000000..8e2bfddde76 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle14.C @@ -0,0 +1,12 @@ +// { dg-do compile } +// { dg-options "-Wabi" } + +struct A { + template <typename T> int f (); +}; + +typedef int (A::*P)(); + +template <P> struct S {}; + +void g (S<&A::f<int> >) {} // { dg-warning "mangle" } diff --git a/gcc/testsuite/g++.dg/abi/mangle15.C b/gcc/testsuite/g++.dg/abi/mangle15.C new file mode 100644 index 00000000000..3c112e263f0 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle15.C @@ -0,0 +1,14 @@ +// { dg-do compile } +// { dg-options "-fabi-version=0" } + +struct A { + template <typename T> int f (); +}; + +typedef int (A::*P)(); + +template <P> struct S {}; + +void g (S<&A::f<int> >) {} + +// { dg-final { scan-assembler _Z1g1SIXadL_ZN1A1fIiEEivEEE } } diff --git a/gcc/testsuite/g++.dg/abi/mangle16.C b/gcc/testsuite/g++.dg/abi/mangle16.C new file mode 100644 index 00000000000..1f3039f8682 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle16.C @@ -0,0 +1,18 @@ +// { dg-options "-fabi-version=0" } + +enum E { e = 3 }; + +template <int I> struct S {}; + +template <int I> void f (S<e + 1>) {} +template void f<7>(S<e + 1>); + +template <int I> void g (S<e>) {} +template void g<7>(S<e>); + +template <int I> void h (S<I + 1>) {} +template void h<7>(S<7 + 1>); + +// { dg-final { scan-assembler _Z1fILi7EEv1SILi4EE } } +// { dg-final { scan-assembler _Z1gILi7EEv1SILi3EE } } +// { dg-final { scan-assembler _Z1hILi7EEv1SIXplT_Li1EEE } } diff --git a/gcc/testsuite/g++.dg/abi/mangle17.C b/gcc/testsuite/g++.dg/abi/mangle17.C new file mode 100644 index 00000000000..1da6dea632b --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle17.C @@ -0,0 +1,11 @@ +// { dg-options "-Wabi" } + +enum E { e = 3 }; + +template <int I> struct S {}; + +template <int I> void f (S<e + int (3.7)>) {} +template void f<7>(S<e + int (3.7)>); // { dg-warning "mangle" } + +template <int I> void g (S<e + int (3.7)>) {} +template void g<7>(S<e + int (3.7)>); // { dg-warning "mangle" } diff --git a/gcc/testsuite/g++.dg/abi/mangle9.C b/gcc/testsuite/g++.dg/abi/mangle9.C new file mode 100644 index 00000000000..f3ededfb4d0 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle9.C @@ -0,0 +1,12 @@ +// { dg-options "-fabi-version=0" } + +template <typename Q> +void f (typename Q::X) {} + +struct S { + typedef int X; +}; + +template void f<S> (int); + +// { dg-final { scan-assembler _Z1fI1SEvNT_1XE } } diff --git a/gcc/testsuite/g++.dg/abi/vbase13.C b/gcc/testsuite/g++.dg/abi/vbase13.C new file mode 100644 index 00000000000..6a0bff484d7 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/vbase13.C @@ -0,0 +1,17 @@ +// { dg-do run } +// { dg-options "-fabi-version=0 -w" } + +struct E1 {}; +struct E2 : public E1 {}; +struct E : public E1, public E2 {}; +struct N : public E { virtual void f () {} }; + +struct X : virtual public N { +}; + +int main () { + X x; + /* N should not be the primary base of X; it is not nearly empty. */ + if ((void*)&x == (void*)(N*)&x) + return 1; +} diff --git a/gcc/testsuite/g++.dg/abi/vbase14.C b/gcc/testsuite/g++.dg/abi/vbase14.C new file mode 100644 index 00000000000..99290b85720 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/vbase14.C @@ -0,0 +1,6 @@ +// { dg-options "-Wabi" } + +struct E1 {}; +struct E2 : public E1 {}; // { dg-warning "layout" } +struct E : public E1, public E2 {}; // { dg-warning "layout|ambiguity" } +struct N : public E { virtual void f () {} }; // { dg-warning "nearly" } diff --git a/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C b/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C new file mode 100644 index 00000000000..b1a1de77e98 --- /dev/null +++ b/gcc/testsuite/g++.dg/bprob/g++-bprob-1.C @@ -0,0 +1,234 @@ +/* Check that various C constructs (in C++) don't cause problems for + * profile-directed block ordering. + + Most of this test is the same as bprob-1.c and gcov-4.c in + gcc.misc-tests. The "count" comments are left in to make comparisons + easier; they are ignored for this test. */ + +extern "C" void abort (void); + +/* Check for loops. */ + +int for_val1; +int for_val2; +int for_temp; + +int +test_for1 (int n) +{ + int i; + for_temp = 1; /* count(3) */ + for (i = 0; i < n; i++) + for_temp++; /* count(9) */ + return for_temp; /* count(3) */ +} + +int +test_for2 (int m, int n, int o) +{ + int i, j, k; + for_temp = 1; /* count(6) */ + for (i = 0; i < n; i++) + for (j = 0; j < m; j++) + for (k = 0; k < o; k++) + for_temp++; /* count(81) */ + return for_temp; /* count(6) */ +} + +int +call_for () +{ + for_val1 += test_for1 (0); + for_val1 += test_for1 (2); + for_val1 += test_for1 (7); + + for_val2 += test_for2 (0, 0, 0); + for_val2 += test_for2 (1, 0, 0); + for_val2 += test_for2 (1, 3, 0); + for_val2 += test_for2 (1, 3, 1); + for_val2 += test_for2 (3, 1, 5); + for_val2 += test_for2 (3, 7, 3); +} + +/* Check the use of goto. */ + +int goto_val; + +int +test_goto1 (int f) +{ + if (f) /* count(2) */ + goto lab1; /* count(1) */ + return 1; /* count(1) */ +lab1: + return 2; /* count(1) */ +} + +int +test_goto2 (int f) +{ + int i; + for (i = 0; i < 10; i++) /* count(15) */ + if (i == f) goto lab2; /* count(14) */ + return 4; /* count(1) */ +lab2: + return 8; /* count(1) */ +} + +void +call_goto () +{ + goto_val += test_goto1 (0); + goto_val += test_goto1 (1); + goto_val += test_goto2 (3); + goto_val += test_goto2 (30); +} + +/* Check nested if-then-else statements. */ + +int ifelse_val1; +int ifelse_val2; +int ifelse_val3; + +int +test_ifelse1 (int i, int j) +{ + int result = 0; + if (i) /* count(5) */ + if (j) /* count(3) */ + result = 4; /* count(3) */ + else + result = 1024; + else + if (j) /* count(2) */ + result = 1; /* count(1) */ + else + result = 2; /* count(1) */ + if (i > j) /* count(5) */ + result *= 2; /* count(1) */ + if (i > 10) /* count(5) */ + if (j > 10) /* count(1) */ + result *= 4; /* count(1) */ + return result; /* count(5) */ +} + +int +test_ifelse2 (int i) +{ + int result = 0; + if (!i) /* count(6) */ + result = 1; /* count(1) */ + if (i == 1) /* count(6) */ + result = 1024; + if (i == 2) /* count(6) */ + result = 2; /* count(3) */ + if (i == 3) /* count(6) */ + return 8; /* count(2) */ + if (i == 4) /* count(4) */ + return 2048; + return result; /* count(4) */ +} + +int +test_ifelse3 (int i, int j) +{ + int result = 1; + if (i > 10 && j > i && j < 20) /* count(11) */ + result = 16; /* count(1) */ + if (i > 20) /* count(11) */ + if (j > i) /* count(5) */ + if (j < 30) /* count(2) */ + result = 32; /* count(1) */ + if (i == 3 || j == 47 || i == j) /* count(11) */ + result = 64; /* count(3) */ + return result; /* count(11) */ +} + +void +call_ifelse () +{ + ifelse_val1 += test_ifelse1 (0, 2); + ifelse_val1 += test_ifelse1 (0, 0); + ifelse_val1 += test_ifelse1 (1, 2); + ifelse_val1 += test_ifelse1 (10, 2); + ifelse_val1 += test_ifelse1 (11, 11); + + ifelse_val2 += test_ifelse2 (0); + ifelse_val2 += test_ifelse2 (2); + ifelse_val2 += test_ifelse2 (2); + ifelse_val2 += test_ifelse2 (2); + ifelse_val2 += test_ifelse2 (3); + ifelse_val2 += test_ifelse2 (3); + + ifelse_val3 += test_ifelse3 (11, 19); + ifelse_val3 += test_ifelse3 (25, 27); + ifelse_val3 += test_ifelse3 (11, 22); + ifelse_val3 += test_ifelse3 (11, 10); + ifelse_val3 += test_ifelse3 (21, 32); + ifelse_val3 += test_ifelse3 (21, 20); + ifelse_val3 += test_ifelse3 (1, 2); + ifelse_val3 += test_ifelse3 (32, 31); + ifelse_val3 += test_ifelse3 (3, 0); + ifelse_val3 += test_ifelse3 (0, 47); /* count(1) */ + ifelse_val3 += test_ifelse3 (65, 65); /* count(1) */ +} + +/* Check switch statements. */ + +int switch_val, switch_m; + +int +test_switch (int i, int j) +{ + int result = 0; /* count(5) */ + + switch (i) /* count(5) */ + { + case 1: + result = 2; /* count(1) */ + break; + case 2: + result = 1024; + break; + case 3: + case 4: + if (j == 2) /* count(3) */ + return 4; /* count(1) */ + result = 8; /* count(2) */ + break; + default: + result = 32; /* count(1) */ + switch_m++; /* count(1) */ + break; + } + return result; /* count(4) */ +} + +void +call_switch () +{ + switch_val += test_switch (1, 0); + switch_val += test_switch (3, 0); + switch_val += test_switch (3, 2); + switch_val += test_switch (4, 0); + switch_val += test_switch (16, 0); + switch_val += switch_m; +} + +int +main() +{ + call_for (); + call_goto (); + call_ifelse (); + call_switch (); + if ((for_val1 != 12) + || (for_val2 != 87) + || (goto_val != 15) + || (ifelse_val1 != 31) + || (ifelse_val2 != 23) + || (ifelse_val3 != 246) + || (switch_val != 55)) + abort (); + return 0; +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1.h b/gcc/testsuite/g++.dg/compat/abi/bitfield1.h new file mode 100644 index 00000000000..09d64162ff3 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1.h @@ -0,0 +1,10 @@ +typedef int Int; +typedef signed int SInt; +typedef unsigned int UInt; + +struct A +{ + SInt bitS : 1; // signed + UInt bitU : 1; // unsigned + Int bit : 1; // signedness by -f{signed,unsigned}-bitfields +}; diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C new file mode 100644 index 00000000000..cdb7a45a744 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C @@ -0,0 +1,13 @@ +// { dg-options "-ansi -pedantic-errors -funsigned-bitfields" } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 15 Dec 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +extern void bitfield1_x (void); + +int +main () +{ + bitfield1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C new file mode 100644 index 00000000000..1447655a33e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C @@ -0,0 +1,14 @@ +#include "bitfield1.h" + +extern void bitfield1_y (A& a); + +void bitfield1_x () +{ + A a; + + a.bitS = 1; + a.bitU = 1; + a.bit = 1; + + bitfield1_y (a); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C b/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C new file mode 100644 index 00000000000..7ca5d4b3f51 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C @@ -0,0 +1,13 @@ +extern "C" void abort (void); + +#include "bitfield1.h" + +void bitfield1_y (A& a) +{ + if (a.bitS != -1) + abort (); + if (a.bitU != 1) + abort (); + if (a.bit != 1) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2.h b/gcc/testsuite/g++.dg/compat/abi/bitfield2.h new file mode 100644 index 00000000000..09d64162ff3 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2.h @@ -0,0 +1,10 @@ +typedef int Int; +typedef signed int SInt; +typedef unsigned int UInt; + +struct A +{ + SInt bitS : 1; // signed + UInt bitU : 1; // unsigned + Int bit : 1; // signedness by -f{signed,unsigned}-bitfields +}; diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C new file mode 100644 index 00000000000..df74037b66b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C @@ -0,0 +1,13 @@ +// { dg-options "-ansi -pedantic-errors -fsigned-bitfields" } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 15 Dec 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +extern void bitfield1_x (void); + +int +main () +{ + bitfield1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C new file mode 100644 index 00000000000..1447655a33e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C @@ -0,0 +1,14 @@ +#include "bitfield1.h" + +extern void bitfield1_y (A& a); + +void bitfield1_x () +{ + A a; + + a.bitS = 1; + a.bitU = 1; + a.bit = 1; + + bitfield1_y (a); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C b/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C new file mode 100644 index 00000000000..6119544db16 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C @@ -0,0 +1,13 @@ +extern "C" void abort (void); + +#include "bitfield1.h" + +void bitfield1_y (A& a) +{ + if (a.bitS != -1) + abort (); + if (a.bitU != 1) + abort (); + if (a.bit != -1) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h new file mode 100644 index 00000000000..aee0b6b49a5 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10.h @@ -0,0 +1,54 @@ +class C0 +{ public: int i0; }; +class C1 + : public C0 +{ public: int i1; }; +class C2 + : public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : public C1 + , public C2 + , virtual public C0 +{ public: int i3; }; +class C4 + : virtual public C1 + , virtual public C0 + , virtual public C3 + , public C2 +{ public: int i4; }; +class C5 + : public C3 + , virtual public C0 + , virtual public C2 +{ public: int i5; }; +class C6 + : public C1 + , public C2 + , virtual public C5 + , virtual public C3 + , virtual public C0 +{ public: int i6; }; +class C7 + : public C1 + , virtual public C5 + , virtual public C4 + , virtual public C2 + , virtual public C0 + , virtual public C6 +{ public: int i7; }; +class C8 + : virtual public C4 + , public C3 + , public C0 + , virtual public C7 + , virtual public C6 +{ public: int i8; }; +class C9 + : virtual public C0 + , public C4 + , public C8 + , public C1 + , public C6 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C new file mode 100644 index 00000000000..606c0fe2f93 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 26 Jul 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 10. Horribly complicated class hierarchy + +extern void vbase8_10_x (void); + +int +main () +{ + vbase8_10_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C new file mode 100644 index 00000000000..18e78fcc59c --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C @@ -0,0 +1,49 @@ +#include "vbase8-10.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_10_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C new file mode 100644 index 00000000000..1d6c8261668 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C @@ -0,0 +1,63 @@ +extern "C" void abort (void); + +#include "vbase8-10.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h new file mode 100644 index 00000000000..cd510e2ce85 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21.h @@ -0,0 +1,54 @@ +class C0 +{ public: int i0; }; +class C1 + : virtual public C0 +{ public: int i1; }; +class C2 + : virtual public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : virtual public C2 + , virtual public C1 +{ public: int i3; }; +class C4 + : virtual public C2 + , public C0 + , public C1 +{ public: int i4; }; +class C5 + : virtual public C0 + , public C2 + , virtual public C1 + , virtual public C3 + , virtual public C4 +{ public: int i5; }; +class C6 + : virtual public C1 + , virtual public C3 + , public C0 + , public C2 + , virtual public C4 +{ public: int i6; }; +class C7 + : virtual public C5 + , public C2 + , public C6 + , virtual public C0 + , public C3 +{ public: int i7; }; +class C8 + : virtual public C5 + , public C7 + , virtual public C0 + , virtual public C2 + , virtual public C6 +{ public: int i8; }; +class C9 + : virtual public C2 + , virtual public C4 + , public C1 + , virtual public C0 + , public C7 + , public C5 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C new file mode 100644 index 00000000000..16a0a3cd3c7 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 26 Jul 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 10. Horribly complicated class hierarchy + +extern void vbase8_21_x (void); + +int +main () +{ + vbase8_21_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C new file mode 100644 index 00000000000..986fcfbe5e4 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C @@ -0,0 +1,49 @@ +#include "vbase8-21.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_21_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C new file mode 100644 index 00000000000..0bd76246d4d --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C @@ -0,0 +1,63 @@ +extern "C" void abort (void); + +#include "vbase8-21.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h new file mode 100644 index 00000000000..e19e93eaead --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22.h @@ -0,0 +1,59 @@ +class C0 +{ public: int i0; }; +class C1 + : public C0 +{ public: int i1; }; +class C2 + : public C1 + , virtual public C0 +{ public: int i2; }; +class C3 + : virtual public C0 + , virtual public C2 + , virtual public C1 +{ public: int i3; }; +class C4 + : virtual public C2 + , public C1 + , virtual public C3 + , public C0 +{ public: int i4; }; +class C5 + : virtual public C0 + , virtual public C4 + , public C1 + , virtual public C2 + , virtual public C3 +{ public: int i5; }; +class C6 + : public C0 + , virtual public C1 + , public C5 + , public C2 + , virtual public C3 + , virtual public C4 +{ public: int i6; }; +class C7 + : virtual public C1 + , public C5 + , virtual public C6 + , virtual public C4 + , virtual public C3 + , virtual public C0 +{ public: int i7; }; +class C8 + : virtual public C6 + , virtual public C1 + , virtual public C2 + , public C3 + , virtual public C4 +{ public: int i8; }; +class C9 + : public C4 + , virtual public C2 + , virtual public C8 + , public C3 + , public C1 + , public C6 + , public C5 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C new file mode 100644 index 00000000000..6455a2efcb9 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 20 Nov 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 22. Horribly complicated class hierarchy + +extern void vbase8_22_x (void); + +int +main () +{ + vbase8_22_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C new file mode 100644 index 00000000000..5d3eacf7c90 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C @@ -0,0 +1,49 @@ +#include "vbase8-22.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_22_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C new file mode 100644 index 00000000000..293ed100be4 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C @@ -0,0 +1,63 @@ +extern "C" void abort (void); + +#include "vbase8-22.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h b/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h new file mode 100644 index 00000000000..b183fbe4f9b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4.h @@ -0,0 +1,57 @@ +class C0 +{ public: int i0; }; +class C1 + : virtual public C0 +{ public: int i1; }; +class C2 + : public C0 + , public C1 +{ public: int i2; }; +class C3 + : virtual public C0 + , public C1 + , public C2 +{ public: int i3; }; +class C4 + : public C2 + , public C3 + , virtual public C1 + , virtual public C0 +{ public: int i4; }; +class C5 + : virtual public C2 + , public C1 + , public C0 +{ public: int i5; }; +class C6 + : virtual public C0 + , virtual public C5 + , public C1 + , public C3 + , public C4 +{ public: int i6; }; +class C7 + : public C6 + , virtual public C0 + , public C1 + , public C2 + , virtual public C4 +{ public: int i7; }; +class C8 + : public C2 + , virtual public C6 + , virtual public C7 + , public C5 + , public C3 + , virtual public C4 +{ public: int i8; }; +class C9 + : public C5 + , virtual public C3 + , virtual public C8 + , public C0 + , public C2 + , public C7 + , public C6 + , public C4 +{ public: int i9; }; diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C new file mode 100644 index 00000000000..f5e5e38247e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C @@ -0,0 +1,16 @@ +// { dg-options -w } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 20 Nov 2001 <nathan@codesourcery.com> +// Split into pieces for binary compatibility testing October 2002 + +// Origin stefan@space.twc.de +// Bug 3145 case 4. Horribly complicated class hierarchy + +extern void vbase8_4_x (void); + +int +main () +{ + vbase8_4_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C new file mode 100644 index 00000000000..66b514c1b09 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C @@ -0,0 +1,49 @@ +#include "vbase8-4.h" + +extern void check_C0 (C0&, int); +extern void check_C1 (C1&, int); +extern void check_C2 (C2&, int); +extern void check_C3 (C3&, int); +extern void check_C4 (C4&, int); +extern void check_C5 (C5&, int); +extern void check_C6 (C6&, int); +extern void check_C7 (C7&, int); +extern void check_C8 (C8&, int); +extern void check_C9 (C9&, int); + +void +vbase8_4_x (void) +{ + C0 c0; + C1 c1; + C2 c2; + C3 c3; + C4 c4; + C5 c5; + C6 c6; + C7 c7; + C8 c8; + C9 c9; + + c0.i0 = 0; + c1.i1 = 101; + c2.i2 = 202; + c3.i3 = 303; + c4.i4 = 404; + c5.i5 = 505; + c6.i6 = 606; + c7.i7 = 707; + c8.i8 = 808; + c9.i9 = 909; + + check_C0 (c0, 0); + check_C1 (c1, 101); + check_C2 (c2, 202); + check_C3 (c3, 303); + check_C4 (c4, 404); + check_C5 (c5, 505); + check_C6 (c6, 606); + check_C7 (c7, 707); + check_C8 (c8, 808); + check_C9 (c9, 909); +} diff --git a/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C new file mode 100644 index 00000000000..86dd40433d8 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C @@ -0,0 +1,63 @@ +extern "C" void abort (void); + +#include "vbase8-4.h" + +void check_C0 (C0 &x, int i) +{ + if (x.i0 != i) + abort (); +} + +void check_C1 (C1 &x, int i) +{ + if (x.i1 != i) + abort (); +} + +void check_C2 (C2 &x, int i) +{ + if (x.i2 != i) + abort (); +} + +void check_C3 (C3 &x, int i) +{ + if (x.i3 != i) + abort (); +} + +void check_C4 (C4 &x, int i) +{ + if (x.i4 != i) + abort (); +} + +void check_C5 (C5 &x, int i) +{ + if (x.i5 != i) + abort (); +} + +void check_C6 (C6 &x, int i) +{ + if (x.i6 != i) + abort (); +} + +void check_C7 (C7 &x, int i) +{ + if (x.i7 != i) + abort (); +} + +void check_C8 (C8 &x, int i) +{ + if (x.i8 != i) + abort (); +} + +void check_C9 (C9 &x, int i) +{ + if (x.i9 != i) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/README b/gcc/testsuite/g++.dg/compat/break/README new file mode 100644 index 00000000000..98886310caa --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/README @@ -0,0 +1,11 @@ +Tests in this directory are for functionality that has changed in GCC +from one release to another or that is not ABI-compliant and may change +in a future release. + +Each test header for changed behavior should indicate the version in +which the behavior changed, in order to help users of these tests to +determine whether a test failure is expected or not. + +Every test in this directory that covers behavior that is not +ABI-compliant should also be covered by a test for -Wabi to ensure that +there is a warning for the construct. diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield5.h b/gcc/testsuite/g++.dg/compat/break/bitfield5.h new file mode 100644 index 00000000000..6f7f012cc6b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield5.h @@ -0,0 +1,11 @@ +struct A { + virtual void f(); + int f1 : 1; +}; + +struct B : public A { + int f2 : 1; + int : 0; + int f3 : 4; + int f4 : 3; +}; diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield5_main.C b/gcc/testsuite/g++.dg/compat/break/bitfield5_main.C new file mode 100644 index 00000000000..415a8846c26 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield5_main.C @@ -0,0 +1,14 @@ +// The offset of `B::f2' is not ABI-compliant and may change in a future +// version of GCC. +// g++.dg/abi/bitfield5.C tests this with -Wabi. +// Split into pieces for binary compatibility testing October 2002 + +#include "bitfield5.h" + +extern void bitfield5_x (void); + +int +main () +{ + bitfield5_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield5_x.C b/gcc/testsuite/g++.dg/compat/break/bitfield5_x.C new file mode 100644 index 00000000000..9be9372347a --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield5_x.C @@ -0,0 +1,13 @@ +#include "bitfield5.h" + +extern void bitfield5_y (B&); + +void bitfield5_x () +{ + B b; + + b.f3 = 7; + b.f4 = 3; + + bitfield5_y (b); +} diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield5_y.C b/gcc/testsuite/g++.dg/compat/break/bitfield5_y.C new file mode 100644 index 00000000000..6ee4dd0089d --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield5_y.C @@ -0,0 +1,13 @@ +extern "C" void abort (void); + +#include "bitfield5.h" + +void A::f () {} + +void bitfield5_y (B& b) +{ + if (b.f3 != 7) + abort (); + if (b.f4 != 3) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield7.h b/gcc/testsuite/g++.dg/compat/break/bitfield7.h new file mode 100644 index 00000000000..2060bf7473b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield7.h @@ -0,0 +1,3 @@ +union U { + int i: 4096; +}; diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield7_main.C b/gcc/testsuite/g++.dg/compat/break/bitfield7_main.C new file mode 100644 index 00000000000..57bb96101f1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield7_main.C @@ -0,0 +1,16 @@ +// { dg-options "-w" } + +// The size assigned to `U' may not be ABI-compliant and may change in a +// future version of GCC. +// g++.dg/abi/bitfield7.C tests this with -Wabi. +// Split into pieces for binary compatibility testing October 2002 + +#include "bitfield7.h" + +extern void bitfield7_x (void); + +int +main () +{ + bitfield7_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield7_x.C b/gcc/testsuite/g++.dg/compat/break/bitfield7_x.C new file mode 100644 index 00000000000..b42ea2e9ae3 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield7_x.C @@ -0,0 +1,13 @@ +#include "bitfield7.h" + +extern void bitfield7_y (U*); + +void bitfield7_x () +{ + U u[2]; + + u[0].i = 7; + u[1].i = 8; + + bitfield7_y (u); +} diff --git a/gcc/testsuite/g++.dg/compat/break/bitfield7_y.C b/gcc/testsuite/g++.dg/compat/break/bitfield7_y.C new file mode 100644 index 00000000000..916d150d537 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/bitfield7_y.C @@ -0,0 +1,11 @@ +extern "C" void abort (void); + +#include "bitfield7.h" + +void bitfield7_y (U* u) +{ + if (u[0].i != 7) + abort (); + if (u[1].i != 8) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/empty6.h b/gcc/testsuite/g++.dg/compat/break/empty6.h new file mode 100644 index 00000000000..47a0da8b52e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/empty6.h @@ -0,0 +1,7 @@ +struct A {}; + +struct B { + A a; + virtual void f () {} + int i; +}; diff --git a/gcc/testsuite/g++.dg/compat/break/empty6_main.C b/gcc/testsuite/g++.dg/compat/break/empty6_main.C new file mode 100644 index 00000000000..bf6d982413b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/empty6_main.C @@ -0,0 +1,14 @@ +// `B::a' contains empty classes which may cause base classes to be +// placed at different locations in a future version of GCC. +// g++.dg/abi/empty6.C tests this with -Wabi. +// Split into pieces for binary compatibility testing October 2002 + +#include "empty6.h" + +extern void empty6_x (void); + +int +main () +{ + empty6_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/empty6_x.C b/gcc/testsuite/g++.dg/compat/break/empty6_x.C new file mode 100644 index 00000000000..f7e25e9abf9 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/empty6_x.C @@ -0,0 +1,12 @@ +#include "empty6.h" + +extern void empty6_y (B&); + +void empty6_x () +{ + B b; + + b.i = 7; + + empty6_y (b); +} diff --git a/gcc/testsuite/g++.dg/compat/break/empty6_y.C b/gcc/testsuite/g++.dg/compat/break/empty6_y.C new file mode 100644 index 00000000000..cb3d45c9e15 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/empty6_y.C @@ -0,0 +1,9 @@ +extern "C" void abort (void); + +#include "empty6.h" + +void empty6_y (B& b) +{ + if (b.i != 7) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase10.h b/gcc/testsuite/g++.dg/compat/break/vbase10.h new file mode 100644 index 00000000000..f418d1e56a4 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase10.h @@ -0,0 +1,12 @@ +struct A { + virtual void f(); + char c1; +}; + +struct B { + B(); + char c2; +}; + +struct C : public A, public virtual B { +}; diff --git a/gcc/testsuite/g++.dg/compat/break/vbase10_main.C b/gcc/testsuite/g++.dg/compat/break/vbase10_main.C new file mode 100644 index 00000000000..a082b5dbf3e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase10_main.C @@ -0,0 +1,14 @@ +// The offset of virtual base `B' is not ABI-compliant and may change in +// a future version of GCC. +// g++.dg/abi/vbase10.C tests this with -Wabi. +// Split into pieces for binary compatibility testing October 2002 + +#include "vbase10.h" + +extern void vbase10_x (void); + +int +main () +{ + vbase10_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase10_x.C b/gcc/testsuite/g++.dg/compat/break/vbase10_x.C new file mode 100644 index 00000000000..6d51d3c7269 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase10_x.C @@ -0,0 +1,13 @@ +#include "vbase10.h" + +extern void vbase10_y (C&); + +void vbase10_x () +{ + C c; + + c.c1 = 1; + c.c2 = 2; + + vbase10_y (c); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase10_y.C b/gcc/testsuite/g++.dg/compat/break/vbase10_y.C new file mode 100644 index 00000000000..70ce0075e66 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase10_y.C @@ -0,0 +1,14 @@ +extern "C" void abort (void); + +#include "vbase10.h" + +void A::f () {} +B::B() {} + +void vbase10_y (C& c) +{ + if (c.c1 != 1) + abort (); + if (c.c2 != 2) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase11.h b/gcc/testsuite/g++.dg/compat/break/vbase11.h new file mode 100644 index 00000000000..a298f764415 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase11.h @@ -0,0 +1,12 @@ +struct base +{ + short b; + virtual int foo(); +}; + +struct derived: virtual base +{ + int d; + virtual int foo(); + virtual int bar(); +}; diff --git a/gcc/testsuite/g++.dg/compat/break/vbase11_main.C b/gcc/testsuite/g++.dg/compat/break/vbase11_main.C new file mode 100644 index 00000000000..2ac59944992 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase11_main.C @@ -0,0 +1,13 @@ +// Test case from PR 7470, which was fixed in GCC 3.2 and breaks binary +// compatibility with earlier releases. +// Split into pieces for binary compatibility testing October 2002 + +#include "vbase11.h" + +extern void vbase11_x (void); + +int +main () +{ + vbase11_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase11_x.C b/gcc/testsuite/g++.dg/compat/break/vbase11_x.C new file mode 100644 index 00000000000..4b2398ae10d --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase11_x.C @@ -0,0 +1,14 @@ +#include "vbase11.h" + +extern void vbase11_y (derived&); + +int base::foo() { return 1; } +int derived::foo() { return 2; } +int derived::bar() { return 3; } + +void vbase11_x () +{ + derived d; + + vbase11_y (d); +} diff --git a/gcc/testsuite/g++.dg/compat/break/vbase11_y.C b/gcc/testsuite/g++.dg/compat/break/vbase11_y.C new file mode 100644 index 00000000000..01ca62b87b8 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/break/vbase11_y.C @@ -0,0 +1,11 @@ +extern "C" void abort (void); + +#include "vbase11.h" + +void vbase11_y (derived& d) +{ + if (d.foo() != 2) + abort (); + if (d.bar() != 3) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/compat.exp b/gcc/testsuite/g++.dg/compat/compat.exp new file mode 100644 index 00000000000..1e13c102a50 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/compat.exp @@ -0,0 +1,137 @@ +# Copyright (C) 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# This file was written by Janis Johnson, <janis187@us.ibm.com> + + +# Test interoperability of two compilers that follow the same ABI. +# +# Break simple tests into two pieces and see that they work when linked +# together. If an alternate compiler is specified then the two main +# pieces of each test are compiled with different compilers. The +# alternate compiler must be installed, and is specified by defining +# ALT_CXX_UNDER_TEST in the environment. + +if $tracelevel then { + strace $tracelevel +} + +global GXX_UNDER_TEST +global ld_library_path + +# Load procedures from common libraries. +load_lib standard.exp +load_lib g++.exp + +# +# compat-fix-library-path -- switch LD_LIBRARY_PATH +# +proc compat-fix-library-path { } { + global ld_library_path + + # See comments in lib/g++.exp for why this is needed. + setenv LD_LIBRARY_PATH $ld_library_path + setenv SHLIB_PATH $ld_library_path + setenv LD_LIBRARYN32_PATH $ld_library_path + setenv LD_LIBRARY64_PATH $ld_library_path +} + +# +# compat-use-alt-compiler -- make the alternate compiler the default +# +proc compat-use-alt-compiler { } { + global GXX_UNDER_TEST ALT_CXX_UNDER_TEST + global CXXFLAGS + global ALWAYS_CXXFLAGS + global ld_library_path alt_ld_library_path + global same_alt + + # We don't need to do this if the alternate compiler is actually + # the same as the compiler under test. + if { $same_alt == 0 } then { + set GXX_UNDER_TEST $ALT_CXX_UNDER_TEST + set CXXFLAGS "" + set ALWAYS_CXXFLAGS "" + set ld_library_path $alt_ld_library_path + compat-fix-library-path + } +} + +# +# compat-use-tst-compiler -- make compiler under test the default +# +proc compat-use-tst-compiler { } { + global GXX_UNDER_TEST save_gxx_under_test + global CXXFLAGS save_cxxflags + global ALWAYS_CXXFLAGS save_always_cxxflags + global ld_library_path save_ld_library_path + global same_alt + + # We don't need to do this if the alternate compiler is actually + # the same as the compiler under test. + + if { $same_alt == 0 } then { + set GXX_UNDER_TEST $save_gxx_under_test + set CXXFLAGS $save_cxxflags + set ALWAYS_CXXFLAGS $save_always_cxxflags + set ld_library_path $save_ld_library_path + compat-fix-library-path + } +} + +# Load the language-independent compabibility support procedures. +# This must be done after the compat-use-*-compiler definitions. +load_lib compat.exp + +g++_init + +# Save variables for the C++ compiler under test, which each test will +# change a couple of times. This must be done after calling g++-init. +set save_gxx_under_test $GXX_UNDER_TEST +set save_cxxflags $CXXFLAGS +set save_always_cxxflags $ALWAYS_CXXFLAGS +set save_ld_library_path $ld_library_path + +# Find out whether there is an alternate compiler to test. If the +# variable is defined but is set to "same", that means we use the same +# compiler twice, which is meaningful if the two parts of COMPAT_OPTIONS +# are different. +set use_alt 0 +set same_alt 0 +set alt_ld_library_path "." +if [info exists ALT_CXX_UNDER_TEST] then { + set use_alt 1 + if [string match "same" $ALT_CXX_UNDER_TEST] then { + set same_alt 1 + } else { + if [info exists ALT_LD_LIBRARY_PATH] then { + append alt_ld_library_path ":${ALT_LD_LIBRARY_PATH}" + } + } +} + +# Main loop. +foreach src [lsort [find $srcdir/$subdir *_main.C]] { + # If we're only testing specific files and this isn't one of them, skip it. + if ![runtest_file_p $runtests $src] then { + continue + } + + compat-execute $src $use_alt +} + +# Restore the original compiler under test. +compat-use-tst-compiler diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor1.h b/gcc/testsuite/g++.dg/compat/eh/ctor1.h new file mode 100644 index 00000000000..e83476f2d60 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor1.h @@ -0,0 +1,10 @@ +struct Foo +{ + ~Foo (); +}; + +struct Bar +{ + ~Bar (); + Foo f; +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor1_main.C b/gcc/testsuite/g++.dg/compat/eh/ctor1_main.C new file mode 100644 index 00000000000..a188b46da86 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor1_main.C @@ -0,0 +1,13 @@ +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 26 Dec 2001 <nathan@nathan@codesourcery.com> +// PR 411 + +// Split into pieces for binary compatibility testing October 2002 + +extern void ctor1_x (void); + +int +main () +{ + ctor1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor1_x.C b/gcc/testsuite/g++.dg/compat/eh/ctor1_x.C new file mode 100644 index 00000000000..d74a520871f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor1_x.C @@ -0,0 +1,22 @@ +extern "C" void abort (void); +extern "C" void exit (int); + +#include "ctor1.h" + +bool was_f_in_Bar_destroyed=false; + +void ctor1_x () +{ + try + { + Bar f; + } + catch(int i) + { + if(was_f_in_Bar_destroyed) + { + exit (0); + } + } + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor1_y.C b/gcc/testsuite/g++.dg/compat/eh/ctor1_y.C new file mode 100644 index 00000000000..260ab1c3418 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor1_y.C @@ -0,0 +1,13 @@ +extern bool was_f_in_Bar_destroyed; + +#include "ctor1.h" + +Foo::~Foo() +{ + was_f_in_Bar_destroyed=true; +} + +Bar::~Bar() +{ + throw 1; +} diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor2.h b/gcc/testsuite/g++.dg/compat/eh/ctor2.h new file mode 100644 index 00000000000..c6b9f40f8d9 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor2.h @@ -0,0 +1,22 @@ +struct VBase +{ + virtual void f () {} + VBase(); + ~VBase(); +}; + +struct StreamBase +{ + virtual ~StreamBase() {} +}; + +struct Stream : public virtual VBase, public StreamBase +{ + Stream(); + virtual ~Stream() {} +}; + +struct DerivedStream : public Stream +{ + DerivedStream(); +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor2_main.C b/gcc/testsuite/g++.dg/compat/eh/ctor2_main.C new file mode 100644 index 00000000000..58836e26eba --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor2_main.C @@ -0,0 +1,12 @@ +// PR c++/4460 +// Test that the cleanup for fully-constructed subobjects when a +// constructor throws gets the right address for a virtual base. + +// Split into pieces for binary compatibility testing October 2002 + +extern void ctor2_x (void); + +int main () +{ + ctor2_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor2_x.C b/gcc/testsuite/g++.dg/compat/eh/ctor2_x.C new file mode 100644 index 00000000000..3fa1a53ace5 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor2_x.C @@ -0,0 +1,19 @@ +extern "C" void exit (int); +extern "C" void abort (void); + +#include "ctor2.h" + +int r; + +void ctor2_x () { + + try + { + DerivedStream str; + } + catch (...) { } + + if (r != 0) + abort (); + exit (0); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/ctor2_y.C b/gcc/testsuite/g++.dg/compat/eh/ctor2_y.C new file mode 100644 index 00000000000..00ba92000e4 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/ctor2_y.C @@ -0,0 +1,20 @@ +extern int r; +void *p; + +#include "ctor2.h" + +VBase::VBase () +{ + p = this; +} + +VBase::~VBase () +{ + if (p != this) r = 1; +} + +Stream::Stream () {} +DerivedStream::DerivedStream () +{ + throw 1; +} diff --git a/gcc/testsuite/g++.dg/compat/eh/dtor1.h b/gcc/testsuite/g++.dg/compat/eh/dtor1.h new file mode 100644 index 00000000000..0dfa793e0e1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/dtor1.h @@ -0,0 +1,7 @@ +struct A { + ~A(); +}; + +struct B: public A { + ~B(); +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/dtor1_main.C b/gcc/testsuite/g++.dg/compat/eh/dtor1_main.C new file mode 100644 index 00000000000..962fa64274b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/dtor1_main.C @@ -0,0 +1,14 @@ +// PR c++/411 + +// Test that a fully-constructed base is destroyed before transferring +// control to the handler of a function-try-block. + +// Split into pieces for binary compatibility testing October 2002 + +extern void dtor1_x (void); + +int +main () +{ + dtor1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/dtor1_x.C b/gcc/testsuite/g++.dg/compat/eh/dtor1_x.C new file mode 100644 index 00000000000..f7f4cc8a7f7 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/dtor1_x.C @@ -0,0 +1,14 @@ +extern "C" void exit (int); +extern "C" void abort (void); + +#include "dtor1.h" + +int r; + +void dtor1_x () +{ + { B b; } + if (r != 0) + abort (); + exit (0); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/dtor1_y.C b/gcc/testsuite/g++.dg/compat/eh/dtor1_y.C new file mode 100644 index 00000000000..a1ec41a2764 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/dtor1_y.C @@ -0,0 +1,18 @@ +extern int r; +int ad; + +#include "dtor1.h" + +A::~A () { ++ad; } + +B::~B () +try + { + throw 1; + } +catch (...) + { + if (!ad) + r = 1; + return; + } diff --git a/gcc/testsuite/g++.dg/compat/eh/filter1.h b/gcc/testsuite/g++.dg/compat/eh/filter1.h new file mode 100644 index 00000000000..1f5f0c93615 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter1.h @@ -0,0 +1,5 @@ +struct a +{ + a(); + ~a(); +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/filter1_main.C b/gcc/testsuite/g++.dg/compat/eh/filter1_main.C new file mode 100644 index 00000000000..2a8fca42c31 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter1_main.C @@ -0,0 +1,11 @@ +// Test that cleanups get run when a catch filter fails to match. + +// Split into pieces for binary compatibility testing October 2002 + +extern void filter1_x (void); + +int +main () +{ + filter1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/filter1_x.C b/gcc/testsuite/g++.dg/compat/eh/filter1_x.C new file mode 100644 index 00000000000..b3789aa15b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter1_x.C @@ -0,0 +1,21 @@ +#include "filter1.h" + +extern "C" void exit (int); +extern "C" void abort (void); +extern void ex_test (void); + +void +filter1_x () +{ + try + { + ex_test (); + } + catch (...) + { + } + abort (); +} + +a::a() { } +a::~a() { exit (0); } diff --git a/gcc/testsuite/g++.dg/compat/eh/filter1_y.C b/gcc/testsuite/g++.dg/compat/eh/filter1_y.C new file mode 100644 index 00000000000..48de0877d54 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter1_y.C @@ -0,0 +1,17 @@ +#include "filter1.h" + +struct e1 {}; +struct e2 {}; + +void +ex_test () +{ + a aa; + try + { + throw e1 (); + } + catch (e2 &) + { + } +} diff --git a/gcc/testsuite/g++.dg/compat/eh/filter2_main.C b/gcc/testsuite/g++.dg/compat/eh/filter2_main.C new file mode 100644 index 00000000000..866199c6b30 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter2_main.C @@ -0,0 +1,12 @@ +// Test that terminate gets run when a catch filter fails to match while +// running destructors. Original bug depended on a::~a being inlined. + +// Split into pieces for binary compatibility testing October 2002 + +extern void filter2_x (void); + +int +main () +{ + filter2_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/filter2_x.C b/gcc/testsuite/g++.dg/compat/eh/filter2_x.C new file mode 100644 index 00000000000..cdbfffffdd1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter2_x.C @@ -0,0 +1,20 @@ +#include <exception> +#include <cstdlib> + +extern void my_terminate (void); +extern void ex_test (void); + +void +filter2_x () +{ + std::set_terminate (my_terminate); + + try + { + ex_test (); + } + catch (...) + { + } + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/filter2_y.C b/gcc/testsuite/g++.dg/compat/eh/filter2_y.C new file mode 100644 index 00000000000..87c6fea1012 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/filter2_y.C @@ -0,0 +1,39 @@ +#include <exception> +#include <cstdlib> + +struct e1 {}; +struct e2 {}; + +struct a +{ + a () { } + + ~a () + { + try + { + throw e1(); + } + catch (e2 &) + { + } + } +}; + +void +ex_test () +{ + a aa; + try + { + throw e1 (); + } + catch (e2 &) + { + } +} + +void my_terminate () +{ + std::exit (0); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/new1_main.C b/gcc/testsuite/g++.dg/compat/eh/new1_main.C new file mode 100644 index 00000000000..ee4cad8e50d --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/new1_main.C @@ -0,0 +1,13 @@ +// PR c++/5757 +// Test that when a constructor throws in a new-expression, we pass the +// right pointer to operator delete. + +// Split into pieces for binary compatibility testing October 2002 + +extern void new1_x (void); + +int +main () +{ + new1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/new1_x.C b/gcc/testsuite/g++.dg/compat/eh/new1_x.C new file mode 100644 index 00000000000..4ca3be0af90 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/new1_x.C @@ -0,0 +1,28 @@ +#include <new> + +extern "C" void exit (int); +extern "C" void abort (void); + +extern void * operator new[] (size_t s) throw (std::bad_alloc); +extern void operator delete[] (void *p) throw (); + +struct A +{ + A() { throw 1; } + ~A() {} +}; + +int ret = 1; + +void +new1_x () +{ + try + { + A *p = new A[4]; + } + catch (...) {} + if (ret != 0) + abort (); + exit (0); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/new1_y.C b/gcc/testsuite/g++.dg/compat/eh/new1_y.C new file mode 100644 index 00000000000..c448cbed8d2 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/new1_y.C @@ -0,0 +1,18 @@ +#include <new> + +extern int ret; + +void *ptr; +void * operator new[] (size_t s) throw (std::bad_alloc) +{ + ptr = operator new (s); + return ptr; +} + +void operator delete[] (void *p) throw () +{ + if (p == ptr) + ret = 0; + operator delete (p); +} + diff --git a/gcc/testsuite/g++.dg/compat/eh/nrv1.h b/gcc/testsuite/g++.dg/compat/eh/nrv1.h new file mode 100644 index 00000000000..853ea3914e1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/nrv1.h @@ -0,0 +1,5 @@ +struct A +{ + A(); + ~A(); +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/nrv1_main.C b/gcc/testsuite/g++.dg/compat/eh/nrv1_main.C new file mode 100644 index 00000000000..3b76b5c8824 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/nrv1_main.C @@ -0,0 +1,12 @@ +// PR c++/5636 +// Bug: the named return value optimization interfered with EH cleanups. + +// Split into pieces for binary compatibility testing October 2002 + +extern void nrv1_x (void); + +int +main () +{ + nrv1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/nrv1_x.C b/gcc/testsuite/g++.dg/compat/eh/nrv1_x.C new file mode 100644 index 00000000000..0647de889a5 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/nrv1_x.C @@ -0,0 +1,21 @@ +extern "C" void exit (int); +extern "C" void abort (void); + +#include "nrv1.h" + +extern A f (void); + +int c, d; + +void nrv1_x () +{ + try + { A a = f(); } + catch (...) { } + if (d < c) + abort (); + exit (0); +} + +A::A() { ++c; } +A::~A() { ++d; } diff --git a/gcc/testsuite/g++.dg/compat/eh/nrv1_y.C b/gcc/testsuite/g++.dg/compat/eh/nrv1_y.C new file mode 100644 index 00000000000..5a43af7c205 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/nrv1_y.C @@ -0,0 +1,8 @@ +#include "nrv1.h" + +A f() +{ + A nrv; + throw 42; + return nrv; +} diff --git a/gcc/testsuite/g++.dg/compat/eh/spec3.h b/gcc/testsuite/g++.dg/compat/eh/spec3.h new file mode 100644 index 00000000000..a042c1004dd --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/spec3.h @@ -0,0 +1,8 @@ +class Base {}; + +struct A : virtual public Base +{ + A(); +}; + +struct B {}; diff --git a/gcc/testsuite/g++.dg/compat/eh/spec3_main.C b/gcc/testsuite/g++.dg/compat/eh/spec3_main.C new file mode 100644 index 00000000000..3f0e919b2ea --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/spec3_main.C @@ -0,0 +1,12 @@ +// PR c++/4381 +// Test that exception-specs work properly for classes with virtual bases. + +// Split into pieces for binary compatibility testing October 2002 + +extern void spec3_x (void); + +int +main () +{ + spec3_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/spec3_x.C b/gcc/testsuite/g++.dg/compat/eh/spec3_x.C new file mode 100644 index 00000000000..b8e5fbeaa1e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/spec3_x.C @@ -0,0 +1,9 @@ +#include "spec3.h" + +extern void func () throw (B,A); + +void spec3_x (void) +{ + try { func(); } + catch (A& a) { } +} diff --git a/gcc/testsuite/g++.dg/compat/eh/spec3_y.C b/gcc/testsuite/g++.dg/compat/eh/spec3_y.C new file mode 100644 index 00000000000..fef6b368c86 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/spec3_y.C @@ -0,0 +1,8 @@ +#include "spec3.h" + +A::A() {} + +void func() throw (B,A) +{ + throw A(); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/template1.h b/gcc/testsuite/g++.dg/compat/eh/template1.h new file mode 100644 index 00000000000..93999a11d49 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/template1.h @@ -0,0 +1,15 @@ +class A {}; + +template <class T> +struct B +{ + typedef A E; +}; + +template <class T> +struct C +{ + typedef B<T> D; + typedef typename D::E E; + void f() throw(E); +}; diff --git a/gcc/testsuite/g++.dg/compat/eh/template1_main.C b/gcc/testsuite/g++.dg/compat/eh/template1_main.C new file mode 100644 index 00000000000..2d169808c46 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/template1_main.C @@ -0,0 +1,12 @@ +// Test whether exception specifier dependent on template parameter +// is accepted during template decl processing. + +// Split into pieces for binary compatibility testing October 2002 + +extern void template1_x (void); + +int +main () +{ + template1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/template1_x.C b/gcc/testsuite/g++.dg/compat/eh/template1_x.C new file mode 100644 index 00000000000..5a18be78989 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/template1_x.C @@ -0,0 +1,21 @@ +extern "C" void exit (int); +extern "C" void abort (void); + +#include "template1.h" + +void template1_x () +{ + int caught = 0; + try + { + C<int> x; + x.f(); + } + catch (A) + { + ++caught; + } + if (caught != 1) + abort (); + exit (0); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/template1_y.C b/gcc/testsuite/g++.dg/compat/eh/template1_y.C new file mode 100644 index 00000000000..19425375c92 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/template1_y.C @@ -0,0 +1,8 @@ +#include "template1.h" + +template<class T> void C<T>::f (void) throw (E) +{ + throw E(); +} + +template class C<int>; diff --git a/gcc/testsuite/g++.dg/compat/eh/unexpected1_main.C b/gcc/testsuite/g++.dg/compat/eh/unexpected1_main.C new file mode 100644 index 00000000000..1658db77e32 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/unexpected1_main.C @@ -0,0 +1,12 @@ +// PR 3719 +// Test that an unexpected handler can rethrow to categorize. + +// Split into pieces for binary compatibility testing October 2002 + +extern void unexpected1_x (); + +int +main () +{ + unexpected1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/eh/unexpected1_x.C b/gcc/testsuite/g++.dg/compat/eh/unexpected1_x.C new file mode 100644 index 00000000000..61361a68d9f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/unexpected1_x.C @@ -0,0 +1,26 @@ +#include <exception> + +struct One { }; +struct Two { }; + +extern "C" void abort (); +extern void doit (void) throw (Two); +extern void handle_unexpected (void); + +void +unexpected1_x () +{ + std::set_unexpected (handle_unexpected); + + try + { + doit (); + } + catch (Two &) + { + } + catch (...) + { + abort (); + } +} diff --git a/gcc/testsuite/g++.dg/compat/eh/unexpected1_y.C b/gcc/testsuite/g++.dg/compat/eh/unexpected1_y.C new file mode 100644 index 00000000000..0c42c457953 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/eh/unexpected1_y.C @@ -0,0 +1,21 @@ +struct One { }; +struct Two { }; + +void +handle_unexpected () +{ + try + { + throw; + } + catch (One &) + { + throw Two (); + } +} + +void +doit () throw (Two) +{ + throw One (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/array5_main.C b/gcc/testsuite/g++.dg/compat/init/array5_main.C new file mode 100644 index 00000000000..96b2cc4b12b --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/array5_main.C @@ -0,0 +1,14 @@ +// Copyright (C) 2002 Free Software Foundation +// Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> +// Split into pieces for binary compatibility testing October 2002 + +// Incorrect construction and destruction of multi-dimensional +// array of class. + +extern void array5_x (void); + +int +main () +{ + array5_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/array5_x.C b/gcc/testsuite/g++.dg/compat/init/array5_x.C new file mode 100644 index 00000000000..dc138772cdd --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/array5_x.C @@ -0,0 +1,33 @@ +extern "C" void abort (void); + +extern int count; +extern int num; + +struct A +{ + A(); + ~A(); +}; + +struct Array +{ + A array[2][2][2]; +}; + +void +array5_x () +{ + for (num = 0; num <= 8; ++num) + { + count = 0; + try + { + Array A; + } + catch (...) + { + } + if (count != 0) + abort(); + } +} diff --git a/gcc/testsuite/g++.dg/compat/init/array5_y.C b/gcc/testsuite/g++.dg/compat/init/array5_y.C new file mode 100644 index 00000000000..64b295ed56d --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/array5_y.C @@ -0,0 +1,20 @@ +int count; +int num; + +struct A +{ + A(); + ~A(); +}; + +A::A() +{ + if (count == num) + throw ""; + count++; +} + +A::~A() +{ + count--; +} diff --git a/gcc/testsuite/g++.dg/compat/init/byval1.h b/gcc/testsuite/g++.dg/compat/init/byval1.h new file mode 100644 index 00000000000..2876b76ede1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/byval1.h @@ -0,0 +1,6 @@ +struct C +{ + int m; + C(); + ~C(); +}; diff --git a/gcc/testsuite/g++.dg/compat/init/byval1_main.C b/gcc/testsuite/g++.dg/compat/init/byval1_main.C new file mode 100644 index 00000000000..acefaab1440 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/byval1_main.C @@ -0,0 +1,12 @@ +// PR c++/3948 +// Test that the destructor call for a value parameter gets the +// right address. +// Split into pieces for binary compatibility testing October 2002 + +extern void byval1_x (void); + +int +main () +{ + byval1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/byval1_x.C b/gcc/testsuite/g++.dg/compat/init/byval1_x.C new file mode 100644 index 00000000000..248dbe763bc --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/byval1_x.C @@ -0,0 +1,15 @@ +#include "byval1.h" + +extern "C" void abort (void); +extern void Foo (C c); +extern int r; + +void +byval1_x () +{ + C c; + + Foo (c); + if (r != 0) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/byval1_y.C b/gcc/testsuite/g++.dg/compat/init/byval1_y.C new file mode 100644 index 00000000000..6e217e84ec5 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/byval1_y.C @@ -0,0 +1,14 @@ +#include "byval1.h" + +void *p[2]; + +int i; +int r; + +C::C() { p[i++] = this; } +C::~C() { if (p[--i] != this) r = 1; } + +void Foo (C c) +{ + p[i++] = &c; +} diff --git a/gcc/testsuite/g++.dg/compat/init/dtor1.h b/gcc/testsuite/g++.dg/compat/init/dtor1.h new file mode 100644 index 00000000000..77e21c12ef2 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/dtor1.h @@ -0,0 +1,30 @@ +struct B +{ + int x; + B (int); + ~B (); +}; + +struct C1 : public B { + C1 (int); +}; + +struct C2 : public B { + C2 (int); +}; + +struct D : public B { + D (int); +}; + +struct E : public B { + E (int); +}; + +struct A + : public C1, C2, virtual public D, virtual public E +{ + A (); + B x1; + B x2; +}; diff --git a/gcc/testsuite/g++.dg/compat/init/dtor1_main.C b/gcc/testsuite/g++.dg/compat/init/dtor1_main.C new file mode 100644 index 00000000000..78868784038 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/dtor1_main.C @@ -0,0 +1,9 @@ +// Split into pieces for binary compatibility testing October 2002 + +extern void dtor1_x (void); + +int +main () +{ + dtor1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/dtor1_x.C b/gcc/testsuite/g++.dg/compat/init/dtor1_x.C new file mode 100644 index 00000000000..8a4727cfb4c --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/dtor1_x.C @@ -0,0 +1,7 @@ +#include "dtor1.h" + +void +dtor1_x (void) +{ + A a; +} diff --git a/gcc/testsuite/g++.dg/compat/init/dtor1_y.C b/gcc/testsuite/g++.dg/compat/init/dtor1_y.C new file mode 100644 index 00000000000..27610fc1e9e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/dtor1_y.C @@ -0,0 +1,18 @@ +#include "dtor1.h" + +extern "C" void abort (); + +int d = 5; + +B::B (int i) : x (i) { } +B::~B () { if (d-- != x) abort (); } + +C1::C1 (int i) : B (i) {} + +C2::C2 (int i) : B (i) {} + +D::D (int i) : B (i) {} + +E::E (int i) : B (i) {} + +A::A () : D (0), E (1), C1 (2), C2 (3), x1(4), x2(5) {} diff --git a/gcc/testsuite/g++.dg/compat/init/elide1.h b/gcc/testsuite/g++.dg/compat/init/elide1.h new file mode 100644 index 00000000000..481e7308b5f --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/elide1.h @@ -0,0 +1,5 @@ +struct A { + A (); + A (const A&); + ~A (); +}; diff --git a/gcc/testsuite/g++.dg/compat/init/elide1_main.C b/gcc/testsuite/g++.dg/compat/init/elide1_main.C new file mode 100644 index 00000000000..c08d02fff45 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/elide1_main.C @@ -0,0 +1,25 @@ +// Test that the destructor for a temporary passed by value isn't run +// until end of full-expression, as per [class.copy]: + +// Whenever a temporary class object is copied using a copy constructor, +// and this object and the copy have the same cv-unqualified type, an +// implementation is permitted to treat the original and the copy as two +// different ways of referring to the same object and not perform a copy +// at all, even if the class copy constructor or destructor have side +// effects.... In these cases, the +// object is destroyed at the later of times when the original and the +// copy would have been destroyed without the optimization. + +// Here, the temporary would be destroyed later than the parm, so either we +// must suppress the optimization in this case or destroy value parms in the +// caller. + +// Split into pieces for binary compatibility testing October 2002 + +extern void elide1_x (void); + +int +main () +{ + elide1_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/elide1_x.C b/gcc/testsuite/g++.dg/compat/init/elide1_x.C new file mode 100644 index 00000000000..dbc287e4e2c --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/elide1_x.C @@ -0,0 +1,15 @@ +#include "elide1.h" + +extern "C" void abort (void); +extern void f (A); +extern int d; + +void +elide1_x (void) +{ + int r; + f (A ()), r = d; + + if (r >= d || !d) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/elide1_y.C b/gcc/testsuite/g++.dg/compat/init/elide1_y.C new file mode 100644 index 00000000000..e767d08082e --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/elide1_y.C @@ -0,0 +1,9 @@ +#include "elide1.h" + +int d; + +A::A () { } +A::A (const A&) { } +A::~A() { ++d; } + +void f (A a) { } diff --git a/gcc/testsuite/g++.dg/compat/init/init-ref2_main.C b/gcc/testsuite/g++.dg/compat/init/init-ref2_main.C new file mode 100644 index 00000000000..73782829ec4 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/init-ref2_main.C @@ -0,0 +1,11 @@ +// Submitted by Jason Merrill <jason_merrill@redhat.com> +// Test for proper handling of local static references. +// Split into pieces for binary compatibility testing October 2002 + +extern void init_ref2_x (void); + +int +main () +{ + init_ref2_x (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/init-ref2_x.C b/gcc/testsuite/g++.dg/compat/init/init-ref2_x.C new file mode 100644 index 00000000000..7fbec89b645 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/init-ref2_x.C @@ -0,0 +1,22 @@ +extern "C" void abort (void); +extern void g (void); +extern void h (void); + +int r; +int c; +int f () +{ + // Test that we only initialize i once. + if (++c > 1) + ++r; + return 42; +} + +void +init_ref2_x (void) +{ + g (); + h (); + if (r != 0) + abort (); +} diff --git a/gcc/testsuite/g++.dg/compat/init/init-ref2_y.C b/gcc/testsuite/g++.dg/compat/init/init-ref2_y.C new file mode 100644 index 00000000000..23e66b2f9a1 --- /dev/null +++ b/gcc/testsuite/g++.dg/compat/init/init-ref2_y.C @@ -0,0 +1,24 @@ +extern int f (void); +extern int r; + +const int *p; + +void g () +{ + static const int &i = f(); + + // Test that i points to the same place in both calls. + if (p && p != &i) + ++r; + // Test that if so, it points to static data. + if (i != 42) + ++r; + + p = &i; +} + +void h () +{ + int arr[] = { 1, 1, 1, 1, 1, 1, 1 }; + g (); +} diff --git a/gcc/testsuite/g++.dg/cpp/c++98-pedantic.C b/gcc/testsuite/g++.dg/cpp/c++98-pedantic.C new file mode 100644 index 00000000000..61e13c5d145 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/c++98-pedantic.C @@ -0,0 +1,10 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-std=c++98 -pedantic" } */ + +/* This file is for testing the preprocessor in -std=c++98 -pedantic mode. + Neil Booth, 2 Dec 2000. */ + +#if 1LL /* { dg-warning "long long" } */ +#endif diff --git a/gcc/testsuite/g++.dg/cpp/c++98.C b/gcc/testsuite/g++.dg/cpp/c++98.C new file mode 100644 index 00000000000..0ec4f359f04 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/c++98.C @@ -0,0 +1,10 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "-std=c++98" } */ + +/* This file is for testing the preprocessor in -std=c++98 mode. + Neil Booth, 2 Dec 2000. */ + +#if 1LL +#endif diff --git a/gcc/testsuite/g++.dg/expr/cond1.C b/gcc/testsuite/g++.dg/expr/cond1.C new file mode 100644 index 00000000000..8fb3c0f4f34 --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/cond1.C @@ -0,0 +1,28 @@ +// { dg-do run } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 17 Oct 2002 <nathan@codesourcery.com> + +// PR 7209. We didn't SAVE_EXPR in the right place + +char a[2][1][16]={ + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, + {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}}; + +int f() {return 0;} + +char * Foo (int d) +{ + char *c1; + + c1=a[d==0 ? 0 : 1][f()]; + + return c1; +} + +int main () +{ + if (Foo (0) != (void *)a) + return 1; + return 0; +} diff --git a/gcc/testsuite/g++.dg/ext/typedef-init.C b/gcc/testsuite/g++.dg/ext/typedef-init.C new file mode 100644 index 00000000000..5602783b499 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/typedef-init.C @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-fpermissive" } // suppress default -pedantic-errors */ + +/* This code used to be a legitimate, if dubious, extension. However, + it's been broken since GCC 3.0 (caused ICE) and we have now removed + the extension. See PR c/7353. + + C++ issues a warning in addition to the error, since this construct + appears to be a case of implicit int (forbidden in std. C++) until + we get to the equals sign. */ + +typedef A = 0; /* { dg-error "initialized" "typedef A = B" } */ + /* { dg-warning "no type" "also warns" { target *-*-* } 12 } */ +A a; /* { dg-bogus "" "no error cascade" } */ diff --git a/gcc/testsuite/g++.dg/ext/vlm1.C b/gcc/testsuite/g++.dg/ext/vlm1.C new file mode 100644 index 00000000000..61628e6bba4 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/vlm1.C @@ -0,0 +1,13 @@ +// { dg-options "" } + +template <class T> struct A {}; + +struct B { + static const int s; + A<int[s]> a; // { dg-error "variably modified|no type" } +}; + +const int B::s=16; + +B b; + diff --git a/gcc/testsuite/g++.dg/ext/vlm2.C b/gcc/testsuite/g++.dg/ext/vlm2.C new file mode 100644 index 00000000000..3a0b335262c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/vlm2.C @@ -0,0 +1,13 @@ +// { dg-options "" } + +int n; + +struct Y +{ + void f () { + typedef int X[n]; + struct Z { + X x; // { dg-error "variably modified" } + }; + } +}; diff --git a/gcc/testsuite/g++.dg/inherit/override1.C b/gcc/testsuite/g++.dg/inherit/override1.C new file mode 100644 index 00000000000..8f80046413f --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/override1.C @@ -0,0 +1,20 @@ +// { dg-options "-w" } + +struct c0 { virtual void f (); }; +struct c1 : public c0 {}; +struct c2 : public c0 {}; +struct c3 : virtual public c0, public c1, public c2 {}; +struct c5 {}; +struct c7 : virtual public c3 {}; +struct c8 : virtual public c1 { virtual void f (); }; +struct c9 {}; +struct c10 : virtual public c8, virtual public c7 {}; +struct c11 : virtual public c5 {}; +struct c12 : virtual public c8, public c7 {}; +struct c13 : public c9, public c3, virtual public c2 {}; +struct c14 : virtual public c1, virtual public c5, virtual public c0, + public c2 {}; +struct c15 : public c14, public c12, virtual public c3 {}; +struct c16 : public c12, public c10, public c2 { virtual void f (); }; +struct c17 : virtual public c13, public c15, virtual public c0, + virtual public c16 {}; diff --git a/gcc/testsuite/g++.dg/inherit/thunk1.C b/gcc/testsuite/g++.dg/inherit/thunk1.C new file mode 100644 index 00000000000..0c9919a192c --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/thunk1.C @@ -0,0 +1,41 @@ +// { dg-do run { target i?86-*-* } } + +#include <stdarg.h> + +extern "C" void abort (); + +struct A { + virtual void f (int, ...) {} + int i; +}; + +struct B : virtual public A { +}; + +struct C : public B { + C (); + virtual void f (int, ...); +}; + +extern C* cp; + +C::C () { cp = this; } + +void C::f (int i, ...) { + if (this != cp) + abort (); + va_list ap; + if (i != 3) + abort (); + va_start (ap, i); + if (va_arg (ap, int) != 7) + abort (); + va_end (ap); +} + +C* cp = new C; + +int main () +{ + cp->f (3, 7); +} diff --git a/gcc/testsuite/g++.dg/inherit/using3.C b/gcc/testsuite/g++.dg/inherit/using3.C new file mode 100644 index 00000000000..d2acf80099a --- /dev/null +++ b/gcc/testsuite/g++.dg/inherit/using3.C @@ -0,0 +1,19 @@ +class A +{ +public: + typedef int T; + int a; +}; + +class B : virtual private A +{ +}; + +class C : virtual private A, public B +{ +public: + using A::a; + using A::T; +}; + +C::T x; diff --git a/gcc/testsuite/g++.dg/init/array6.C b/gcc/testsuite/g++.dg/init/array6.C new file mode 100644 index 00000000000..6181d02bfd2 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array6.C @@ -0,0 +1,7 @@ +// { dg-do compile } + +char arr [][4] = { "one", "two" }; +const char arr2[][4] = { "one", "two" }; +signed char arr3[][4] = { "one", "two" }; +const unsigned char arr4[][4] = { "one", "two" }; +volatile wchar_t arr5[][4] = { L"one", L"two" }; diff --git a/gcc/testsuite/g++.dg/init/array7.C b/gcc/testsuite/g++.dg/init/array7.C new file mode 100644 index 00000000000..23c6a7098ef --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array7.C @@ -0,0 +1,15 @@ +struct S { + virtual void v () {} + void f (const float g[3]); + float h[3]; +}; + +void g () { + S s1, s2; + s1 = s2; +} + +void S::f (const float g[3]) {} + + + diff --git a/gcc/testsuite/g++.dg/init/array8.C b/gcc/testsuite/g++.dg/init/array8.C new file mode 100644 index 00000000000..5f28ca490e7 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array8.C @@ -0,0 +1,12 @@ +struct A { + A (); +}; + +struct B { + A a1; + A a2; +}; + +A a; + +struct B b[] = { { a, a }, { a, a } }; diff --git a/gcc/testsuite/g++.dg/init/brace1.C b/gcc/testsuite/g++.dg/init/brace1.C new file mode 100644 index 00000000000..a819fa2587c --- /dev/null +++ b/gcc/testsuite/g++.dg/init/brace1.C @@ -0,0 +1,4 @@ +// { dg-do compile } + +int i[4] = { { 3 } }; // { dg-error "brace" } + diff --git a/gcc/testsuite/g++.dg/init/copy2.C b/gcc/testsuite/g++.dg/init/copy2.C new file mode 100644 index 00000000000..9a662d4cf16 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/copy2.C @@ -0,0 +1,5 @@ +// { dg-do compile } + +struct S { S (); }; + +volatile S s[1] = { S () }; diff --git a/gcc/testsuite/g++.dg/init/copy3.C b/gcc/testsuite/g++.dg/init/copy3.C new file mode 100644 index 00000000000..fa6a6ea1884 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/copy3.C @@ -0,0 +1,16 @@ +// { dg-do run } +// { dg-options "-fno-elide-constructors" } + +int copies; + +struct S { + S () {} + S (const S&) { ++copies; } +}; + +S s[1] = { S () }; + +int main () { + if (copies != 1) + return 1; +} diff --git a/gcc/testsuite/g++.dg/init/ctor1.C b/gcc/testsuite/g++.dg/init/ctor1.C new file mode 100644 index 00000000000..aeb509bfa5d --- /dev/null +++ b/gcc/testsuite/g++.dg/init/ctor1.C @@ -0,0 +1,57 @@ +// { dg-do run } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 12 Oct 2002 <nathan@codesourcery.com> + +// From WindRiver SPR 80797 +// We were inadvertently SAVE_EXPRing volatile arrays during delete[] + +struct A +{ + A *ptr; + static int ok; + + A () {ptr = this;} + ~A () {ok = ptr == this;} +}; +int A::ok = -1; + +struct B +{ + B *ptr; + static int ok; + + B () {ptr = this;} + ~B () {ok = ptr == this;} +}; +int B::ok = -1; + +struct C +{ + A volatile a; + B volatile b[1]; + + C (); +}; + +C::C () +{ + throw 1; +} + +int main () +{ + try + { + C c; + } + catch (...) + { + if (A::ok != 1) + return 1; + if (B::ok != 1) + return 2; + return 0; + } + return 3; +} diff --git a/gcc/testsuite/g++.dg/opt/const2.C b/gcc/testsuite/g++.dg/opt/const2.C new file mode 100644 index 00000000000..9ddc5e13764 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/const2.C @@ -0,0 +1,40 @@ +// { dg-do run } +// { dg-options "-O" } + +extern "C" void abort (void); + +struct QSize +{ + QSize(); + QSize( int w, int h ); + int wd, ht; + friend inline const QSize operator+( const QSize &, const QSize & ); +}; + +inline QSize::QSize() +{ wd = ht = -1; } + +inline QSize::QSize( int w, int h ) +{ wd = w; ht = h; } + +inline const QSize operator+( const QSize & s1, const QSize & s2 ) +{ return QSize(s1.wd+s2.wd, s1.ht+s2.ht); } + +QSize minimumSize() +{ + return QSize (100, 200); +} + +QSize totalMinimumSize() +{ + QSize s = minimumSize(); + return s + QSize( 0, 0 ); +} + +int main() +{ + QSize s = totalMinimumSize(); + if (s.wd != 100 || s.ht != 200) + abort (); +} + diff --git a/gcc/testsuite/g++.dg/other/warning1.C b/gcc/testsuite/g++.dg/other/warning1.C new file mode 100644 index 00000000000..109fc46aa22 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/warning1.C @@ -0,0 +1,18 @@ +// { dg-do compile } + +// PR c++/7804 +// Floating point formatting in error and warning messages + +extern "C" int printf(const char *, ...); + +struct S +{ + static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|initialization" } + static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|initialization" } +}; + +int main() +{ + printf("%f\n%f\n", S::inf, S::nan); + return 0; +} diff --git a/gcc/testsuite/g++.dg/overload/member2.C b/gcc/testsuite/g++.dg/overload/member2.C new file mode 100644 index 00000000000..b8914146f16 --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/member2.C @@ -0,0 +1,41 @@ +// { dg-do run } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 17 Oct 2002 <nathan@codesourcery.com> + +// PR 7676. We didn't notice template members were different. + +struct foo +{ + template<class T> + int bar() {return 1;} + + template<int I> + int bar() {return 2;} + +}; + +struct baz : foo +{ + using foo::bar; + template<int I> + int bar () {return 3;} +}; + +int main () +{ + baz b; + foo f; + + if (f.bar<1> () != 2) + return 1; + if (f.bar<int> () != 1) + return 2; + + if (b.bar<1> () != 3) + return 1; + if (b.bar<int> () != 1) + return 2; + + return 0; +} diff --git a/gcc/testsuite/g++.dg/parse/decl-specifier-1.C b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C new file mode 100644 index 00000000000..e81fbabf2c3 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/decl-specifier-1.C @@ -0,0 +1,16 @@ +// Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net> +// Origin: PRs 7721 and 7803 +// { dg-do compile } + +namespace N +{ + template<typename> + struct X { }; +} + +N::X X; // { dg-error "" "" } + +int main() +{ + return sizeof(X); // { dg-error "" "" } +} diff --git a/gcc/testsuite/g++.dg/parse/friend1.C b/gcc/testsuite/g++.dg/parse/friend1.C new file mode 100644 index 00000000000..f19dc9c628b --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/friend1.C @@ -0,0 +1,9 @@ +namespace N { + template <typename T> + static void f (); + + struct S { + friend void N::f<int> (); + static void f (int); + }; +} diff --git a/gcc/testsuite/g++.dg/parse/stmtexpr3.C b/gcc/testsuite/g++.dg/parse/stmtexpr3.C new file mode 100644 index 00000000000..79f689316ae --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/stmtexpr3.C @@ -0,0 +1,8 @@ +// { dg-do compile } +// { dg-options "" } + +struct B +{ + int a; + B() : a(({ 1; })) {} +}; diff --git a/gcc/testsuite/g++.dg/template/cond.C b/gcc/testsuite/g++.dg/template/cond.C new file mode 100644 index 00000000000..394a21c9a6b --- /dev/null +++ b/gcc/testsuite/g++.dg/template/cond.C @@ -0,0 +1,23 @@ +// PR c++/8080 + +// Bug: the transformation in finish_while_stmt_cond produced something +// that tsubst_expr handled badly. Fixed by not doing the transformation +// while parsing a template. + +class TObject {}; + +struct TIter { + TObject *operator()(); +}; + + +template<class T> +void get_root_object(TIter& iobj) { + while ( TObject* pnew_obj = iobj() ) + ; +} + +void foo(TIter& iobj) +{ + get_root_object<int>(iobj); +} diff --git a/gcc/testsuite/g++.dg/template/ptrmem3.C b/gcc/testsuite/g++.dg/template/ptrmem3.C new file mode 100644 index 00000000000..fda7bf10a4d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ptrmem3.C @@ -0,0 +1,22 @@ +// Origin: Theo Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr> + +template <typename T,double (T::*fun)() const> +struct I { +}; + +struct R { + R() { } +}; + +class H: public R { +public: + H(): R() { } + double& f() { return a; } + double f() const { return 1.0; } + double a; +}; + +struct A { + typedef I<H,&H::f> F; + A() { } +}; diff --git a/gcc/testsuite/g++.dg/template/ref1.C b/gcc/testsuite/g++.dg/template/ref1.C new file mode 100644 index 00000000000..3f133d488f5 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ref1.C @@ -0,0 +1,3 @@ +class a {} a1; +template <a & p> class b { public: b() { static_cast <a &> (p); }; }; +int main() { b <a1> b1; }; diff --git a/gcc/testsuite/g++.dg/template/union1.C b/gcc/testsuite/g++.dg/template/union1.C new file mode 100644 index 00000000000..9019c38a285 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/union1.C @@ -0,0 +1,29 @@ +// { dg-do run } + +extern "C" void abort (); + +void g (char c) +{ + if (c != 'a') + abort (); +} + +void h (int i) +{ + if (i != 3) + abort (); +} + +template <typename T> void f(T const &t) +{ + union { char c; T t_; }; + + c = 'a'; + g (c); + t_ = 3; + h (t_); +} + +int main () { + f (3); +} diff --git a/gcc/testsuite/g77.dg/bprob/g77-bprob-1.f b/gcc/testsuite/g77.dg/bprob/g77-bprob-1.f new file mode 100644 index 00000000000..73f04405b9b --- /dev/null +++ b/gcc/testsuite/g77.dg/bprob/g77-bprob-1.f @@ -0,0 +1,330 @@ +C Test profile-directed block ordering with various Fortran 77 constructs +C to catch basic regressions in the functionality. + + program bprob1 + implicit none + integer i,j,k,n + integer result + integer lpall, ieall, gtall + integer lpval, ieval, gtval + + lpval = lpall() + ieval = ieall() + gtval = gtall() + if ((lpval .ne. 1) .or. (ieval .ne. 1) .or. (gtval .ne. 1)) then + call abort + end if + + end + +C Pass a value through a function to thwart optimization. + integer function foo(i) + implicit none + integer i + foo = i + end + +C Test various flavors of GOTO and compare results against expected values. + integer function gtall() + implicit none + integer gt1, gt2, gt3, gt4, gt5 + integer gtval + + gtall = 1 + gtval = 0 + gtval = gtval + gt1(0) + gtval = gtval + gt1(1) + if (gtval .ne. 3) then + print *,"gtall part 1: ", gtval, 3 + gtall = 0 + end if + + gtval = 0 + gtval = gtval + gt2(3) + gtval = gtval + gt2(30) + if (gtval .ne. 12) then + print *,"gtall part 2: ", gtval, 12 + gtall = 0 + end if + + gtval = 0 + gtval = gtval + gt3(0) + gtval = gtval + gt3(3) + if (gtval .ne. 48) then + print *,"gtall part 3: ", gtval, 48 + gtall = 0 + end if + + gtval = 0 + gtval = gtval + gt4(1) + gtval = gtval + gt4(2) + gtval = gtval + gt4(3) + if (gtval .ne. 14) then + print *,"gtall part 4: ", gtval, 14 + gtall = 0 + end if + + gtval = 0 + gtval = gtval + gt5(0) + gtval = gtval + gt5(-1) + gtval = gtval + gt5(5) + if (gtval .ne. 14) then + print *,"gtall part 5: ", gtval, 14 + gtall = 0 + end if + end + +C Test simple GOTO. + integer function gt1(f) + implicit none + integer f + if (f .ne. 0) goto 100 + gt1 = 1 + goto 101 + 100 gt1 = 2 + 101 continue + end + +C Test simple GOTO again, this time out of a DO loop. + integer function gt2(f) + implicit none + integer f + integer i + do i=1,10 + if (i .eq. f) goto 100 + end do + gt2 = 4 + goto 101 + 100 gt2 = 8 + 101 continue + end + +C Test computed GOTO. + integer function gt3(i) + implicit none + integer i + gt3 = 8 + goto (101, 102, 103, 104), i + goto 105 + 101 gt3 = 1024 + goto 105 + 102 gt3 = 2048 + goto 105 + 103 gt3 = 16 + goto 105 + 104 gt3 = 4096 + goto 105 + 105 gt3 = gt3 * 2 + end + +C Test assigned GOTO. + integer function gt4(i) + implicit none + integer i + integer label + assign 101 to label + if (i .eq. 2) assign 102 to label + if (i .eq. 3) assign 103 to label + goto label, (101, 102, 103) + 101 gt4 = 1 + goto 104 + 102 gt4 = 2 + goto 104 + 103 gt4 = 4 + 104 gt4 = gt4 * 2 + end + +C Test arithmetic IF (bundled with the GOTO variants). + integer function gt5(i) + implicit none + integer i + gt5 = 1 + if (i) 101, 102, 103 + 101 gt5 = 2 + goto 104 + 102 gt5 = 4 + goto 104 + 103 gt5 = 8 + 104 continue + end + +C Run all of the loop tests and check results against expected values. + integer function lpall() + implicit none + integer loop1, loop2 + integer loopval + + lpall = 1 + loopval = 0 + loopval = loopval + loop1(1,0) + loopval = loopval + loop1(1,2) + loopval = loopval + loop1(1,7) + if (loopval .ne. 12) then + print *,"lpall part 1: ", loopval, 12 + lpall = 0 + end if + + loopval = 0 + loopval = loopval + loop2(1,0,0,0) + loopval = loopval + loop2(1,1,0,0) + loopval = loopval + loop2(1,1,3,0) + loopval = loopval + loop2(1,1,3,1) + loopval = loopval + loop2(1,3,1,5) + loopval = loopval + loop2(1,3,7,3) + if (loopval .ne. 87) then + print *,"lpall part 2: ", loopval, 87 + lpall = 0 + end if + end + +C Test a simple DO loop. + integer function loop1(r,n) + implicit none + integer r,n,i + + loop1 = r + do i=1,n + loop1 = loop1 + 1 + end do + end + +C Test nested DO loops. + integer function loop2(r, l, m, n) + implicit none + integer r,l,m,n + integer i,j,k + loop2 = r + do i=1,l + do j=1,m + do k=1,n + loop2 = loop2 + 1 + end do + end do + end do + end + +C Test various combinations of IF-THEN-ELSE and check results against +C expected values. + integer function ieall() + implicit none + integer ie1, ie2, ie3 + integer ieval + ieall = 1 + ieval = 0 + + ieval = ieval + ie1(0,2) + ieval = ieval + ie1(0,0) + ieval = ieval + ie1(1,2) + ieval = ieval + ie1(10,2) + ieval = ieval + ie1(11,11) + if (ieval .ne. 31) then + print *,"ieall part 1: ", ieval, 31 + ieall = 0 + end if + + ieval = 0 + ieval = ieval + ie2(0) + ieval = ieval + ie2(2) + ieval = ieval + ie2(2) + ieval = ieval + ie2(2) + ieval = ieval + ie2(3) + ieval = ieval + ie2(3) + if (ieval .ne. 23) then + print *,"ieall part 2: ", ieval, 23 + ieall = 0 + end if + + ieval = 0 + ieval = ieval + ie3(11,19) + ieval = ieval + ie3(25,27) + ieval = ieval + ie3(11,22) + ieval = ieval + ie3(11,10) + ieval = ieval + ie3(21,32) + ieval = ieval + ie3(21,20) + ieval = ieval + ie3(1,2) + ieval = ieval + ie3(32,31) + ieval = ieval + ie3(3,0) + ieval = ieval + ie3(0,47) + ieval = ieval + ie3(65,65) + if (ieval .ne. 246) then + print *,"ieall part 3: ", ieval, 246 + ieall = 0 + end if + end + +C Test IF-THEN-ELSE. + integer function ie1(i,j) + implicit none + integer i,j + integer foo + + ie1 = 0 + if (i .ne. 0) then + if (j .ne. 0) then + ie1 = foo(4) + else + ie1 = foo(1024) + end if + else + if (j .ne. 0) then + ie1 = foo(1) + else + ie1 = foo(2) + end if + end if + if (i .gt. j) then + ie1 = foo(ie1*2) + end if + if (i .gt. 10) then + if (j .gt. 10) then + ie1 = foo(ie1*4) + end if + end if + end + +C Test a series of simple IF-THEN statements. + integer function ie2(i) + implicit none + integer i + integer foo + ie2 = 0 + + if (i .eq. 0) then + ie2 = foo(1) + end if + if (i .eq. 1) then + ie2 = foo(1024) + end if + if (i .eq. 2) then + ie2 = foo(2) + end if + if (i .eq. 3) then + ie2 = foo(8) + end if + if (i .eq. 4) then + ie2 = foo(2048) + end if + + end + +C Test nested IF statements and IF with compound expressions. + integer function ie3(i,j) + implicit none + integer i,j + integer foo + + ie3 = 1 + if ((i .gt. 10) .and. (j .gt. i) .and. (j .lt. 20)) then + ie3 = foo(16) + end if + if (i .gt. 20) then + if (j .gt. i) then + if (j .lt. 30) then + ie3 = foo(32) + end if + end if + end if + if ((i .eq. 3) .or. (j .eq. 47) .or. (i .eq.j)) then + ie3 = foo(64) + end if + end diff --git a/gcc/testsuite/gcc.c-torture/compile/20020604-1.x b/gcc/testsuite/gcc.c-torture/compile/20020604-1.x new file mode 100644 index 00000000000..4d4a49ef9e0 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20020604-1.x @@ -0,0 +1,6 @@ +# The array is too big. +if { [istarget "h8300-*-*"] } { + return 1; +} + +return 0 diff --git a/gcc/testsuite/gcc.c-torture/compile/20021007-1.c b/gcc/testsuite/gcc.c-torture/compile/20021007-1.c new file mode 100644 index 00000000000..de4c0defae9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20021007-1.c @@ -0,0 +1,11 @@ +/* PR c/7411 */ +/* Verify that GCC simplifies the null addition to i before + virtual register substitution tries it and winds up with + a memory to memory move. */ + +void foo () +{ + int i = 0,j; + + i+=j=0; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-5.c b/gcc/testsuite/gcc.c-torture/compile/simd-5.c new file mode 100644 index 00000000000..016cccd1e9f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/simd-5.c @@ -0,0 +1,12 @@ +#define vector64 __attribute__((vector_size(8))) + +main(){ + + vector64 int c; +vector64 int a = {1, -1}; +vector64 int b = {2, -2}; +c = -a + b*b*(-1LL); +/* c is now {5, 3} */ + + printf("result is %llx\n", (long long)c); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/simd-5.x b/gcc/testsuite/gcc.c-torture/compile/simd-5.x new file mode 100644 index 00000000000..b7612f78787 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/simd-5.x @@ -0,0 +1,6 @@ +# h8300 does not have long long +if { [istarget "h8300-*-*"] } { + return 1; +} + +return 0 diff --git a/gcc/testsuite/gcc.c-torture/execute/20021010-1.c b/gcc/testsuite/gcc.c-torture/execute/20021010-1.c new file mode 100644 index 00000000000..d742ce40b5f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20021010-1.c @@ -0,0 +1,21 @@ +#include <limits.h> + +int +sub () +{ + int dummy = 0, a = 16; + + if (a / INT_MAX / 16 == 0) + return 0; + else + return a / INT_MAX / 16; +} + +int +main () +{ + if (sub () != 0) + abort (); + + exit (0); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20021010-2.c b/gcc/testsuite/gcc.c-torture/execute/20021010-2.c new file mode 100644 index 00000000000..425a8f6e4c8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20021010-2.c @@ -0,0 +1,37 @@ +/* cse.c failure on x86 target. + Contributed by Stuart Hastings 10 Oct 2002 <stuart@apple.com> */ +#include <stdlib.h> + +typedef signed short SInt16; + +typedef struct { + SInt16 minx; + SInt16 maxx; + SInt16 miny; + SInt16 maxy; +} IOGBounds; + +int expectedwidth = 50; + +unsigned int *global_vramPtr = (unsigned int *)0xa000; + +IOGBounds global_bounds = { 100, 150, 100, 150 }; +IOGBounds global_saveRect = { 75, 175, 75, 175 }; + +main() +{ + unsigned int *vramPtr; + int width; + IOGBounds saveRect = global_saveRect; + IOGBounds bounds = global_bounds; + + if (saveRect.minx < bounds.minx) saveRect.minx = bounds.minx; + if (saveRect.maxx > bounds.maxx) saveRect.maxx = bounds.maxx; + + vramPtr = global_vramPtr + (saveRect.miny - bounds.miny) ; + width = saveRect.maxx - saveRect.minx; + + if (width != expectedwidth) + abort (); + exit (0); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20021011-1.c b/gcc/testsuite/gcc.c-torture/execute/20021011-1.c new file mode 100644 index 00000000000..b1b2c406a71 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20021011-1.c @@ -0,0 +1,24 @@ +/* PR opt/8165. */ + +extern void abort (void); + +char buf[64]; + +int +main (void) +{ + int i; + + __builtin_strcpy (buf, "mystring"); + if (__builtin_strcmp (buf, "mystring") != 0) + abort (); + + for (i = 0; i < 16; ++i) + { + __builtin_strcpy (buf + i, "mystring"); + if (__builtin_strcmp (buf + i, "mystring") != 0) + abort (); + } + + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20021015-1.c b/gcc/testsuite/gcc.c-torture/execute/20021015-1.c new file mode 100644 index 00000000000..9d357c0388f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20021015-1.c @@ -0,0 +1,30 @@ +/* PR opt/7409. */ + +extern void abort (void); + +char g_list[] = { '1' }; + +void g (void *p, char *list, int length, char **elementPtr, char **nextPtr) +{ + if (*nextPtr != g_list) + abort (); + + **nextPtr = 0; +} + +int main (void) +{ + char *list = g_list; + char *element; + int i, length = 100; + + for (i = 0; *list != 0; i++) + { + char *prevList = list; + g (0, list, length, &element, &list); + length -= (list - prevList); + } + + return 0; +} + diff --git a/gcc/testsuite/gcc.c-torture/execute/920710-1.x b/gcc/testsuite/gcc.c-torture/execute/920710-1.x new file mode 100644 index 00000000000..b7612f78787 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/920710-1.x @@ -0,0 +1,6 @@ +# h8300 does not have long long +if { [istarget "h8300-*-*"] } { + return 1; +} + +return 0 diff --git a/gcc/testsuite/gcc.dg/20020523-2.c b/gcc/testsuite/gcc.dg/20020523-2.c new file mode 100644 index 00000000000..5ae3da5473a --- /dev/null +++ b/gcc/testsuite/gcc.dg/20020523-2.c @@ -0,0 +1,65 @@ +/* PR target/6753 + This testcase was miscompiled because sse_mov?fcc_const0* + patterns were missing earlyclobber. */ +/* { dg-do run { target i386-*-* } } */ +/* { dg-options "-march=pentium3 -msse -ffast-math -O2" } */ + +extern void abort (void); +extern void exit (int); + +float one = 1.f; + +void bar (float f) +{ + if (__builtin_memcmp (&one, &f, sizeof (float))) + abort (); +} + +float foo (void) +{ + return 1.f; +} + +typedef struct +{ + float t; +} T; + +void bail_if_no_sse (void) +{ + int fl1, fl2; + + /* See if we can use cpuid. */ + __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;" + "pushl %0; popfl; pushfl; popl %0; popfl" + : "=&r" (fl1), "=&r" (fl2) + : "i" (0x00200000)); + if (((fl1 ^ fl2) & 0x00200000) == 0) + exit (0); + + /* See if cpuid gives capabilities. */ + __asm__ ("cpuid" : "=a" (fl1) : "0" (0) : "ebx", "ecx", "edx", "cc"); + if (fl1 == 0) + exit (0); + + /* See if capabilities include SSE (25th bit; 26 for SSE2). */ + __asm__ ("cpuid" : "=a" (fl1), "=d" (fl2) : "0" (1) : "ebx", "ecx", "cc"); + if ((fl2 & (1 << 25)) == 0) + exit (0); +} + +int main (void) +{ + int i; + T x[1]; + + bail_if_no_sse (); + for (i = 0; i < 1; i++) + { + x[i].t = foo (); + x[i].t = 0.f > x[i].t ? 0.f : x[i].t; + bar (x[i].t); + } + + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/20021006-1.c b/gcc/testsuite/gcc.dg/20021006-1.c new file mode 100644 index 00000000000..63cc8a5af09 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20021006-1.c @@ -0,0 +1,27 @@ +/* PR target/7559 + This testcase was miscompiled on x86-64 due to wrong access to the struct + members. */ + +extern void abort(); + +struct A { + long x; +}; + +struct R { + struct A a, b; +}; + +struct R R = { + {100}, {200} +}; + +void f(struct R r) { + if (r.a.x != R.a.x || r.b.x != R.b.x) + abort(); +} + +int main() { + f(R); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/20021014-1.c b/gcc/testsuite/gcc.dg/20021014-1.c new file mode 100644 index 00000000000..9194aab677d --- /dev/null +++ b/gcc/testsuite/gcc.dg/20021014-1.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -p" } */ + +extern void abort (void); +extern void exit (int); + +int foo (void) +{ + static int bar (int x) + { + return x + 3; + } + return bar (1) + bar (2); +} + +int main (void) +{ + if (foo () != 9) + abort (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/20021018-1.c b/gcc/testsuite/gcc.dg/20021018-1.c new file mode 100644 index 00000000000..f11de4859ef --- /dev/null +++ b/gcc/testsuite/gcc.dg/20021018-1.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -fpic" } */ + +extern void abort (void); +extern void exit (int); + +static const long foo [10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + +long __attribute__((noinline)) +bar (int x) +{ + return foo [x - 0x6ffffffa]; +} + +int +main (void) +{ + if (bar (0x6ffffffc) != 2) + abort (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/alias-1.c b/gcc/testsuite/gcc.dg/alias-1.c new file mode 100644 index 00000000000..a723083672c --- /dev/null +++ b/gcc/testsuite/gcc.dg/alias-1.c @@ -0,0 +1,28 @@ +// { dg-do compile } +// { dg-options "-Wstrict-aliasing -fstrict-aliasing" } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 29 Sep 2002 <nathan@codesourcery.com> + +// 8083. warn about odd casts + +typedef int YYSTYPE; +typedef struct tDefEntry +{ + unsigned t; + +} tDefEntry; +struct incomplete; + + +YYSTYPE + addSibMacro( + YYSTYPE list ) + { + tDefEntry** ppT = (tDefEntry**)&list; // { dg-warning "type-punned pointer" "" } + + struct incomplete *p = (struct incomplete *)&list; // { dg-warning "type-punning to incomplete" "" } + + return list; + } + diff --git a/gcc/testsuite/gcc.dg/cpp/paste13.c b/gcc/testsuite/gcc.dg/cpp/paste13.c new file mode 100644 index 00000000000..e59c2099656 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/paste13.c @@ -0,0 +1,9 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ + +/* This used to be recognized as a comment when lexing after pasting + spellings. Neil Booth, 9 Oct 2002. */ + +#define a /##/= +a /* { dg-warning "valid preprocessing tok" } */ diff --git a/gcc/testsuite/gcc.dg/i386-ssetype-1.c b/gcc/testsuite/gcc.dg/i386-ssetype-1.c new file mode 100644 index 00000000000..6953b751b43 --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-ssetype-1.c @@ -0,0 +1,32 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -msse2 -march=athlon" } */ +/* { dg-final { scan-assembler "andpd.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "andnpd.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "xorpd.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "orpd.*\[bs\]p" } } */ +/* { dg-final { scan-assembler-not "movdqa" } } */ +/* { dg-final { scan-assembler "movapd.*\[bs\]p" } } */ + +/* Verify that we generate proper instruction with memory operand. */ + +#include <xmmintrin.h> +__m128d +t1(__m128d a, __m128d b) +{ +return _mm_and_pd (a,b); +} +__m128d +t2(__m128d a, __m128d b) +{ +return _mm_andnot_pd (a,b); +} +__m128d +t3(__m128d a, __m128d b) +{ +return _mm_or_pd (a,b); +} +__m128d +t4(__m128d a, __m128d b) +{ +return _mm_xor_pd (a,b); +} diff --git a/gcc/testsuite/gcc.dg/i386-ssetype-2.c b/gcc/testsuite/gcc.dg/i386-ssetype-2.c new file mode 100644 index 00000000000..b66aa0cfd98 --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-ssetype-2.c @@ -0,0 +1,40 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -msse2 -march=athlon" } */ +/* { dg-final { scan-assembler "andpd" } } */ +/* { dg-final { scan-assembler "andnpd" } } */ +/* { dg-final { scan-assembler "xorpd" } } */ +/* { dg-final { scan-assembler "orpd" } } */ +/* { dg-final { scan-assembler-not "movdqa" } } */ +/* { dg-final { scan-assembler "movapd" } } */ + +/* Verify that we generate proper instruction without memory operand. */ + +#include <xmmintrin.h> +__m128d +t1(__m128d a, __m128d b) +{ +a=_mm_sqrt_pd(a); +b=_mm_sqrt_pd(b); +return _mm_and_pd (a,b); +} +__m128d +t2(__m128d a, __m128d b) +{ +a=_mm_sqrt_pd(a); +b=_mm_sqrt_pd(b); +return _mm_andnot_pd (a,b); +} +__m128d +t3(__m128d a, __m128d b) +{ +a=_mm_sqrt_pd(a); +b=_mm_sqrt_pd(b); +return _mm_or_pd (a,b); +} +__m128d +t4(__m128d a, __m128d b) +{ +a=_mm_sqrt_pd(a); +b=_mm_sqrt_pd(b); +return _mm_xor_pd (a,b); +} diff --git a/gcc/testsuite/gcc.dg/i386-ssetype-3.c b/gcc/testsuite/gcc.dg/i386-ssetype-3.c new file mode 100644 index 00000000000..4988c0c5abd --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-ssetype-3.c @@ -0,0 +1,32 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -msse2 -march=athlon" } */ +/* { dg-final { scan-assembler "andps.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "andnps.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "xorps.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "orps.*\[bs\]p" } } */ +/* { dg-final { scan-assembler-not "movdqa" } } */ +/* { dg-final { scan-assembler "movaps.*\[bs\]p" } } */ + +/* Verify that we generate proper instruction with memory operand. */ + +#include <xmmintrin.h> +__m128 +t1(__m128 a, __m128 b) +{ +return _mm_and_ps (a,b); +} +__m128 +t2(__m128 a, __m128 b) +{ +return _mm_andnot_ps (a,b); +} +__m128 +t3(__m128 a, __m128 b) +{ +return _mm_or_ps (a,b); +} +__m128 +t4(__m128 a, __m128 b) +{ +return _mm_xor_ps (a,b); +} diff --git a/gcc/testsuite/gcc.dg/i386-ssetype-4.c b/gcc/testsuite/gcc.dg/i386-ssetype-4.c new file mode 100644 index 00000000000..ef6a93f6c16 --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-ssetype-4.c @@ -0,0 +1,38 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -msse2 -march=athlon" } */ +/* { dg-final { scan-assembler "andps" } } */ +/* { dg-final { scan-assembler "andnps" } } */ +/* { dg-final { scan-assembler "xorps" } } */ +/* { dg-final { scan-assembler "orps" } } */ + +/* Verify that we generate proper instruction without memory operand. */ + +#include <xmmintrin.h> +__m128 +t1(__m128 a, __m128 b) +{ +a=_mm_sqrt_ps(a); +b=_mm_sqrt_ps(b); +return _mm_and_ps (a,b); +} +__m128 +t2(__m128 a, __m128 b) +{ +a=_mm_sqrt_ps(a); +b=_mm_sqrt_ps(b); +return _mm_andnot_ps (a,b); +} +__m128 +t3(__m128 a, __m128 b) +{ +a=_mm_sqrt_ps(a); +b=_mm_sqrt_ps(b); +return _mm_or_ps (a,b); +} +__m128 +t4(__m128 a, __m128 b) +{ +a=_mm_sqrt_ps(a); +b=_mm_sqrt_ps(b); +return _mm_xor_ps (a,b); +} diff --git a/gcc/testsuite/gcc.dg/i386-ssetype-5.c b/gcc/testsuite/gcc.dg/i386-ssetype-5.c new file mode 100644 index 00000000000..97cc22fd3a8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/i386-ssetype-5.c @@ -0,0 +1,33 @@ +/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -msse2 -march=athlon" } */ +/* { dg-final { scan-assembler "pand.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "pandn.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "pxor.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "por.*\[bs\]p" } } */ +/* { dg-final { scan-assembler "movdqa" } } */ +/* { dg-final { scan-assembler-not "movaps.*\[bs\]p" } } */ + +/* Verify that we generate proper instruction with memory operand. */ + +#include <xmmintrin.h> +__m128i +t1(__m128i a, __m128i b) +{ +return _mm_and_si128 (a,b); +} +__m128i +t2(__m128i a, __m128i b) +{ +return _mm_andnot_si128 (a,b); +} +__m128i +t3(__m128i a, __m128i b) +{ +return _mm_or_si128 (a,b); +} +__m128i +t4(__m128i a, __m128i b) +{ +return _mm_xor_si128 (a,b); +} + diff --git a/gcc/testsuite/gcc.dg/special/mips-abi.exp b/gcc/testsuite/gcc.dg/special/mips-abi.exp new file mode 100644 index 00000000000..46475f8d96a --- /dev/null +++ b/gcc/testsuite/gcc.dg/special/mips-abi.exp @@ -0,0 +1,125 @@ +# Copyright (C) 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# This test checks whether MIPS ELF configurations pass the right +# ABI flags to the assembler. An ABI flag should always be passed +# unless MEABI is selected. + +load_lib gcc-dg.exp + +# Only run this test on MIPS ELF targets +if {![istarget mips*-*-*] || [gcc_target_object_format] != "elf"} { + return +} + +# A list of all assembler ABI flags. We should use SGI-compatible +# flags where possible. +set asm_abi_flags {-32 -n32 -64 -mabi=o64 -mabi=eabi} + +# Return true if the configuration uses MEABI by default. +proc is_meabi_config {} { + return [expr {[istarget mipsisa32*-*-elf*] + || [istarget mipsisa32el-*-elf*] + || [istarget mipsisa64-*-elf*] + || [istarget mipsisa64el-*-elf*] + || [istarget mipsisa64sr71k-*-elf*]}] +} + +# Try to assemble mips-abi.s (an empty file), passing -v in order to +# get the assembler command line. Check whether an appropriate ABI +# flag is passed. +# +# NAME is a name for the pass/fail line. +# ABIS is a list of acceptable assembler ABI flags, or "" if no +# ABI flag is expected. +# FLAGS is a list of options for gcc. +proc check_mips_abi {name abis flags} { + global srcdir subdir asm_abi_flags + + lappend flags "-v" + set lines [gcc_target_compile "$srcdir/$subdir/mips-abi.s" \ + "mips-abi.o" object \ + [list "additional_flags=$flags"]] + set good 0 + set bad 0 + foreach line [split $lines "\n"] { + # Find the assembler command line. + if {[string first "$srcdir/$subdir/mips-abi.s" $line] >= 0} { + foreach arg [split $line " "] { + # Count the number of matching and non-matching + # ABI options. + if {[lsearch -exact $abis $arg] >= 0} { + incr good + } elseif {[lsearch -exact $asm_abi_flags $arg] >= 0} { + incr bad + } + } + } + } + if {$good == ($abis != "") && $bad == 0} { + pass "mips-abi $name" + } else { + fail "mips-abi $name" + } +} + +# Collect the default target flags. +set default_flags "" +set target [target_info name] +if {[info exists CFLAGS_FOR_TARGET]} { + append default_flags " $CFLAGS_FOR_TARGET" +} +if {[board_info $target exists cflags]} { + append default_flags " [board_info $target cflags]" +} +if {[board_info $target exists multilib_flags]} { + append default_flags " [board_info $target multilib_flags]" +} + +# See whether the default command line specifies an ABI. +set default_abi "" +foreach flag $default_flags { + if {[string first "-mabi" $flag] == 0} { + set default_abi $flag + } +} + +# If the command line does specify an ABI, just check for the +# appropriate assembler flag. +switch -- $default_abi { + -mabi=meabi { check_mips_abi "MEABI" "" "" } + -mabi=eabi { check_mips_abi "EABI" "-mabi=eabi" "" } + -mabi=32 { check_mips_abi "o32" "-32" "" } + -mabi=n32 { check_mips_abi "n32" "-n32" "" } + -mabi=o64 { check_mips_abi "o64" "-mabi=o64" "" } + -mabi=64 { check_mips_abi "n64" "-64" "" } + "" { + # MEABI configs shouldn't pass an ABI flag by default + # but the others should. It doesn't seem worthwhile + # duplicating the configuration to ABI logic here, + # so just accept any ABI. + if {[is_meabi_config]} { + check_mips_abi "default" "" "" + } else { + check_mips_abi "default" $asm_abi_flags "" + } + # See whether passing a -mabi flag does the right thing. + # Only try ABIs that the SGI assembler also understands. + check_mips_abi "o32" "-32" "-mabi=32" + check_mips_abi "n32" "-n32" "-mabi=n32" + check_mips_abi "64" "-64" "-mabi=64" + } +} diff --git a/gcc/testsuite/gcc.dg/special/mips-abi.s b/gcc/testsuite/gcc.dg/special/mips-abi.s new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/gcc/testsuite/gcc.dg/special/mips-abi.s diff --git a/gcc/testsuite/gcc.dg/tls/nonpic-1.c b/gcc/testsuite/gcc.dg/tls/nonpic-1.c new file mode 100644 index 00000000000..0896df60b56 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tls/nonpic-1.c @@ -0,0 +1,71 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftls-model=initial-exec" } */ + +extern __thread long e1; +extern __thread int e2; +static __thread long s1; +static __thread int s2; + +long *ae1 (void) +{ + return &e1; +} + +int *ae2 (void) +{ + return &e2; +} + +long *as1 (void) +{ + return &s1; +} + +int *as2 (void) +{ + return &s2; +} + +long ge1 (void) +{ + return e1; +} + +int ge2 (void) +{ + return e2; +} + +long gs1 (void) +{ + return s1; +} + +int gs2 (void) +{ + return s2; +} + +long ge3 (void) +{ + return e1 + e2; +} + +long gs3 (void) +{ + return s1 + s2; +} + +long ge4 (void) +{ + if (0) + return e1; + return e2; +} + +long gs4 (void) +{ + if (0) + return s1; + return s2; +} diff --git a/gcc/testsuite/gcc.dg/tls/pic-1.c b/gcc/testsuite/gcc.dg/tls/pic-1.c new file mode 100644 index 00000000000..f5b020b7db6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tls/pic-1.c @@ -0,0 +1,71 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fpic -ftls-model=global-dynamic" } */ + +extern __thread long e1; +extern __thread int e2; +static __thread long s1; +static __thread int s2; + +long *ae1 (void) +{ + return &e1; +} + +int *ae2 (void) +{ + return &e2; +} + +long *as1 (void) +{ + return &s1; +} + +int *as2 (void) +{ + return &s2; +} + +long ge1 (void) +{ + return e1; +} + +int ge2 (void) +{ + return e2; +} + +long gs1 (void) +{ + return s1; +} + +int gs2 (void) +{ + return s2; +} + +long ge3 (void) +{ + return e1 + e2; +} + +long gs3 (void) +{ + return s1 + s2; +} + +long ge4 (void) +{ + if (0) + return e1; + return e2; +} + +long gs4 (void) +{ + if (0) + return s1; + return s2; +} diff --git a/gcc/testsuite/gcc.dg/typedef-init.c b/gcc/testsuite/gcc.dg/typedef-init.c new file mode 100644 index 00000000000..9cb4830b74b --- /dev/null +++ b/gcc/testsuite/gcc.dg/typedef-init.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu89" } // suppress default -pedantic-errors */ + +/* This code used to be a legitimate, if dubious, extension. However, + it's been broken since GCC 3.0 (caused ICE) and we have now removed + the extension. See PR c/7353. */ + +typedef A = 0; /* { dg-error "initialized" "typedef A = B" } */ +A a; /* { dg-bogus "" "no error cascade" } */ diff --git a/gcc/testsuite/lib/compat.exp b/gcc/testsuite/lib/compat.exp new file mode 100644 index 00000000000..0944ccc95d8 --- /dev/null +++ b/gcc/testsuite/lib/compat.exp @@ -0,0 +1,235 @@ +# Copyright (C) 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# This file was written by Janis Johnson, <janis187@us.ibm.com> + + +# Test interoperability of two compilers that follow the same ABI, or +# compatibility of two versions of GCC. +# +# Each test has a main program that does nothing but call a function, +# plus two additional source files that contain parts of a program that +# rely on the ABI. those source files are compiled into relocatable +# object files with both compilers. Executables are built using various +# combinations of those object files, with the main program compiled +# with the compiler under test and using that compiler's runtime support. + +# The including .exp file must define these callback procedures. +if [string match "" [info procs "compat-use-alt-compiler"]] then { + error "Proc compat-use-alt-compiler is not defined." +} +if [string match "" [info procs "compat-use-tst-compiler"]] then { + error "Proc compat-use-tst-compiler is not defined." +} + +# Each test is run with each pair of compiler options from this list. +# The first set of options in each pair is used by the compiler under +# test, and the second set is used by the alternate compiler. +# The default option lists can be overridden by +# COMPAT_OPTIONS="[list [list {tst_1} {alt_1}]...[list {tst_n} {alt_n}]]" +# where tst_i and alt_i are lists of options. You can put this in the +# environment before site.exp is written or add it to site.exp directly. +if ![info exists COMPAT_OPTIONS] { + set COMPAT_OPTIONS [list \ + [list {} {}]] +} + +set option_list $COMPAT_OPTIONS + +# +# compat-obj -- compile to an object file +# +# SOURCE is the source file +# DEST is the object file +# OPTIONS is the list of compiler options +# OPTSTR is the options to print with test messages +# +proc compat-obj { source dest options optstr } { + global testcase + global tool + + set comp_output [${tool}_target_compile "$source" "$dest" object $options] + ${tool}_check_compile "$testcase $dest compile" $optstr $dest $comp_output +} + +# compat-run -- link and run an executable +# +# TESTNAME is the mixture of object files to link +# OBJLIST is the list of object files to link +# DEST is the name of the executable +# OPTIONS is a list of compiler and linker options to use +# OPTSTR is the list of options to list in messages +# +proc compat-run { testname objlist dest options optstr } { + global testcase + global tool + + # Check that all of the objects were built successfully. + foreach obj [split $objlist] { + if ![file exists $obj] then { + unresolved "$testcase $testname link $optstr" + unresolved "$testcase $testname execute $optstr" + return + } + } + + # Link the objects into an executable. + set comp_output [${tool}_target_compile "$objlist" $dest executable \ + "$options"] + if ![${tool}_check_compile "$testcase $testname link" "" \ + $dest $comp_output] then { + unresolved "$testcase $testname execute $optstr" + return + } + + # Run the self-checking executable. + if ![string match "*/*" $dest] then { + set dest "./$dest" + } + set result [${tool}_load $dest "" ""] + set status [lindex $result 0] + if { $status == "pass" } then { + remote_file build delete $dest + } + $status "$testcase $testname execute $optstr" +} + +# +# compat-execute -- compile with compatible compilers +# +# SRC1 is the full pathname of the main file of the testcase. +# USE_ALT is nonzero if we're using an alternate compiler as well as +# the compiler under test. +# +proc compat-execute { src1 use_alt } { + global srcdir tmpdir + global option_list + global tool + global verbose + global testcase + + # Use the dg-options mechanism to specify extra flags for this test. + # FIXME: This does not handle other uses of dg-options, and it only + # processes the first one. + set extra_tool_flags "" + set tmp [grep $src1 "{\[ \t\]\*dg-options.*\[ \t\]\+}"] + if ![string match "" $tmp] { + set tmp0 [lindex $tmp 0] + # Extract the compiler options. + regexp "dg-options\[ \t\]\+(.*)\[ \t\]\+\}" \ + $tmp0 all args + # Sometime the options are in quotes, sometimes not. + regsub -all "\"" $args "" args + set extra_tool_flags $args + } + + # Set up the names of the other source files. + regsub "_main.*" $src1 "" base + regsub ".*/" $base "" base + regsub "_main" $src1 "_x" src2 + regsub "_main" $src1 "_y" src3 + + # Define the names of the object files. + set obj1 "main_tst.o" + set obj2_tst "x_tst.o" + set obj2_alt "x_alt.o" + set obj3_tst "y_tst.o" + set obj3_alt "y_alt.o" + + # Get the base name of this test, for use in messages. + regsub "^$srcdir/?" $src1 "" testcase + regsub "_main.*" $testcase "" testcase + # Set up the base name of executable files so they'll be unique. + regsub -all "\[./\]" $testcase "-" execbase + + # If we couldn't rip $srcdir out of `src1' then just do the best we can. + # The point is to reduce the unnecessary noise in the logs. Don't strip + # out too much because different testcases with the same name can confuse + # `test-tool'. + if [string match "/*" $testcase] then { + set testcase "[file tail [file dirname $src1]]/[file tail $src1]" + } + + # Loop through all of the option lists used for this test. + + set count 0 + foreach option_pair $option_list { + + # Pick out each set of options. + set tst_option [lindex $option_pair 0] + set alt_option [lindex $option_pair 1] + set optstr "" + if { ![string match $tst_option ""] \ + || ![string match $alt_option ""] } then { + set optstr "\"$tst_option\",\"$alt_option\"" + } + verbose "Testing $testcase, $optstr" 1 + + set tst_options "" + set alt_options "" + if ![string match $extra_tool_flags ""] then { + lappend tst_options "additional_flags=$extra_tool_flags $tst_option" + lappend alt_options "additional_flags=$extra_tool_flags $alt_option" + } + + # There's a unique name for each executable we generate, based on + # the set of options and how the pieces of the tests are compiled. + set execname1 "${execbase}-${count}1" + set execname2 "${execbase}-${count}2" + set execname3 "${execbase}-${count}3" + set execname4 "${execbase}-${count}4" + incr count + + remote_file build delete $execname1 + remote_file build delete $execname2 + remote_file build delete $execname3 + remote_file build delete $execname4 + + # Compile pieces with the alternate compiler; we'll catch problems + # later. Skip this if we don't have an alternate compiler. + if { $use_alt != 0 } then { + compat-use-alt-compiler + compat-obj "$src2" "$obj2_alt" $alt_options $optstr + compat-obj "$src3" "$obj3_alt" $alt_options $optstr + } + + # Compile pieces with the compiler under test. + compat-use-tst-compiler + compat-obj "$src1" "$obj1" $tst_options $optstr + compat-obj "$src2" "$obj2_tst" $tst_options $optstr + compat-obj "$src3" "$obj3_tst" $tst_options $optstr + + # Link (using the compiler under test), run, and clean up tests. + compat-run "${obj2_tst}-${obj3_tst}" \ + "$obj1 $obj2_tst $obj3_tst" $execname1 $tst_options $optstr + + # If we've got an alternate compiler try some combinations. + if { $use_alt != 0 } then { + compat-run "${obj2_tst}-${obj3_alt}" "$obj1 $obj2_tst $obj3_alt" \ + $execname2 $tst_options $optstr + compat-run "${obj2_alt}-${obj3_tst}" "$obj1 $obj2_alt $obj3_tst" \ + $execname3 $tst_options $optstr + compat-run "${obj2_alt}-${obj3_alt}" "$obj1 $obj2_alt $obj3_alt" \ + $execname4 $tst_options $optstr + } + + # Clean up object files. + set files [glob -nocomplain *.o] + if { $files != "" } { + eval "remote_file build delete $files" + } + } +} diff --git a/libjava/gcj/.cvsignore b/libjava/gcj/.cvsignore new file mode 100644 index 00000000000..7b7bb5ad25f --- /dev/null +++ b/libjava/gcj/.cvsignore @@ -0,0 +1 @@ +stamp-h2.in diff --git a/libjava/include/.cvsignore b/libjava/include/.cvsignore new file mode 100644 index 00000000000..4ce50a28902 --- /dev/null +++ b/libjava/include/.cvsignore @@ -0,0 +1 @@ +stamp-h1.in diff --git a/libjava/java/awt/dnd/Autoscroll.java b/libjava/java/awt/dnd/Autoscroll.java new file mode 100644 index 00000000000..e7d3e28ed32 --- /dev/null +++ b/libjava/java/awt/dnd/Autoscroll.java @@ -0,0 +1,67 @@ +/* Autoscroll.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.awt.Point; +import java.awt.Insets; + +/** + * During DnD operations it is possible that a user may wish to drop the + * subject of the operation on a region of a scrollable GUI control that + * is not currently visible to the user. + * + * @author Michael Koch <konqueror@gmx.de> + * @since 1.2 + * @status updated to 1.4 + */ +public interface Autoscroll +{ + /** + * This method returns the Insets describing the autoscrolling region or + * border relative to the geometry of the implementing Component + */ + public Insets getAutoscrollInsets (); + + /** + * Notify the Component to autoscroll + * + * @param location A Point indicating the location of the cursor that + * triggered this operation + */ + public void autoscroll (Point location); +} // interface Autoscroll diff --git a/libjava/java/awt/dnd/DragSourceDropEvent.java b/libjava/java/awt/dnd/DragSourceDropEvent.java new file mode 100644 index 00000000000..4b70d1bf0b0 --- /dev/null +++ b/libjava/java/awt/dnd/DragSourceDropEvent.java @@ -0,0 +1,84 @@ +/* DragSourceDragEvent.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +/** + * @author Michael Koch <konqueror@gmx.de> + * @since 1.2 + * + * Written using JDK 1.4.1 Online API + * Status: JDK 1.4 complete + */ +public class DragSourceDropEvent extends DragSourceEvent +{ + private final int dropAction; + private final boolean success; + + public DragSourceDropEvent (DragSourceContext context) + { + super (context); + this.dropAction = 0; + this.success = false; + } + + public DragSourceDropEvent (DragSourceContext context, int dropAction, + boolean success) + { + super (context); + this.dropAction = dropAction; + this.success = success; + } + + public DragSourceDropEvent (DragSourceContext context, int dropAction, + boolean success, int x, int y) + { + super (context, x, y); + this.dropAction = dropAction; + this.success = success; + } + + public int getDropAction() + { + return dropAction & ((DragSourceContext) source).getSourceActions(); + } + + public boolean getDropSuccess() + { + return success; + } +} // class DragSourceDropEvent diff --git a/libjava/java/awt/dnd/DropTargetAdapter.java b/libjava/java/awt/dnd/DropTargetAdapter.java new file mode 100644 index 00000000000..4ece882121b --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetAdapter.java @@ -0,0 +1,100 @@ +/* DragSourceAdapter.java -- drag-and-drop listener adapter + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +/** + * This class implements <code>DropTargetListener</code>, and implements all methods + * with empty bodies. This allows a listener interested in implementing only + * a subset of these interfaces to extend this class and override only the + * desired methods. + * + * @author Michael Koch <konqueror@gmx.de> + * @since 1.4 + * @status updated to 1.4 + */ +public abstract class DropTargetAdapter + implements DropTargetListener +{ + /** + * Default constructor. + */ + public DropTargetAdapter() + { + } + + /** + * Called when the cursor hotspot enters a drop site which will accept the + * drag. + * + * @param e the event + */ + public void dragEnter (DropTargetDragEvent e) + { + } + + /** + * Called when the cursor hotspot moves inside of a drop site which will + * accept the drag. + * + * @param e the event + */ + public void dragOver (DropTargetDragEvent e) + { + } + + /** + * Called when the user modifies the drop gesture. This is often the case + * when additional mouse or key events are received during the drag. + * + * @param e the event + */ + public void dropActionChanged (DropTargetDragEvent e) + { + } + + /** + * Called when the cursor hotspot moves outside of a drop site which will + * accept the drag. This could also happen if the drop site is no longer + * active, or no longer accepts the drag. + * + * @param e the event + */ + public void dragExit(DropTargetEvent e) + { + } +} // class DropTargetAdapter diff --git a/libjava/java/awt/dnd/DropTargetContext.java b/libjava/java/awt/dnd/DropTargetContext.java new file mode 100644 index 00000000000..255ab844e8d --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetContext.java @@ -0,0 +1,174 @@ +/* DropTargetContext.java -- + Copyright (C) 2002 Free Software Foundation + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.awt.dnd.peer.DropTargetContextPeer; +import java.io.Serializable; +import java.io.IOException; +import java.awt.Component; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.util.List; + +public class DropTargetContext implements Serializable +{ + protected class TransferableProxy implements Transferable + { + protected boolean isLocal; + protected Transferable transferable; + + public DataFlavor[] getTransferDataFlavors () + { + // FIXME: implement this + return null; + } + + public boolean isDataFlavorSupported (DataFlavor flavor) + { + // FIXME: implement this + return false; + } + + public Object getTransferData (DataFlavor flavor) + throws UnsupportedFlavorException, IOException + { + // FIXME: implement this + return null; + } + } + + private int targetActions; + + public DropTarget getDropTarget () + { + // FIXME: implement this + return null; + } + + public Component getComponent () + { + // FIXME: implement this + return null; + } + + public void addNotify (java.awt.dnd.peer.DropTargetContextPeer dtcp) + { + // FIXME: implement this + } + + public void removeNotify () + { + // FIXME: implement this + } + + protected void setTargetActions (int actions) + { + targetActions = actions; + } + + protected int getTargetActions() + { + return targetActions; + } + + /** + * FIXME + * + * @exception InvalidDnDOperationException FIXME + */ + public void dropComplete (boolean success) + { + // FIXME: implement this + } + + protected void acceptDrag (int dragOperation) + { + // FIXME: implement this + } + + protected void rejectDrag () + { + // FIXME: implement this + } + + protected void acceptDrop (int dropOperation) + { + // FIXME: implement this + } + + protected void rejectDrop () + { + // FIXME: implement this + } + + protected DataFlavor[] getCurrentDataFlavors () + { + // FIXME: implement this + return null; + } + + protected List getCurrentDataFlavorsAsList () + { + // FIXME: implement this + return null; + } + + protected boolean isDataFlavorSupported (DataFlavor flavor) + { + // FIXME: implement this + return false; + } + + /** + * FIXME + * + * @exception InvalidDnDOperationException FIXME + */ + protected Transferable getTransferable() throws InvalidDnDOperationException + { + // FIXME: implement this + return null; + } + + protected Transferable createTransferableProxy(Transferable t, boolean local) + { + // FIXME: implement this + return null; + } +} // class DropTargetContext diff --git a/libjava/java/awt/dnd/DropTargetDragEvent.java b/libjava/java/awt/dnd/DropTargetDragEvent.java new file mode 100644 index 00000000000..a22ddc8e32a --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetDragEvent.java @@ -0,0 +1,107 @@ +/* DropTargetDragEvent.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.util.List; +import java.awt.Point; +import java.awt.datatransfer.DataFlavor; + +public class DropTargetDragEvent extends DropTargetEvent +{ + private final int dropAction; + private final int srcActions; + private final Point location; + + /** + * FIXME + * + * @exception NullPointerException FIXME + */ + public DropTargetDragEvent (DropTargetContext context, Point location, + int dropAction, int srcActions) + { + super (context); + this.dropAction = dropAction; + this.srcActions = srcActions; + this.location = location; + } + + public void acceptDrag (int dragOperation) + { + // FIXME: implement this + } + + public DataFlavor[] getCurrentDataFlavors () + { + // FIXME: implement this + return null; + } + + public List getCurrentDataFlavorsAsList () + { + // FIXME: implement this + return null; + } + + public int getDropAction() + { + return 0; + //return dropAction & ((DropTargetContext) source).getTargetActions(); + } + + public Point getLocation () + { + return location; + } + + public int getSourceActions () + { + return srcActions; + } + + public boolean isDataFlavorSupported (DataFlavor df) + { + // FIXME: implement this + return true; + } + + public void rejectDrag () + { + // FIXME: implement this + } +} // class DropTargetDragEvent diff --git a/libjava/java/awt/dnd/DropTargetDropEvent.java b/libjava/java/awt/dnd/DropTargetDropEvent.java new file mode 100644 index 00000000000..9a14f226302 --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetDropEvent.java @@ -0,0 +1,132 @@ +/* DropTargetDropEvent.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.awt.Point; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.util.List; + +public class DropTargetDropEvent extends DropTargetEvent +{ + private final int dropAction; + private final int srcActions; + private final Point location; + private final boolean isLocal; + + public DropTargetDropEvent (DropTargetContext dtc, Point location, + int dropAction, int srcActions) + { + super (dtc); + this.dropAction = dropAction; + this.srcActions = srcActions; + this.location = location; + this.isLocal = false; + } + + public DropTargetDropEvent (DropTargetContext dtc, Point location, + int dropAction, int srcActions, boolean isLocal) + { + super (dtc); + this.dropAction = dropAction; + this.srcActions = srcActions; + this.location = location; + this.isLocal = isLocal; + } + + public Point getLocation () + { + return location; + } + + public DataFlavor[] getCurrentDataFlavors () + { + // FIXME: implement this + return null; + } + + public List getCurrentDataFlavorsAsList () + { + // FIXME: implement this + return null; + } + + public boolean isDataFlavorSupported (DataFlavor flavor) + { + // FIXME: implement this + return false; + } + + public int getSourceActions () + { + // FIXME: implement this + return 0; + } + + public int getDropAction () + { + // FIXME: implement this + return 0; + } + + public Transferable getTransferable () + { + // FIXME: implement this + return null; + } + + public void acceptDrop (int dropAction) + { + // FIXME: implement this + } + + public void rejectDrop () + { + // FIXME: implement this + } + + public void dropComplete (boolean success) + { + // FIXME: implement this + } + + public boolean isLocalTransfer() + { + return isLocal; + } +} // class DropTargetDropEvent diff --git a/libjava/java/awt/dnd/DropTargetEvent.java b/libjava/java/awt/dnd/DropTargetEvent.java new file mode 100644 index 00000000000..3065c2bc9ec --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetEvent.java @@ -0,0 +1,56 @@ +/* DropTarget.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.util.EventObject; + +public class DropTargetEvent extends EventObject +{ + protected DropTargetContext context; + + public DropTargetEvent (DropTargetContext context) + { + super (context); + this.context = context; + } + + public DropTargetContext getDropTargetContext () + { + return context; + } +} diff --git a/libjava/java/awt/dnd/DropTargetListener.java b/libjava/java/awt/dnd/DropTargetListener.java new file mode 100644 index 00000000000..861aa89140e --- /dev/null +++ b/libjava/java/awt/dnd/DropTargetListener.java @@ -0,0 +1,89 @@ +/* DropTargetListener.java -- listen to events during the drop + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package java.awt.dnd; + +import java.util.EventListener; + +/** + * @author Michael Koch <konqueror@gmx.de> + * @since 1.2 + * @status updated to 1.4 + */ +public interface DropTargetListener extends EventListener +{ + /** + * Called when the cursor hotspot enters a drop site which will accept the + * drag. + * + * @param e the drag source drag event + */ + void dragEnter (DropTargetDragEvent e); + + /** + * Called when the cursor hotspot moves inside of a drop site which will + * accept the drag. + * + * @param e the drag source drag event + */ + void dragOver (DropTargetDragEvent e); + + /** + * Called when the user modifies the drop gesture. This is often the case + * when additional mouse or key events are received during the drag. + * + * @param e the drag source drag event + */ + void dropActionChanged (DropTargetDragEvent e); + + /** + * Called when the cursor hotspot moves outside of a drop site which will + * accept the drag. This could also happen if the drop site is no longer + * active, or no longer accepts the drag. + * + * @param e the drag source drag event + */ + void dragExit (DropTargetEvent e); + + /** + * FIXME + * + * @param e the drag source drag event + */ + void drop (DropTargetDropEvent e); +} // interface DropTargetListener diff --git a/libjava/java/awt/dnd/MouseDragGestureRecognizer.java b/libjava/java/awt/dnd/MouseDragGestureRecognizer.java new file mode 100644 index 00000000000..1ef2e6cb483 --- /dev/null +++ b/libjava/java/awt/dnd/MouseDragGestureRecognizer.java @@ -0,0 +1,118 @@ +/* MouseDragGestureRecognizer.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd; + +import java.awt.Component; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +/** + * @author Michael Koch <konqueror@gmx.de> + */ + +public abstract class MouseDragGestureRecognizer + extends DragGestureRecognizer + implements MouseListener, MouseMotionListener +{ + protected MouseDragGestureRecognizer (DragSource ds, Component c, int act, + DragGestureListener dgl) + { + super (ds, c, act, dgl); + } + + protected MouseDragGestureRecognizer (DragSource ds, Component c, int act) + { + super (ds, c, act); + } + + protected MouseDragGestureRecognizer (DragSource ds, Component c) + { + super (ds, c); + } + + protected MouseDragGestureRecognizer (DragSource ds) + { + super (ds); + } + + protected void registerListeners () + { + // FIXME: implement this + } + + protected void unregisterListeners () + { + // FIXME: implement this + } + + public void mouseClicked (MouseEvent e) + { + // FIXME: implement this + } + + public void mousePressed (MouseEvent e) + { + // FIXME: implement this + } + + public void mouseReleased (MouseEvent e) + { + // FIXME: implement this + } + + public void mouseEntered (MouseEvent e) + { + // FIXME: implement this + } + + public void mouseExited (MouseEvent e) + { + // FIXME: implement this + } + + public void mouseDragged (MouseEvent e) + { + // FIXME: implement this + } + + public void mouseMoved (MouseEvent e) + { + // FIXME: implement this + } +} // class MouseDragGestureRecognizer diff --git a/libjava/java/awt/dnd/peer/DropTargetContextPeer.java b/libjava/java/awt/dnd/peer/DropTargetContextPeer.java new file mode 100644 index 00000000000..ad166d98002 --- /dev/null +++ b/libjava/java/awt/dnd/peer/DropTargetContextPeer.java @@ -0,0 +1,45 @@ +/* DropTargetContextPeer.java -- interface for drag-and-drop peers + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.awt.dnd.peer; + +/** + * @author Michael Koch <konqueror@gmx.de> + */ +public interface DropTargetContextPeer +{ +} // interface DropTargetContextPeer diff --git a/libjava/java/net/Inet4Address.java b/libjava/java/net/Inet4Address.java new file mode 100644 index 00000000000..c635c671d0e --- /dev/null +++ b/libjava/java/net/Inet4Address.java @@ -0,0 +1,275 @@ +/* Inet4Address.java + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.net; + +import java.io.IOException; +import java.io.ObjectStreamException; + +/** + * @author Michael Koch + * @date August 3, 2002. + */ + +/* + * Written using on-line Java Platform 1.4 API Specification and + * RFC 1884 (http://www.ietf.org/rfc/rfc1884.txt), + * RFC 1918 (http://www.ietf.org/rfc/rfc1918.txt), + * RFC 2365 (http://www.ietf.org/rfc/rfc2365.txt) + * Status: Believed complete and correct. + */ + +public final class Inet4Address extends InetAddress +{ + static final long serialVersionUID = 7615067291688066509L; + + /** + * needed for serialization + */ + private Object writeReplace () throws ObjectStreamException + { + return new InetAddress (addr, hostName); + } + + /** + * Creates a Inet4Address + * + * @param addr The IP address + * @param host The Hostname + */ + protected Inet4Address(byte[] addr, String host) + { + super (addr, host); + } + + /** + * Checks if the address is a multicast address + * + * @since 1.1 + */ + public boolean isMulticastAddress () + { + return (addr [0] & 0xF0) == 0xE0; + } + + /** + * Checks if this address is a loopback address + */ + public boolean isLoopbackAddress () + { + return addr [0] == 0x7F; + } + + /** + * Checks if this address is a wildcard address + * + * @since 1.4 + */ + public boolean isAnyLocalAddress () + { + byte[] anylocal = { 0, 0, 0, 0 }; + + return addr == anylocal; + } + + /** + * Checks if this address is a link local address + * + * @since 1.4 + */ + public boolean isLinkLocalAddress () + { + // XXX: This seems to not exist with IPv4 addresses + return false; + } + + /** + * Checks if this address is a site local address + * + * @since 1.4 + */ + public boolean isSiteLocalAddress () + { + // 10.0.0.0/8 + if (addr [0] == 0x0A) + return true; + + // XXX: Suns JDK 1.4.1 (on Linux) seems to have a bug here: + // it says 172.16.0.0 - 172.255.255.255 are site local addresses + // + // 172.16.0.0/12 + if (addr [0] == 0xAC && (addr [1] & 0xF0) == 0x01) + return true; + + // 192.168.0.0/16 + if (addr [0] == 0xC0 && addr [1] == 0xA8) + return true; + + // XXX: Do we need to check more addresses here ? + return false; + } + + /** + * Checks if this multicast address has global scope + * + * @since 1.4 + */ + public boolean isMCGlobal () + { + // XXX: This seems to net exist with IPv4 addresses + return false; + } + + /** + * Checks if this multicast address has node scope + * + * @since 1.4 + */ + public boolean isMCNodeLocal () + { + // XXX: This seems to net exist with IPv4 addresses + return false; + } + + /** + * Checks if this multicast address has link scope + * + * @since 1.4 + */ + public boolean isMCLinkLocal () + { + if (!isMulticastAddress ()) + return false; + + return (addr [0] == 0xE0) + && (addr [1] == 0x00) + && (addr [2] == 0x00); + } + + /** + * Checks if this multicast address has site scope + * + * @since 1.4 + */ + public boolean isMCSiteLocal () + { + // XXX: This seems to net exist with IPv4 addresses + return false; + } + + /** + * Checks if this multicast address has organization scope + * + * @since 1.4 + */ + public boolean isMCOrgLocal () + { + // XXX: This seems to net exist with IPv4 addresses + return false; + } + + /** + * Returns the address of the current instance + */ + public byte[] getAddress () + { + return addr; + } + + /** + * Returns the address as string + * + * @since 1.0.2 + */ + public String getHostAddress () + { + StringBuffer sbuf = new StringBuffer (40); + int len = addr.length; + int i = 0; + + for ( ; ; ) + { + sbuf.append (addr [i] & 0xFF); + i++; + + if (i == len) + break; + + sbuf.append ('.'); + } + + return sbuf.toString (); + } + + /** + * Computes the hashcode of the instance + */ + public int hashCode () + { + int hash = 0; + int len = addr.length; + int i = len > 4 ? len - 4 : 0; + + for ( ; i < len; i++) + hash = (hash << 8) | (addr [i] & 0xFF); + + return hash; + } + + /** + * Compare the current Inet4Address instance with obj + * + * @param obj Object to compare with + */ + public boolean equals (Object obj) + { + if (obj == null || ! (obj instanceof InetAddress)) + return false; + + byte[] addr1 = addr; + byte[] addr2 = ((InetAddress) obj).addr; + + if (addr1.length != addr2.length) + return false; + + for (int i = addr1.length; --i >= 0; ) + if (addr1 [i] != addr2 [i]) + return false; + + return true; + } +} // class Inet4Address diff --git a/libjava/java/net/Inet6Address.java b/libjava/java/net/Inet6Address.java new file mode 100644 index 00000000000..de496b148ee --- /dev/null +++ b/libjava/java/net/Inet6Address.java @@ -0,0 +1,272 @@ +/* Inet6Address.java + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.net; + +import java.io.IOException; + +/** + * @author Michael Koch + * @date August 3, 2002. + */ + +/* + * Written using on-line Java Platform 1.4 API Specification and + * RFC 1884 (http://www.ietf.org/rfc/rfc1884.txt) + * Status: Believed complete and correct. + */ + +public final class Inet6Address extends InetAddress +{ + static final long serialVersionUID = 6880410070516793377L; + + /** + * Needed for serialization + */ + byte[] ipaddress; + + /** + * Create an Inet6Address object + * + * @param addr The IP address + * @param host The hostname + */ + protected Inet6Address (byte[] addr, String host) + { + super (null, host); + this.ipaddress = addr; + } + + /** + * Utility routine to check if the InetAddress is an IP multicast address + * + * @since 1.1 + */ + public boolean isMulticastAddress () + { + return ipaddress [0] == 0xFF; + } + + /** + * Utility routine to check if the InetAddress in a wildcard address + * + * @since 1.4 + */ + public boolean isAnyLocalAddress () + { + byte[] anylocal = { 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }; + + return ipaddress == anylocal; + } + + /** + * Utility routine to check if the InetAddress is a loopback address + * + * @since 1.4 + */ + public boolean isLoopbackAddress () + { + byte[] loopback = { 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1 }; + + return ipaddress == loopback; + } + + /** + * Utility routine to check if the InetAddress is an link local address + * + * @since 1.4 + */ + public boolean isLinkLocalAddress () + { + return ipaddress [0] == 0xFA; + } + + /** + * Utility routine to check if the InetAddress is a site local address + * + * @since 1.4 + */ + public boolean isSiteLocalAddress () + { + return ipaddress [0] == 0xFB; + } + + /** + * Utility routine to check if the multicast address has global scope + * + * @since 1.4 + */ + public boolean isMCGlobal () + { + if (!isMulticastAddress ()) + return false; + + return (ipaddress [1] & 0x0F) == 0xE; + } + + /** + * Utility routine to check if the multicast address has node scope + * + * @since 1.4 + */ + public boolean isMCNodeLocal () + { + if (!isMulticastAddress ()) + return false; + + return (ipaddress [1] & 0x0F) == 0x1; + } + + /** + * Utility routine to check if the multicast address has link scope + * + * @since 1.4 + */ + public boolean isMCLinkLocal () + { + if (!isMulticastAddress ()) + return false; + + return (ipaddress [1] & 0x0F) == 0x2; + } + + /** + * Utility routine to check if the multicast address has site scope + * + * @since 1.4 + */ + public boolean isMCSiteLocal () + { + if (!isMulticastAddress ()) + return false; + + return (ipaddress [1] & 0x0F) == 0x5; + } + + /** + * Utility routine to check if the multicast address has organization scope + * + * @since 1.4 + */ + public boolean isMCOrgLocal () + { + if (!isMulticastAddress ()) + return false; + + return (ipaddress [1] & 0x0F) == 0x8; + } + + /** + * Returns the raw IP address of this InetAddress object. The result is in + * network byte order: the highest order byte of the address is i + * n getAddress()[0] + */ + public byte[] getAddress () + { + return ipaddress; + } + + /** + * Returns the IP address string in textual presentation + */ + public String getHostAddress () + { + StringBuffer sbuf = new StringBuffer (40); + + for (int i = 0; i < 16; i += 2) + { + int x = ((ipaddress [i] & 0xFF) << 8) | (ipaddress [i + 1] & 0xFF); + boolean empty = sbuf.length () == 0; + + if (empty) + { + if (i > 0) + sbuf.append ("::"); + } + else + sbuf.append (':'); + + if (x != 0 || i >= 14) + sbuf.append (Integer.toHexString (x)); + } + + return sbuf.toString (); + } + + /** + * Returns a hashcode for this IP address + */ + public int hashCode () + { + return super.hashCode (); + } + + /** + * Compares this object against the specified object + */ + public boolean equals (Object obj) + { + if (obj == null || ! (obj instanceof Inet6Address)) + return false; + + Inet6Address tmp = (Inet6Address) obj; + + return super.equals (tmp) + && this.ipaddress == tmp.ipaddress; + } + + /** + * Utility routine to check if the InetAddress is an + * IPv4 compatible IPv6 address + * + * @since 1.4 + */ + public boolean isIPv4CompatibleAddress () + { + if (ipaddress [0] != 0x00 || ipaddress [1] != 0x00 || + ipaddress [2] != 0x00 || ipaddress [3] != 0x00 || + ipaddress [4] != 0x00 || ipaddress [5] != 0x00 || + ipaddress [6] != 0x00 || ipaddress [7] != 0x00 || + ipaddress [8] != 0x00 || ipaddress [9] != 0x00 || + ipaddress [10] != 0x00 || ipaddress [11] != 0x00) + return false; + + return true; + } +} diff --git a/libjava/java/net/URI.java b/libjava/java/net/URI.java new file mode 100644 index 00000000000..e84ac5d0cd6 --- /dev/null +++ b/libjava/java/net/URI.java @@ -0,0 +1,433 @@ +/* URI.java - An URI class + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.net; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +/** + * @author Michael Koch <konqueror@gmx.de> + * @since 1.4 + */ +public final class URI + implements Comparable, Serializable +{ + static final long serialVersionUID = -6052424284110960213L; + + String string; + private String scheme; + private String schemeSpecificPart; + private String authority; + private String userInfo; + private String host; + private int port; + private String path; + private String query; + private String fragment; + + private void readObject (ObjectInputStream is) + throws ClassNotFoundException, IOException + { + } + + private void writeObject (ObjectOutputStream is) + throws IOException + { + } + + private void parseURI (String str) + throws URISyntaxException + { + } + + /** + * Creates an URI from the given string + * + * @param str The string to create the URI from + * + * @exception URISyntaxException If the given string violates RFC 2396 + * @exception NullPointerException If str is null + */ + public URI (String str) + throws URISyntaxException + { + } + + /** + * Create an URI from the given components + * + * @param scheme The scheme name + * @param userInfo The username and authorization info + * @param host The hostname + * @param port The port number + * @param path The path + * @param query The query + * @param fragment The fragment + * + * @exception URISyntaxException If the given string violates RFC 2396 + */ + public URI (String scheme, String userInfo, String host, int port, + String path, String query, String fragment) + throws URISyntaxException + { + } + + /** + * Create an URI from the given components + * + * @param scheme The scheme name + * @param authority The authority + * @param path The apth + * @param query The query + * @param fragment The fragmen + * + * @exception URISyntaxException If the given string violates RFC 2396 + */ + public URI (String scheme, String authority, String path, String query, + String fragment) + throws URISyntaxException + { + } + + /** + * Create an URI from the given components + * + * @param scheme The scheme name + * @param host The hostname + * @param path The path + * @param fragment The fragment + * + * @exception URISyntaxException If the given string violates RFC 2396 + */ + public URI (String scheme, String host, String path, String fragment) + throws URISyntaxException + { + } + + /** + * Create an URI from the given components + * + * @param scheme The scheme name + * @param ssp The scheme specific part + * @param fragment The fragment + * + * @exception URISyntaxException If the given string violates RFC 2396 + */ + public URI (String scheme, String ssp, String fragment) + throws URISyntaxException + { + } + + /** + * Create an URI from the given string + * + * @param str The string to create the URI from + * + * @exception IllegalArgumentException If the given string violates RFC 2396 + * @exception NullPointerException If str is null + */ + public static URI create (String str) + throws IllegalArgumentException, URISyntaxException + { + return null; + } + + /** + * Attempts to parse this URI's authority component, if defined, + * into user-information, host, and port components + * + * @exception URISyntaxException If the given string violates RFC 2396 + */ + public URI parseServerAuthority () + throws URISyntaxException + { + return null; + } + + /** + * Returns a normalizes versions of the URI + */ + public URI normalize () + { + return null; + } + + /** + * Resolves the given URI against this URI + * + * @param uri The URI to resolve against this URI + * + * @return The resulting URI + * + * @exception NullPointerException If uri is null + */ + public URI resolve (URI uri) + { + return null; + } + + /** + * Resolves the given URI string against this URI + * + * @param str The URI as string to resolve against this URI + * + * @return The resulting URI + * + * @exception IllegalArgumentException If the given URI string + * violates RFC 2396 + * @exception NullPointerException If uri is null + */ + public URI resolve (String str) + throws IllegalArgumentException + { + return null; + } + + /** + * Relativizes the given URI against this URI + * + * @param uri The URI to relativize this URI + * + * @return The resulting URI + * + * @exception NullPointerException If uri is null + */ + public URI relativize (URI uri) + { + return null; + } + + /** + * Creates an URL from an URI + * + * @exception MalformedURLException If a protocol handler for the URL could + * not be found, or if some other error occurred while constructing the URL + * @exception IllegalArgumentException If the URI is not absolute + */ + public URL toURL () + throws IllegalArgumentException, MalformedURLException + { + return null; + } + + /** + * Returns the scheme of the URI + */ + public String getScheme () + { + return scheme; + } + + /** + * Tells whether this URI is absolute or not + */ + public boolean isAbsolute () + { + return false; + } + + /** + * Tell whether this URI is opaque or not + */ + public boolean isOpaque () + { + return false; + } + + /** + * Returns the raw scheme specific part of this URI. + * The scheme-specific part is never undefined, though it may be empty + */ + public String getRawSchemeSpecificPart () + { + return null; + } + + /** + * Returns the decoded scheme specific part of this URI. + */ + public String getSchemeSpecificPart () + { + return null; + } + + /** + * Returns the rae authority part of this URI + */ + public String getRawAuthority () + { + return authority; + } + + /** + * Returns the decoded authority part of this URI + */ + public String getAuthority () + { + return null; + } + + /** + * Returns the raw user info part of this URI + */ + public String getRawUserInfo () + { + return userInfo; + } + + /** + * Returns the decoded user info part of this URI + */ + public String getUserInfo () + { + return null; + } + + /** + * Returns the hostname of the URI + */ + public String getHost () + { + return host; + } + + /** + * Returns the port number of the URI + */ + public int getPort () + { + return port; + } + + /** + * Returns the raw path part of this URI + */ + public String getRawPath () + { + return path; + } + + /** + * Returns the path of the URI + */ + public String getPath () + { + return null; + } + + /** + * Returns the raw query part of this URI + */ + public String getRawQuery () + { + return query; + } + + /** + * Returns the query of the URI + */ + public String getQuery () + { + return null; + } + + /** + * Return the raw fragment part of this URI + */ + public String getRawFragment () + { + return fragment; + } + + /** + * Returns the fragment of the URI + */ + public String getFragment () + { + return null; + } + + /** + * Compares the URI with a given object + * + * @param obj The obj to compare the URI with + */ + public boolean equals(Object obj) + { + return false; + } + + /** + * Computes the hascode of the URI + */ + public int hashCode () + { + return 0; + } + + /** + * Compare the URI with another object that must be an URI too + * + * @param obj This object to compare this URI with + * + * @exception ClassCastException If given object ist not an URI + */ + public int compareTo (Object obj) + throws ClassCastException + { + return 0; + } + + /** + * Returns the URI as string + */ + public String toString () + { + return ""; + } + + /** + * Returns the URI as US-ASCII string + */ + public String toASCIIString () + { + return ""; + } +} diff --git a/libjava/java/nio/Buffer.java b/libjava/java/nio/Buffer.java new file mode 100644 index 00000000000..4e18cbda144 --- /dev/null +++ b/libjava/java/nio/Buffer.java @@ -0,0 +1,42 @@ +/* Buffer.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio; + +public abstract class Buffer +{ +} diff --git a/libjava/java/nio/ByteBuffer.java b/libjava/java/nio/ByteBuffer.java new file mode 100644 index 00000000000..4b02f7fcafc --- /dev/null +++ b/libjava/java/nio/ByteBuffer.java @@ -0,0 +1,42 @@ +/* ByteBuffer.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio; + +public abstract class ByteBuffer extends Buffer +{ +} diff --git a/libjava/java/nio/MappedByteBuffer.java b/libjava/java/nio/MappedByteBuffer.java new file mode 100644 index 00000000000..dc1b20d892c --- /dev/null +++ b/libjava/java/nio/MappedByteBuffer.java @@ -0,0 +1,42 @@ +/* MappedByteBuffer.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio; + +public abstract class MappedByteBuffer extends ByteBuffer +{ +} diff --git a/libjava/java/nio/channels/AlreadyConnectedException.java b/libjava/java/nio/channels/AlreadyConnectedException.java new file mode 100644 index 00000000000..29e3cda0efa --- /dev/null +++ b/libjava/java/nio/channels/AlreadyConnectedException.java @@ -0,0 +1,50 @@ +/* AlreadyConnectedException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; + +public class AlreadyConnectedException extends IOException +{ + /** + * Creates the exception + */ + public AlreadyConnectedException() + { + } +} diff --git a/libjava/java/nio/channels/ByteChannel.java b/libjava/java/nio/channels/ByteChannel.java new file mode 100644 index 00000000000..f4958be2bf7 --- /dev/null +++ b/libjava/java/nio/channels/ByteChannel.java @@ -0,0 +1,43 @@ +/* ByteChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +public interface ByteChannel + extends ReadableByteChannel, WritableByteChannel +{ +} diff --git a/libjava/java/nio/channels/Channel.java b/libjava/java/nio/channels/Channel.java new file mode 100644 index 00000000000..b5272c36776 --- /dev/null +++ b/libjava/java/nio/channels/Channel.java @@ -0,0 +1,55 @@ +/* Channel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; + +public interface Channel +{ + /** + * Tells whether this channel is open or not + */ + public boolean isOpen(); + + /** + * Closes this channel + * + * @exception IOException If an error occurs + */ + public void close() throws IOException; +} diff --git a/libjava/java/nio/channels/ClosedChannelException.java b/libjava/java/nio/channels/ClosedChannelException.java new file mode 100644 index 00000000000..2576d34c3c8 --- /dev/null +++ b/libjava/java/nio/channels/ClosedChannelException.java @@ -0,0 +1,50 @@ +/* ClosedChannelException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; + +public class ClosedChannelException extends IOException +{ + /** + * Creates the exception + */ + public ClosedChannelException() + { + } +} diff --git a/libjava/java/nio/channels/GatheringByteChannel.java b/libjava/java/nio/channels/GatheringByteChannel.java new file mode 100644 index 00000000000..3ef12b7b6dc --- /dev/null +++ b/libjava/java/nio/channels/GatheringByteChannel.java @@ -0,0 +1,79 @@ +/* GatheringByteChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.nio.ByteBuffer; +import java.io.IOException; + +public interface GatheringByteChannel + extends WritableByteChannel +{ + /** + * Writes a sequence of bytes to this channel from a subsequence of + * the given buffers + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the write operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the write operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IndexOutOfBoundsException If the preconditions on the offset + * and length parameters do not hold + * @exception IOException If an error occurs + * @exception NonWritableChannelException If this channel was not opened for + * writing + */ + public long write(ByteBuffer[] srcs, int offset, int length) + throws IOException; + + /** + * Writes a sequence of bytes to this channel from the given buffers + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the write operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the write operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IOException If an error occurs + * @exception NonWritableChannelException If this channel was not opened for + * writing + */ + public long write(ByteBuffer[] srcs) throws IOException; +} diff --git a/libjava/java/nio/channels/InterruptibleChannel.java b/libjava/java/nio/channels/InterruptibleChannel.java new file mode 100644 index 00000000000..0b55e7619a5 --- /dev/null +++ b/libjava/java/nio/channels/InterruptibleChannel.java @@ -0,0 +1,50 @@ +/* InterruptibleChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; + +public interface InterruptibleChannel extends Channel +{ + /** + * Closes this channel + * + * @exception IOException If an error occurs + */ + void close() throws IOException; +} diff --git a/libjava/java/nio/channels/ReadableByteChannel.java b/libjava/java/nio/channels/ReadableByteChannel.java new file mode 100644 index 00000000000..d1653cc8d3e --- /dev/null +++ b/libjava/java/nio/channels/ReadableByteChannel.java @@ -0,0 +1,59 @@ +/* ReadableByteChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; +import java.nio.ByteBuffer; + +public interface ReadableByteChannel extends Channel +{ + /** + * Reads a sequence of bytes from this channel into the given buffer + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the read operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the read operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IOException If an error occurs + * @exception NonReadableChannelException If this channel was not opened for + * reading + */ + public int read (ByteBuffer dst) throws IOException; +} diff --git a/libjava/java/nio/channels/ScatteringByteChannel.java b/libjava/java/nio/channels/ScatteringByteChannel.java new file mode 100644 index 00000000000..a9efdbef448 --- /dev/null +++ b/libjava/java/nio/channels/ScatteringByteChannel.java @@ -0,0 +1,79 @@ +/* ScatteringByteChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.nio.ByteBuffer; +import java.io.IOException; + +public interface ScatteringByteChannel + extends ReadableByteChannel +{ + /** + * Reads a sequence of bytes from this channel into a subsequence of the + * given buffers + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the write operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the write operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IndexOutOfBoundsException If the preconditions on the offset + * and length parameters do not hold + * @exception IOException If an error occurs + * @exception NonReadableChannelException If this channel was not opened for + * reading + */ + public long read(ByteBuffer[] srcs, int offset, int length) + throws IOException; + + /** + * Reads a sequence of bytes from this channel into the given buffers + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the write operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the write operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IOException If an error occurs + * @exception NonReadableChannelException If this channel was not opened for + * reading + */ + public long read(ByteBuffer[] srcs) throws IOException; +} diff --git a/libjava/java/nio/channels/WritableByteChannel.java b/libjava/java/nio/channels/WritableByteChannel.java new file mode 100644 index 00000000000..003437e5f3c --- /dev/null +++ b/libjava/java/nio/channels/WritableByteChannel.java @@ -0,0 +1,60 @@ +/* WritableByteChannel.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.channels; + +import java.io.IOException; +import java.nio.ByteBuffer; + +public interface WritableByteChannel + extends Channel +{ + /** + * Writes a sequence of bytes to this channel from the given buffer + * + * @exception AsynchronousCloseException If another thread closes this + * channel while the write operation is in progress + * @exception ClosedByInterruptException If another thread interrupts the + * current thread while the write operation is in progress, thereby closing + * the channel and setting the current thread's interrupt status + * @exception ClosedChannelException If this channel is closed + * @exception IOException If an error occurs + * @exception NonWritableChannelException If this channel was not opened for + * writing + */ + public int write(ByteBuffer src) throws IOException; +} diff --git a/libjava/java/nio/charset/CharacterCodingException.java b/libjava/java/nio/charset/CharacterCodingException.java new file mode 100644 index 00000000000..2fba33e9509 --- /dev/null +++ b/libjava/java/nio/charset/CharacterCodingException.java @@ -0,0 +1,50 @@ +/* CharacterCodingException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset; + +import java.io.IOException; + +class CharacterCodingException extends IOException +{ + /** + * Creates the exception + */ + public CharacterCodingException() + { + } +} diff --git a/libjava/java/nio/charset/IllegalCharsetNameException.java b/libjava/java/nio/charset/IllegalCharsetNameException.java new file mode 100644 index 00000000000..a3e0593327b --- /dev/null +++ b/libjava/java/nio/charset/IllegalCharsetNameException.java @@ -0,0 +1,60 @@ +/* IllegalCharsetNameException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset; + +class IllegalCharsetNameException extends IllegalArgumentException +{ + private String charsetName; + + /** + * Creates the exception + */ + public IllegalCharsetNameException (String charsetName) + { + super (); + this.charsetName = charsetName; + } + + /** + * Retrieves the illegal charset name + */ + public String getCharsetName () + { + return charsetName; + } +} diff --git a/libjava/java/nio/charset/MalformedInputException.java b/libjava/java/nio/charset/MalformedInputException.java new file mode 100644 index 00000000000..2111b797865 --- /dev/null +++ b/libjava/java/nio/charset/MalformedInputException.java @@ -0,0 +1,69 @@ +/* MalformedInputException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset; + +class MalformedInputException extends CharacterCodingException +{ + private int inputLength; + + /** + * Creates the exception + */ + public MalformedInputException (int inputLength) + { + super (); + this.inputLength = inputLength; + } + + /** + * Retrieves the illegal charset name + */ + public int getInputLength () + { + return inputLength; + } + + /** + * Returns the detail message string of this throwable + */ + public String getMessage () + { + // FIXME: I think this is not correct + return ""; + } +} diff --git a/libjava/java/nio/charset/UnmappableCharacterException.java b/libjava/java/nio/charset/UnmappableCharacterException.java new file mode 100644 index 00000000000..f1714b8ec41 --- /dev/null +++ b/libjava/java/nio/charset/UnmappableCharacterException.java @@ -0,0 +1,69 @@ +/* UnmappableCharacterException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset; + +class UnmappableCharacterException extends CharacterCodingException +{ + private int inputLength; + + /** + * Creates the exception + */ + public UnmappableCharacterException (int inputLength) + { + super (); + this.inputLength = inputLength; + } + + /** + * Retrieves the illegal charset name + */ + public int getInputLength () + { + return inputLength; + } + + /** + * Returns the detail message string of this throwable + */ + public String getMessage () + { + // FIXME: I think this is not correct + return ""; + } +} diff --git a/libjava/java/nio/charset/UnsupportedCharsetException.java b/libjava/java/nio/charset/UnsupportedCharsetException.java new file mode 100644 index 00000000000..943164a6837 --- /dev/null +++ b/libjava/java/nio/charset/UnsupportedCharsetException.java @@ -0,0 +1,60 @@ +/* UnsupportedCharsetException.java -- + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset; + +class UnsupportedCharsetException extends IllegalArgumentException +{ + private String charsetName; + + /** + * Creates the exception + */ + public UnsupportedCharsetException (String charsetName) + { + super (); + this.charsetName = charsetName; + } + + /** + * Retrieves the illegal charset name + */ + public String getCharsetName () + { + return charsetName; + } +} diff --git a/libjava/java/nio/charset/spi/CharsetProvider.java b/libjava/java/nio/charset/spi/CharsetProvider.java new file mode 100644 index 00000000000..2eddf6161ea --- /dev/null +++ b/libjava/java/nio/charset/spi/CharsetProvider.java @@ -0,0 +1,88 @@ +/* CharsetProvider.java -- charset service provider interface + Copyright (C) 2002 Free Software Foundation + +This file is part of GNU Classpath. + +GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package java.nio.charset.spi; + +//import java.nio.charset.Charset; +import java.util.Iterator; + +/** + * This class allows an implementor to provide additional character sets. The + * subclass must have a nullary constructor, and be attached to charset + * implementation classes. These extensions are loaded via the context class + * loader. To provide the charset extension, all files named + * <code>META-INF/services/java.nio.charset.spi.CharsetProvider</code> are + * read from the classpath. Each one should be a UTF-8 encoded list of + * fully-qualified names of concrete subclasses of this class; whitespace is + * ignored, and '#' starts comments. Duplicates are ignored. The + * implementations must be accessible to the classloader that requests them. + * + * @author Eric Blake <ebb9@email.byu.edu> + * @see Charset + * @since 1.4 + * @status updated to 1.4 + */ +public abstract class CharsetProvider +{ + /** + * Initialize a new charset provider. This performs a security check on + * RuntimePermission("charsetProvider"). + * + * @throws SecurityException if building a new set is not allowed + */ + protected CharsetProvider() + { + SecurityManager s = System.getSecurityManager(); + if (s != null) + s.checkPermission(new RuntimePermission("charsetProvider")); + } + + /** + * Returns an iterator over the charsets defined by this provider. + * + * @return the iterator + * @see Charset#availableCharsets() + */ + public abstract Iterator charsets(); + + /** + * Returns the named charset, by canonical name or alias. + * + * @return the charset, or null if not supported + */ + //public abstract Charset charsetForName(String name); +} // class CharsetProvider diff --git a/libjava/sysdep/s390/locks.h b/libjava/sysdep/s390/locks.h new file mode 100644 index 00000000000..b0f3185254f --- /dev/null +++ b/libjava/sysdep/s390/locks.h @@ -0,0 +1,77 @@ +// locks.h - Thread synchronization primitives. S/390 implementation. + +/* Copyright (C) 2002 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#ifndef __SYSDEP_LOCKS_H__ +#define __SYSDEP_LOCKS_H__ + +typedef size_t obj_addr_t; /* Integer type big enough for object */ + /* address. */ + +// Atomically replace *addr by new_val if it was initially equal to old. +// Return true if the comparison succeeded. +// Assumed to have acquire semantics, i.e. later memory operations +// cannot execute before the compare_and_swap finishes. +inline static bool +compare_and_swap(volatile obj_addr_t *addr, + obj_addr_t old, obj_addr_t new_val) +{ + int result; + + __asm__ __volatile__ ( +#ifndef __s390x__ + " cs %1,%2,0(%3)\n" +#else + " csg %1,%2,0(%3)\n" +#endif + " ipm %0\n" + " srl %0,28\n" + : "=&d" (result), "+d" (old) + : "d" (new_val), "a" (addr) + : "cc", "memory"); + + return result == 0; +} + +// Set *addr to new_val with release semantics, i.e. making sure +// that prior loads and stores complete before this +// assignment. +inline static void +release_set(volatile obj_addr_t *addr, obj_addr_t new_val) +{ + __asm__ __volatile__("bcr 15,0" : : : "memory"); + *(addr) = new_val; +} + +// Compare_and_swap with release semantics instead of acquire semantics. +// On many architecture, the operation makes both guarantees, so the +// implementation can be the same. +inline static bool +compare_and_swap_release(volatile obj_addr_t *addr, + obj_addr_t old, obj_addr_t new_val) +{ + return compare_and_swap(addr, old, new_val); +} + +// Ensure that subsequent instructions do not execute on stale +// data that was loaded from memory before the barrier. +inline static void +read_barrier() +{ + __asm__ __volatile__("bcr 15,0" : : : "memory"); +} + +// Ensure that prior stores to memory are completed with respect to other +// processors. +inline static void +write_barrier() +{ + __asm__ __volatile__("bcr 15,0" : : : "memory"); +} +#endif diff --git a/libjava/testsuite/libjava.lang/EvaluationOrder.java b/libjava/testsuite/libjava.lang/EvaluationOrder.java new file mode 100644 index 00000000000..7c09bbb9cb9 --- /dev/null +++ b/libjava/testsuite/libjava.lang/EvaluationOrder.java @@ -0,0 +1,22 @@ +public class EvaluationOrder + { + private static int first (int x, int y) + { + return x; + } + + public static void main (String[] args) + { + int l = args.length; + + /* This should print: + 0 + 0 + 1 + */ + System.out.println (l); + System.out.println (first (l, ++l)); + System.out.println (l); + } + } + diff --git a/libjava/testsuite/libjava.lang/EvaluationOrder.out b/libjava/testsuite/libjava.lang/EvaluationOrder.out new file mode 100644 index 00000000000..bb5ee5c21eb --- /dev/null +++ b/libjava/testsuite/libjava.lang/EvaluationOrder.out @@ -0,0 +1,3 @@ +0 +0 +1 diff --git a/libjava/testsuite/libjava.lang/StaticConstructor.java b/libjava/testsuite/libjava.lang/StaticConstructor.java new file mode 100644 index 00000000000..54c0f5376df --- /dev/null +++ b/libjava/testsuite/libjava.lang/StaticConstructor.java @@ -0,0 +1,29 @@ +// Test to make sure static initializers are called + +class bar +{ + public static int zog; + public static int zag; + + static + { + zog = 12; + zag = 2; + } + + public bar() { } +} + +public class StaticConstructor +{ + static int foo () + { + return new bar().zog; + } + + public static void main(String args[]) + { + System.out.println ("" + (foo() + bar.zag)); + } +} + diff --git a/libjava/testsuite/libjava.lang/StaticConstructor.out b/libjava/testsuite/libjava.lang/StaticConstructor.out new file mode 100644 index 00000000000..8351c19397f --- /dev/null +++ b/libjava/testsuite/libjava.lang/StaticConstructor.out @@ -0,0 +1 @@ +14 diff --git a/libstdc++-v3/config/abi/i386-unknown-freebsd4/baseline_symbols.txt b/libstdc++-v3/config/abi/i386-unknown-freebsd4/baseline_symbols.txt new file mode 100644 index 00000000000..c5b8fa0a739 --- /dev/null +++ b/libstdc++-v3/config/abi/i386-unknown-freebsd4/baseline_symbols.txt @@ -0,0 +1,2008 @@ +FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.2 +FUNC:_ZNKSaIcE7addressERKc@@GLIBCPP_3.2 +FUNC:_ZNKSaIcE7addressERc@@GLIBCPP_3.2 +FUNC:_ZNKSaIcE8max_sizeEv@@GLIBCPP_3.2 +FUNC:_ZNKSaIwE7addressERKw@@GLIBCPP_3.2 +FUNC:_ZNKSaIwE7addressERw@@GLIBCPP_3.2 +FUNC:_ZNKSaIwE8max_sizeEv@@GLIBCPP_3.2 +FUNC:_ZNKSi6gcountEv@@GLIBCPP_3.2 +FUNC:_ZNKSs12find_last_ofEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs12find_last_ofEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs12find_last_ofERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs12find_last_ofEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs13find_first_ofEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs13find_first_ofEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs13find_first_ofERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs13find_first_ofEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs13get_allocatorEv@@GLIBCPP_3.2 +FUNC:_ZNKSs16find_last_not_ofEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs16find_last_not_ofEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs16find_last_not_ofERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs16find_last_not_ofEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs17find_first_not_ofEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs17find_first_not_ofEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs17find_first_not_ofERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs17find_first_not_ofEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs2atEj@@GLIBCPP_3.2 +FUNC:_ZNKSs3endEv@@GLIBCPP_3.2 +FUNC:_ZNKSs4_Rep12_M_is_leakedEv@@GLIBCPP_3.2 +FUNC:_ZNKSs4_Rep12_M_is_sharedEv@@GLIBCPP_3.2 +FUNC:_ZNKSs4copyEPcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs4dataEv@@GLIBCPP_3.2 +FUNC:_ZNKSs4findEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs4findEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs4findERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs4findEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs4rendEv@@GLIBCPP_3.2 +FUNC:_ZNKSs4sizeEv@@GLIBCPP_3.2 +FUNC:_ZNKSs5beginEv@@GLIBCPP_3.2 +FUNC:_ZNKSs5c_strEv@@GLIBCPP_3.2 +FUNC:_ZNKSs5emptyEv@@GLIBCPP_3.2 +FUNC:_ZNKSs5rfindEPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs5rfindEPKcjj@@GLIBCPP_3.2 +FUNC:_ZNKSs5rfindERKSsj@@GLIBCPP_3.2 +FUNC:_ZNKSs5rfindEcj@@GLIBCPP_3.2 +FUNC:_ZNKSs6_M_repEv@@GLIBCPP_3.2 +FUNC:_ZNKSs6lengthEv@@GLIBCPP_3.2 +FUNC:_ZNKSs6rbeginEv@@GLIBCPP_3.2 +FUNC:_ZNKSs6substrEjj@@GLIBCPP_3.2 +FUNC:_ZNKSs7_M_dataEv@@GLIBCPP_3.2 +FUNC:_ZNKSs7_M_foldEjj@@GLIBCPP_3.2 +FUNC:_ZNKSs7_M_iendEv@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareEPKc@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareERKSs@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareEjjPKc@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareEjjPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareEjjRKSs@@GLIBCPP_3.2 +FUNC:_ZNKSs7compareEjjRKSsjj@@GLIBCPP_3.2 +FUNC:_ZNKSs8_M_checkEj@@GLIBCPP_3.2 +FUNC:_ZNKSs8capacityEv@@GLIBCPP_3.2 +FUNC:_ZNKSs8max_sizeEv@@GLIBCPP_3.2 +FUNC:_ZNKSs9_M_ibeginEv@@GLIBCPP_3.2 +FUNC:_ZNKSsixEj@@GLIBCPP_3.2 +FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE11curr_symbolEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE11do_groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE11frac_digitsEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13negative_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13positive_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE13thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE16do_negative_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE16do_positive_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb0EE8groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE10neg_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE10pos_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE11curr_symbolEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE11do_groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE11frac_digitsEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13negative_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13positive_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE13thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE16do_negative_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE16do_positive_signEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10moneypunctIcLb1EE8groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10ostrstream5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt10ostrstream6pcountEv@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE7_M_ampmEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE7_M_daysEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11__timepunctIcE9_M_monthsEPPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt11logic_error4whatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCPP_3.2 +FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCPP_3.2 +FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCPP_3.2 +FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt13runtime_error4whatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@@GLIBCPP_3.2 +FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCPP_3.2 +FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCPP_3.2 +FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCPP_3.2 +FUNC:_ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCPP_3.2 +FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt19istreambuf_iteratorIcSt11char_traitsIcEE6_M_getEv@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE10do_scan_isEmPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE11do_scan_notEmPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE5do_isEPKcS2_Pm@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE5do_isEmc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE8do_widenEc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@@GLIBCPP_3.2 +FUNC:_ZNKSt5ctypeIcE9do_narrowEcc@@GLIBCPP_3.2 +FUNC:_ZNKSt6locale4nameEv@@GLIBCPP_3.2 +FUNC:_ZNKSt6localeeqERKS_@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@@GLIBCPP_3.2 +FUNC:_ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERKS0_PKcS5_j@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE10_M_compareEPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE12_M_transformEPcPKcj@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE12do_transformEPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE4hashEPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE7compareEPKcS2_S2_S2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE7do_hashEPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7collateIcE9transformEPKcS2_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intES3_S3_RSt8ios_baseRSt12_Ios_IostateRSsRi@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_widen_intES3_RSt8ios_basecPci@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_convert_intIlEES3_S3_RSt8ios_basecccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_convert_intImEES3_S3_RSt8ios_basecccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_convert_intIxEES3_S3_RSt8ios_basecccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_convert_intIyEES3_S3_RSt8ios_basecccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_widen_floatES3_RSt8ios_basecPci@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE16_M_convert_floatIdEES3_S3_RSt8ios_baseccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE16_M_convert_floatIeEES3_S3_RSt8ios_baseccT_@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@@GLIBCPP_3.2 +FUNC:_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertES3_RSt8ios_basecPKci@@GLIBCPP_3.2 +FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE3getEiiiRKSs@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE4openERKSsRKSt6localePKc@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE5closeEi@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE6do_getEiiiRKSs@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE7do_openERKSsRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNKSt8messagesIcE8do_closeEi@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE11do_groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE11do_truenameEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE12do_falsenameEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE13decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE13thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE16do_decimal_pointEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE16do_thousands_sepEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE8groupingEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE8truenameEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8numpunctIcE9falsenameEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numERS3_S5_RiiijRKSt5ctypeIcERSt12_Ios_Iostate@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameERS3_S5_RiPPKcjRSt12_Ios_Iostate@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatERS3_S5_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@@GLIBCPP_3.2 +FUNC:_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@@GLIBCPP_3.2 +FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE14_M_check_facetEPKNSt6locale5facetE@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9exception4whatEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@@GLIBCPP_3.2 +FUNC:_ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@@GLIBCPP_3.2 +FUNC:_ZNKSt9strstream5rdbufEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9strstream6pcountEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9type_info10__do_catchEPKS_PPvj@@GLIBCPP_3.2 +FUNC:_ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@@GLIBCPP_3.2 +FUNC:_ZNKSt9type_info14__is_pointer_pEv@@GLIBCPP_3.2 +FUNC:_ZNKSt9type_info15__is_function_pEv@@GLIBCPP_3.2 +FUNC:_ZNSaIcE10deallocateEPcj@@GLIBCPP_3.2 +FUNC:_ZNSaIcE7destroyEPc@@GLIBCPP_3.2 +FUNC:_ZNSaIcE8allocateEjPKv@@GLIBCPP_3.2 +FUNC:_ZNSaIcE9constructEPcRKc@@GLIBCPP_3.2 +FUNC:_ZNSaIcEC1ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSaIcEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIcEC2ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSaIcEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIwE10deallocateEPwj@@GLIBCPP_3.2 +FUNC:_ZNSaIwE7destroyEPw@@GLIBCPP_3.2 +FUNC:_ZNSaIwE8allocateEjPKv@@GLIBCPP_3.2 +FUNC:_ZNSaIwE9constructEPwRKw@@GLIBCPP_3.2 +FUNC:_ZNSaIwEC1ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSaIwEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIwEC2ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSaIwEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIwED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSaIwED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSdD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSdD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSdD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSi3getEPci@@GLIBCPP_3.2 +FUNC:_ZNSi3getEPcic@@GLIBCPP_3.2 +FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@@GLIBCPP_3.2 +FUNC:_ZNSi3getERc@@GLIBCPP_3.2 +FUNC:_ZNSi3getEv@@GLIBCPP_3.2 +FUNC:_ZNSi4peekEv@@GLIBCPP_3.2 +FUNC:_ZNSi4readEPci@@GLIBCPP_3.2 +FUNC:_ZNSi4syncEv@@GLIBCPP_3.2 +FUNC:_ZNSi5seekgESt4fposI11__mbstate_tE@@GLIBCPP_3.2 +FUNC:_ZNSi5seekgElSt12_Ios_Seekdir@@GLIBCPP_3.2 +FUNC:_ZNSi5tellgEv@@GLIBCPP_3.2 +FUNC:_ZNSi5ungetEv@@GLIBCPP_3.2 +FUNC:_ZNSi6ignoreEii@@GLIBCPP_3.2 +FUNC:_ZNSi6sentryC1ERSib@@GLIBCPP_3.2 +FUNC:_ZNSi6sentryC2ERSib@@GLIBCPP_3.2 +FUNC:_ZNSi6sentrycvbEv@@GLIBCPP_3.2 +FUNC:_ZNSi7getlineEPci@@GLIBCPP_3.2 +FUNC:_ZNSi7getlineEPcic@@GLIBCPP_3.2 +FUNC:_ZNSi7putbackEc@@GLIBCPP_3.2 +FUNC:_ZNSi8readsomeEPci@@GLIBCPP_3.2 +FUNC:_ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSiD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSiD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSiD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSirsEPFRSiS_E@@GLIBCPP_3.2 +FUNC:_ZNSirsEPFRSt8ios_baseS0_E@@GLIBCPP_3.2 +FUNC:_ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCPP_3.2 +FUNC:_ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSirsERPv@@GLIBCPP_3.2 +FUNC:_ZNSirsERb@@GLIBCPP_3.2 +FUNC:_ZNSirsERd@@GLIBCPP_3.2 +FUNC:_ZNSirsERe@@GLIBCPP_3.2 +FUNC:_ZNSirsERf@@GLIBCPP_3.2 +FUNC:_ZNSirsERi@@GLIBCPP_3.2 +FUNC:_ZNSirsERj@@GLIBCPP_3.2 +FUNC:_ZNSirsERl@@GLIBCPP_3.2 +FUNC:_ZNSirsERm@@GLIBCPP_3.2 +FUNC:_ZNSirsERs@@GLIBCPP_3.2 +FUNC:_ZNSirsERt@@GLIBCPP_3.2 +FUNC:_ZNSirsERx@@GLIBCPP_3.2 +FUNC:_ZNSirsERy@@GLIBCPP_3.2 +FUNC:_ZNSo3putEc@@GLIBCPP_3.2 +FUNC:_ZNSo5flushEv@@GLIBCPP_3.2 +FUNC:_ZNSo5seekpESt4fposI11__mbstate_tE@@GLIBCPP_3.2 +FUNC:_ZNSo5seekpElSt12_Ios_Seekdir@@GLIBCPP_3.2 +FUNC:_ZNSo5tellpEv@@GLIBCPP_3.2 +FUNC:_ZNSo5writeEPKci@@GLIBCPP_3.2 +FUNC:_ZNSo6sentryC1ERSo@@GLIBCPP_3.2 +FUNC:_ZNSo6sentryC2ERSo@@GLIBCPP_3.2 +FUNC:_ZNSo6sentryD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSo6sentryD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSo6sentrycvbEv@@GLIBCPP_3.2 +FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSoD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSoD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSoD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSolsEPFRSoS_E@@GLIBCPP_3.2 +FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCPP_3.2 +FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCPP_3.2 +FUNC:_ZNSolsEPKv@@GLIBCPP_3.2 +FUNC:_ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +FUNC:_ZNSolsEb@@GLIBCPP_3.2 +FUNC:_ZNSolsEd@@GLIBCPP_3.2 +FUNC:_ZNSolsEe@@GLIBCPP_3.2 +FUNC:_ZNSolsEf@@GLIBCPP_3.2 +FUNC:_ZNSolsEi@@GLIBCPP_3.2 +FUNC:_ZNSolsEj@@GLIBCPP_3.2 +FUNC:_ZNSolsEl@@GLIBCPP_3.2 +FUNC:_ZNSolsEm@@GLIBCPP_3.2 +FUNC:_ZNSolsEs@@GLIBCPP_3.2 +FUNC:_ZNSolsEt@@GLIBCPP_3.2 +FUNC:_ZNSolsEx@@GLIBCPP_3.2 +FUNC:_ZNSolsEy@@GLIBCPP_3.2 +FUNC:_ZNSs10_M_replaceIN9__gnu_cxx17__normal_iteratorIPKcSsEEEERSsNS1_IPcSsEES7_T_S8_St18input_iterator_tag@@GLIBCPP_3.2 +FUNC:_ZNSs10_M_replaceIN9__gnu_cxx17__normal_iteratorIPcSsEEEERSsS3_S3_T_S5_St18input_iterator_tag@@GLIBCPP_3.2 +FUNC:_ZNSs10_M_replaceIPKcEERSsN9__gnu_cxx17__normal_iteratorIPcSsEES6_T_S7_St18input_iterator_tag@@GLIBCPP_3.2 +FUNC:_ZNSs10_M_replaceIPcEERSsN9__gnu_cxx17__normal_iteratorIS0_SsEES4_T_S5_St18input_iterator_tag@@GLIBCPP_3.2 +FUNC:_ZNSs12_Alloc_hiderC1EPcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs12_Alloc_hiderC2EPcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs12_M_leak_hardEv@@GLIBCPP_3.2 +FUNC:_ZNSs12_S_constructEjcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs12_S_empty_repEv@@GLIBCPP_3.2 +FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCPP_3.2 +FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCPP_3.2 +FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCPP_3.2 +FUNC:_ZNSs13_S_copy_charsEPcS_S_@@GLIBCPP_3.2 +FUNC:_ZNSs15_M_replace_safeIN9__gnu_cxx17__normal_iteratorIPKcSsEEEERSsNS1_IPcSsEES7_T_S8_@@GLIBCPP_3.2 +FUNC:_ZNSs15_M_replace_safeIN9__gnu_cxx17__normal_iteratorIPcSsEEEERSsS3_S3_T_S5_@@GLIBCPP_3.2 +FUNC:_ZNSs15_M_replace_safeIPKcEERSsN9__gnu_cxx17__normal_iteratorIPcSsEES6_T_S7_@@GLIBCPP_3.2 +FUNC:_ZNSs15_M_replace_safeIPcEERSsN9__gnu_cxx17__normal_iteratorIS0_SsEES4_T_S5_@@GLIBCPP_3.2 +FUNC:_ZNSs2atEj@@GLIBCPP_3.2 +FUNC:_ZNSs3endEv@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep10_M_disposeERKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep10_M_refcopyEv@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep10_M_refdataEv@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep13_M_set_leakedEv@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep15_M_set_sharableEv@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep7_M_grabERKSaIcES2_@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCPP_3.2 +FUNC:_ZNSs4_Rep9_S_createEjRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSs4_RepixEj@@GLIBCPP_3.2 +FUNC:_ZNSs4rendEv@@GLIBCPP_3.2 +FUNC:_ZNSs4swapERSs@@GLIBCPP_3.2 +FUNC:_ZNSs5beginEv@@GLIBCPP_3.2 +FUNC:_ZNSs5clearEv@@GLIBCPP_3.2 +FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@@GLIBCPP_3.2 +FUNC:_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@@GLIBCPP_3.2 +FUNC:_ZNSs5eraseEjj@@GLIBCPP_3.2 +FUNC:_ZNSs6appendEPKc@@GLIBCPP_3.2 +FUNC:_ZNSs6appendEPKcj@@GLIBCPP_3.2 +FUNC:_ZNSs6appendERKSs@@GLIBCPP_3.2 +FUNC:_ZNSs6appendERKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSs6appendEjc@@GLIBCPP_3.2 +FUNC:_ZNSs6assignEPKc@@GLIBCPP_3.2 +FUNC:_ZNSs6assignEPKcj@@GLIBCPP_3.2 +FUNC:_ZNSs6assignERKSs@@GLIBCPP_3.2 +FUNC:_ZNSs6assignERKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSs6assignEjc@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEjPKc@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEjPKcj@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEjRKSs@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEjRKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSs6insertEjjc@@GLIBCPP_3.2 +FUNC:_ZNSs6rbeginEv@@GLIBCPP_3.2 +FUNC:_ZNSs6resizeEj@@GLIBCPP_3.2 +FUNC:_ZNSs6resizeEjc@@GLIBCPP_3.2 +FUNC:_ZNSs7_M_dataEPc@@GLIBCPP_3.2 +FUNC:_ZNSs7_M_leakEv@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEjjPKc@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEjjPKcj@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEjjRKSs@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEjjRKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSs7replaceEjjjc@@GLIBCPP_3.2 +FUNC:_ZNSs7reserveEj@@GLIBCPP_3.2 +FUNC:_ZNSs9_M_mutateEjjj@@GLIBCPP_3.2 +FUNC:_ZNSs9push_backEc@@GLIBCPP_3.2 +FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1ERKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSsC1ERKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1EjcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPKcSsEEEET_S5_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2ERKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSsC2ERKSsjj@@GLIBCPP_3.2 +FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2EjcRKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPKcSsEEEET_S5_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2IPKcEET_S2_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsC2IPcEET_S1_RKSaIcE@@GLIBCPP_3.2 +FUNC:_ZNSsD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSsD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSsaSEPKc@@GLIBCPP_3.2 +FUNC:_ZNSsaSERKSs@@GLIBCPP_3.2 +FUNC:_ZNSsaSEc@@GLIBCPP_3.2 +FUNC:_ZNSsixEj@@GLIBCPP_3.2 +FUNC:_ZNSspLEPKc@@GLIBCPP_3.2 +FUNC:_ZNSspLERKSs@@GLIBCPP_3.2 +FUNC:_ZNSspLEc@@GLIBCPP_3.2 +FUNC:_ZNSt10__num_base13_S_format_intERKSt8ios_basePccc@@GLIBCPP_3.2 +FUNC:_ZNSt10__num_base15_S_format_floatERKSt8ios_basePcci@@GLIBCPP_3.2 +FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstream3strEv@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC1EPc@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC1EPci@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC2EPKc@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC2EPKci@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC2EPc@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamC2EPci@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10istrstreamD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10money_base20_S_construct_patternEccc@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEPiPKc@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EEC1EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EEC2EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb0EED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEPiPKc@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EEC1EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EEC2EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10moneypunctIcLb1EED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstream3strEv@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstream6freezeEb@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt10ostrstreamD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcE23_M_initialize_timepunctEPi@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcEC1EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcEC2EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11__timepunctIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt11logic_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt11logic_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11logic_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11logic_errorD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11range_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt11range_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt11range_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt11range_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE10sys_ungetcEi@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE12_M_open_modeESt13_Ios_OpenmodeRiS2_Pc@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE4syncEv@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE5closeEv@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE6xsgetnEPci@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE6xsputnEPKci@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE7seekposElSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE8sys_getcEv@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE8sys_openEP7__sFILESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmodeb@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcEC1EPP13pthread_mutex@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcEC2EPP13pthread_mutex@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12ctype_bynameIcEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt12ctype_bynameIcEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt12ctype_bynameIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12ctype_bynameIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12ctype_bynameIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12domain_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12domain_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12domain_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12domain_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12length_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12length_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12length_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12length_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12out_of_rangeC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12out_of_rangeC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt12out_of_rangeD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12out_of_rangeD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf3strEv@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf6freezeEb@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf6setbufEPci@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf7_M_freeEPc@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf8_M_allocEj@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf8_M_setupEPcS0_i@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf8overflowEi@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf9pbackfailEi@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambuf9underflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPFPvjEPFvS0_E@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPKai@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPKci@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPKhi@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPaiS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPciS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1EPhiS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC1Ei@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPFPvjEPFvS0_E@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPKai@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPKci@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPKhi@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPaiS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPciS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2EPhiS0_@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufC2Ei@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt12strstreambufD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13bad_exceptionD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13bad_exceptionD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13bad_exceptionD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE17_M_output_unshiftEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE18_M_really_overflowEi@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE18_M_set_determinateEl@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_is_indeterminateEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_underflow_commonEb@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE20_M_set_indeterminateEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPciRiS4_@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14overflow_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt14overflow_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt14overflow_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt14overflow_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE14_M_in_cur_moveEl@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE15_M_out_buf_sizeEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE15_M_out_cur_moveEl@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE15_M_pback_createEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE16_M_pback_destroyEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE14_M_really_syncEjj@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15messages_bynameIcEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15messages_bynameIcEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15messages_bynameIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15messages_bynameIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15messages_bynameIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15numpunct_bynameIcEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15numpunct_bynameIcEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15numpunct_bynameIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15numpunct_bynameIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15numpunct_bynameIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15underflow_errorC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt15underflow_errorC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt15underflow_errorD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt15underflow_errorD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt16invalid_argumentD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb0EED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb0EED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb0EED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb1EED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb1EED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt17moneypunct_bynameIcLb1EED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE10deallocateEPvj@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE10reallocateEPvjj@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE11_S_round_upEj@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE14_S_chunk_allocEjRi@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexEj@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE5_LockC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE5_LockC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE5_LockD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE5_LockD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE8allocateEj@@GLIBCPP_3.2 +FUNC:_ZNSt24__default_alloc_templateILb1ELi0EE9_S_refillEj@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcEC1EPKmbj@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcEC1EPiPKmbj@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcEC2EPKmbj@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcEC2EPiPKmbj@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt5ctypeIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCPP_3.2 +FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCPP_3.2 +FUNC:_ZNSt6locale11_M_coalesceERKS_S1_j@@GLIBCPP_3.2 +FUNC:_ZNSt6locale21_S_normalize_categoryEj@@GLIBCPP_3.2 +FUNC:_ZNSt6locale2idC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale2idC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPNS_5facetE@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_j@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC1EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC1EPPNS_5facetEjb@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC1ERKS0_j@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC2EPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC2EPPNS_5facetEjb@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplC2ERKS0_j@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facet16_M_add_referenceEv@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facet17_S_clone_c_localeERPi@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facet18_S_create_c_localeERPiPKcS1_@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facet19_M_remove_referenceEv@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facet19_S_destroy_c_localeERPi@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facetC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facetC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facetD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facetD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale5facetD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6locale6globalERKS_@@GLIBCPP_3.2 +FUNC:_ZNSt6locale7classicEv@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1EPKc@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1EPNS_5_ImplE@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1ERKS_PKcj@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1ERKS_S1_j@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2EPKc@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2EPNS_5_ImplE@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2ERKS_@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2ERKS_PKcj@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2ERKS_S1_j@@GLIBCPP_3.2 +FUNC:_ZNSt6localeC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6localeD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6localeD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt6localeaSERKS_@@GLIBCPP_3.2 +FUNC:_ZNSt7codecvtIcc11__mbstate_tEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7codecvtIcc11__mbstate_tED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7codecvtIcc11__mbstate_tED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7codecvtIcc11__mbstate_tED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcEC1EPij@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcEC2EPij@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7collateIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8bad_castD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8bad_castD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8bad_castD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base13_M_grow_wordsEi@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4Init13_S_ios_createEb@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4Init14_S_ios_destroyEv@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base4InitD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base5imbueERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base6xallocEv@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7_M_initEv@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7failureC1ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7failureC2ERKSs@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7failureD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7failureD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_base7failureD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_baseC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_baseC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_baseD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8ios_baseD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcEC1EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcEC2EPiPKcj@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8messagesIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcE22_M_initialize_numpunctEPi@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcEC1EPij@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcEC2EPij@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8numpunctIcED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjEC1ERKS0_@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjEC2ERKS0_@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt8valarrayIjEixEj@@GLIBCPP_3.2 +FUNC:_ZNSt9bad_allocD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9bad_allocD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9bad_allocD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_facetsERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9exceptionD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9exceptionD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9exceptionD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@@GLIBCPP_3.2 +FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@@GLIBCPP_3.2 +FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9strstream3strEv@@GLIBCPP_3.2 +FUNC:_ZNSt9strstream6freezeEb@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamC1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamC2EPciSt13_Ios_Openmode@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamC2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9strstreamD2Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9type_infoD0Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9type_infoD1Ev@@GLIBCPP_3.2 +FUNC:_ZNSt9type_infoD2Ev@@GLIBCPP_3.2 +FUNC:_ZSt10unexpectedv@@GLIBCPP_3.2 +FUNC:_ZSt13set_terminatePFvvE@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIlEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vImEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIxEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14__convert_to_vIyEvPKcRT_RSt12_Ios_IostateRKPii@@GLIBCPP_3.2 +FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCPP_3.2 +FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCPP_3.2 +FUNC:_ZSt16__throw_bad_castv@@GLIBCPP_3.2 +FUNC:_ZSt17__throw_bad_allocv@@GLIBCPP_3.2 +FUNC:_ZSt18__throw_bad_typeidv@@GLIBCPP_3.2 +FUNC:_ZSt18uncaught_exceptionv@@GLIBCPP_3.2 +FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCPP_3.2 +FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt19__throw_range_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt20__throw_domain_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt20__throw_length_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCPP_3.2 +FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCPP_3.2 +FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCPP_3.2 +FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCPP_3.2 +FUNC:_ZSt24__uninitialized_copy_auxIN9__gnu_cxx17__normal_iteratorIPKSsSt6vectorISsSaISsEEEEPSsET0_T_SA_S9_12__false_type@@GLIBCPP_3.2 +FUNC:_ZSt26__uninitialized_fill_n_auxIPSsjSsET_S1_T0_RKT1_12__false_type@@GLIBCPP_3.2 +FUNC:_ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@@GLIBCPP_3.2 +FUNC:_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCPP_3.2 +FUNC:_ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCPP_3.2 +FUNC:_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@@GLIBCPP_3.2 +FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCPP_3.2 +FUNC:_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt5ctypeIcEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt7collateIcEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt8messagesIcEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt8numpunctIcEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9terminatev@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt7collateIcEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@@GLIBCPP_3.2 +FUNC:_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCPP_3.2 +FUNC:_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@@GLIBCPP_3.2 +FUNC:_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@@GLIBCPP_3.2 +FUNC:_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@@GLIBCPP_3.2 +FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@@GLIBCPP_3.2 +FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@@GLIBCPP_3.2 +FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@@GLIBCPP_3.2 +FUNC:_ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@@GLIBCPP_3.2 +FUNC:_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@@GLIBCPP_3.2 +FUNC:_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@@GLIBCPP_3.2 +FUNC:_ZThn8_NSdD0Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSdD1Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt9strstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZThn8_NSt9strstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSdD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSdD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSiD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSiD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSoD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSoD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt10istrstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt10istrstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt10ostrstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt10ostrstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt9strstreamD0Ev@@GLIBCPP_3.2 +FUNC:_ZTv0_n12_NSt9strstreamD1Ev@@GLIBCPP_3.2 +FUNC:_ZdaPv@@GLIBCPP_3.2 +FUNC:_ZdaPvRKSt9nothrow_t@@GLIBCPP_3.2 +FUNC:_ZdlPv@@GLIBCPP_3.2 +FUNC:_ZdlPvRKSt9nothrow_t@@GLIBCPP_3.2 +FUNC:_Znaj@@GLIBCPP_3.2 +FUNC:_ZnajRKSt9nothrow_t@@GLIBCPP_3.2 +FUNC:_Znwj@@GLIBCPP_3.2 +FUNC:_ZnwjRKSt9nothrow_t@@GLIBCPP_3.2 +FUNC:__cxa_allocate_exception@@CXXABI_1.2 +FUNC:__cxa_bad_cast@@CXXABI_1.2 +FUNC:__cxa_bad_typeid@@CXXABI_1.2 +FUNC:__cxa_begin_catch@@CXXABI_1.2 +FUNC:__cxa_call_unexpected@@CXXABI_1.2 +FUNC:__cxa_current_exception_type@@CXXABI_1.2 +FUNC:__cxa_demangle@@CXXABI_1.2 +FUNC:__cxa_dyn_string_append@@CXXABI_1.2 +FUNC:__cxa_dyn_string_append_char@@CXXABI_1.2 +FUNC:__cxa_dyn_string_append_cstr@@CXXABI_1.2 +FUNC:__cxa_dyn_string_clear@@CXXABI_1.2 +FUNC:__cxa_dyn_string_copy@@CXXABI_1.2 +FUNC:__cxa_dyn_string_copy_cstr@@CXXABI_1.2 +FUNC:__cxa_dyn_string_delete@@CXXABI_1.2 +FUNC:__cxa_dyn_string_eq@@CXXABI_1.2 +FUNC:__cxa_dyn_string_init@@CXXABI_1.2 +FUNC:__cxa_dyn_string_insert@@CXXABI_1.2 +FUNC:__cxa_dyn_string_insert_char@@CXXABI_1.2 +FUNC:__cxa_dyn_string_insert_cstr@@CXXABI_1.2 +FUNC:__cxa_dyn_string_new@@CXXABI_1.2 +FUNC:__cxa_dyn_string_prepend@@CXXABI_1.2 +FUNC:__cxa_dyn_string_prepend_cstr@@CXXABI_1.2 +FUNC:__cxa_dyn_string_release@@CXXABI_1.2 +FUNC:__cxa_dyn_string_resize@@CXXABI_1.2 +FUNC:__cxa_dyn_string_substring@@CXXABI_1.2 +FUNC:__cxa_end_catch@@CXXABI_1.2 +FUNC:__cxa_free_exception@@CXXABI_1.2 +FUNC:__cxa_get_globals@@CXXABI_1.2 +FUNC:__cxa_get_globals_fast@@CXXABI_1.2 +FUNC:__cxa_pure_virtual@@CXXABI_1.2 +FUNC:__cxa_rethrow@@CXXABI_1.2 +FUNC:__cxa_throw@@CXXABI_1.2 +FUNC:__cxa_vec_cctor@@CXXABI_1.2 +FUNC:__cxa_vec_cleanup@@CXXABI_1.2 +FUNC:__cxa_vec_ctor@@CXXABI_1.2 +FUNC:__cxa_vec_delete2@@CXXABI_1.2 +FUNC:__cxa_vec_delete3@@CXXABI_1.2 +FUNC:__cxa_vec_delete@@CXXABI_1.2 +FUNC:__cxa_vec_dtor@@CXXABI_1.2 +FUNC:__cxa_vec_new2@@CXXABI_1.2 +FUNC:__cxa_vec_new3@@CXXABI_1.2 +FUNC:__cxa_vec_new@@CXXABI_1.2 +FUNC:__dynamic_cast@@CXXABI_1.2 +FUNC:__gxx_personality_v0@@CXXABI_1.2 +OBJECT:0:CXXABI_1.2 +OBJECT:0:GLIBCPP_3.2 +OBJECT:12:_ZNSt6locale5_Impl11_S_id_ctypeE@@GLIBCPP_3.2 +OBJECT:12:_ZSt9collate_c@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv117__pbase_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv119__pointer_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv120__function_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv120__si_class_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv121__vmi_class_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv123__fundamental_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN10__cxxabiv129__pointer_to_member_type_infoE@@GLIBCPP_3.2 +OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:12:_ZTINSt8ios_base7failureE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt10bad_typeid@@GLIBCPP_3.2 +OBJECT:12:_ZTISt10istrstream@@GLIBCPP_3.2 +OBJECT:12:_ZTISt10ostrstream@@GLIBCPP_3.2 +OBJECT:12:_ZTISt11__timepunctIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt11logic_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt11range_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt12ctype_bynameIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt12domain_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt12length_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt12out_of_range@@GLIBCPP_3.2 +OBJECT:12:_ZTISt12strstreambuf@@GLIBCPP_3.2 +OBJECT:12:_ZTISt13bad_exception@@GLIBCPP_3.2 +OBJECT:12:_ZTISt13basic_filebufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt13runtime_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt14codecvt_bynameIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt14collate_bynameIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt14overflow_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15messages_bynameIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15numpunct_bynameIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt15underflow_error@@GLIBCPP_3.2 +OBJECT:12:_ZTISt16invalid_argument@@GLIBCPP_3.2 +OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt17moneypunct_bynameIcLb1EE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt5ctypeIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt7collateIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt8bad_cast@@GLIBCPP_3.2 +OBJECT:12:_ZTISt8numpunctIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt9bad_alloc@@GLIBCPP_3.2 +OBJECT:12:_ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:12:_ZTISt9strstream@@GLIBCPP_3.2 +OBJECT:12:_ZTSSt5ctypeIcE@@GLIBCPP_3.2 +OBJECT:12:_ZTSSt8bad_cast@@GLIBCPP_3.2 +OBJECT:12:_ZTSSt8ios_base@@GLIBCPP_3.2 +OBJECT:13:_ZTSSt9bad_alloc@@GLIBCPP_3.2 +OBJECT:13:_ZTSSt9exception@@GLIBCPP_3.2 +OBJECT:13:_ZTSSt9strstream@@GLIBCPP_3.2 +OBJECT:13:_ZTSSt9time_base@@GLIBCPP_3.2 +OBJECT:13:_ZTSSt9type_info@@GLIBCPP_3.2 +OBJECT:140:_ZSt4cerr@@GLIBCPP_3.2 +OBJECT:140:_ZSt4clog@@GLIBCPP_3.2 +OBJECT:140:_ZSt4cout@@GLIBCPP_3.2 +OBJECT:144:_ZSt3cin@@GLIBCPP_3.2 +OBJECT:14:_ZTSSt7collateIcE@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10__num_base@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10bad_typeid@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10ctype_base@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10istrstream@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10money_base@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt10ostrstream@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt8messagesIcE@@GLIBCPP_3.2 +OBJECT:15:_ZTSSt8numpunctIcE@@GLIBCPP_3.2 +OBJECT:16:_ZNSs20_S_empty_rep_storageE@@GLIBCPP_3.2 +OBJECT:16:_ZNSt6locale5_Impl10_S_id_timeE@@GLIBCPP_3.2 +OBJECT:16:_ZNSt6locale5_Impl13_S_id_numericE@@GLIBCPP_3.2 +OBJECT:16:_ZSt10messages_c@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKa@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKb@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKc@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKd@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKe@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKf@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKh@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKi@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKj@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKl@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKm@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKs@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKt@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKv@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKw@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKx@@GLIBCPP_3.2 +OBJECT:16:_ZTIPKy@@GLIBCPP_3.2 +OBJECT:16:_ZTIPa@@GLIBCPP_3.2 +OBJECT:16:_ZTIPb@@GLIBCPP_3.2 +OBJECT:16:_ZTIPc@@GLIBCPP_3.2 +OBJECT:16:_ZTIPd@@GLIBCPP_3.2 +OBJECT:16:_ZTIPe@@GLIBCPP_3.2 +OBJECT:16:_ZTIPf@@GLIBCPP_3.2 +OBJECT:16:_ZTIPh@@GLIBCPP_3.2 +OBJECT:16:_ZTIPi@@GLIBCPP_3.2 +OBJECT:16:_ZTIPj@@GLIBCPP_3.2 +OBJECT:16:_ZTIPl@@GLIBCPP_3.2 +OBJECT:16:_ZTIPm@@GLIBCPP_3.2 +OBJECT:16:_ZTIPs@@GLIBCPP_3.2 +OBJECT:16:_ZTIPt@@GLIBCPP_3.2 +OBJECT:16:_ZTIPv@@GLIBCPP_3.2 +OBJECT:16:_ZTIPw@@GLIBCPP_3.2 +OBJECT:16:_ZTIPx@@GLIBCPP_3.2 +OBJECT:16:_ZTIPy@@GLIBCPP_3.2 +OBJECT:16:_ZTSSt11logic_error@@GLIBCPP_3.2 +OBJECT:16:_ZTSSt11range_error@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt10istrstream@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt10ostrstream@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:16:_ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:16:_ZTVNSt6locale5facetE@@GLIBCPP_3.2 +OBJECT:16:_ZTVSt11__timepunctIcE@@GLIBCPP_3.2 +OBJECT:16:_ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:17:_ZTSSt12codecvt_base@@GLIBCPP_3.2 +OBJECT:17:_ZTSSt12domain_error@@GLIBCPP_3.2 +OBJECT:17:_ZTSSt12length_error@@GLIBCPP_3.2 +OBJECT:17:_ZTSSt12out_of_range@@GLIBCPP_3.2 +OBJECT:17:_ZTSSt12strstreambuf@@GLIBCPP_3.2 +OBJECT:18:_ZTSNSt6locale5facetE@@GLIBCPP_3.2 +OBJECT:18:_ZTSSt13bad_exception@@GLIBCPP_3.2 +OBJECT:18:_ZTSSt13messages_base@@GLIBCPP_3.2 +OBJECT:18:_ZTSSt13runtime_error@@GLIBCPP_3.2 +OBJECT:19:_ZTSSt11__timepunctIcE@@GLIBCPP_3.2 +OBJECT:19:_ZTSSt14overflow_error@@GLIBCPP_3.2 +OBJECT:1:_ZNSs4_Rep11_S_terminalE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt10moneypunctIcLb0EE4intlE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt10moneypunctIcLb1EE4intlE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIaE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIbE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIcE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIdE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIeE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIfE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIhE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIiE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIjE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIlE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsImE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIsE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsItE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIxE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt14numeric_limitsIyE9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt17moneypunct_bynameIcLb0EE4intlE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt17moneypunct_bynameIcLb1EE4intlE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base10is_boundedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base10is_integerE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base12has_infinityE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base13has_quiet_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base14is_specializedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base15has_denorm_lossE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base15tinyness_beforeE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base17has_signaling_NaNE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base5trapsE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base8is_exactE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base9is_iec559E@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCPP_3.2 +OBJECT:1:_ZNSt8ios_base4Init20_S_synced_with_stdioE@@GLIBCPP_3.2 +OBJECT:1:_ZSt7nothrow@@GLIBCPP_3.2 +OBJECT:204:_ZSt11timepunct_c@@GLIBCPP_3.2 +OBJECT:20:_ZNSt6locale5_Impl14_S_id_monetaryE@@GLIBCPP_3.2 +OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCPP_3.2 +OBJECT:20:_ZTSSt15underflow_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVNSt8ios_base7failureE@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt10bad_typeid@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt11logic_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt11range_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt12domain_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt12length_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt12out_of_range@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt13bad_exception@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt13runtime_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt14overflow_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt15underflow_error@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt16invalid_argument@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt8bad_cast@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt9bad_alloc@@GLIBCPP_3.2 +OBJECT:20:_ZTVSt9exception@@GLIBCPP_3.2 +OBJECT:21:_ZTSSt16invalid_argument@@GLIBCPP_3.2 +OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCPP_3.2 +OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCPP_3.2 +OBJECT:22:_ZTSSt10moneypunctIcLb1EE@@GLIBCPP_3.2 +OBJECT:22:_ZTSSt14collate_bynameIcE@@GLIBCPP_3.2 +OBJECT:23:_ZNSt10__num_base8_S_atomsE@@GLIBCPP_3.2 +OBJECT:23:_ZTSSt15messages_bynameIcE@@GLIBCPP_3.2 +OBJECT:23:_ZTSSt15numpunct_bynameIcE@@GLIBCPP_3.2 +OBJECT:24:_ZSt10numpunct_c@@GLIBCPP_3.2 +OBJECT:24:_ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:256:_ZSt12_S_bit_count@@GLIBCPP_3.2 +OBJECT:256:_ZSt12_S_first_one@@GLIBCPP_3.2 +OBJECT:28:_ZNSt6locale5_Impl19_S_facet_categoriesE@@GLIBCPP_3.2 +OBJECT:28:_ZSt7ctype_c@@GLIBCPP_3.2 +OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:28:_ZTTSd@@GLIBCPP_3.2 +OBJECT:28:_ZTVSt14collate_bynameIcE@@GLIBCPP_3.2 +OBJECT:28:_ZTVSt15messages_bynameIcE@@GLIBCPP_3.2 +OBJECT:28:_ZTVSt7collateIcE@@GLIBCPP_3.2 +OBJECT:28:_ZTVSt8messagesIcE@@GLIBCPP_3.2 +OBJECT:29:_ZTSSt17moneypunct_bynameIcLb0EE@@GLIBCPP_3.2 +OBJECT:29:_ZTSSt17moneypunct_bynameIcLb1EE@@GLIBCPP_3.2 +OBJECT:29:_ZTSSt21__ctype_abstract_baseIcE@@GLIBCPP_3.2 +OBJECT:2:_ZTSa@@GLIBCPP_3.2 +OBJECT:2:_ZTSb@@GLIBCPP_3.2 +OBJECT:2:_ZTSc@@GLIBCPP_3.2 +OBJECT:2:_ZTSd@@GLIBCPP_3.2 +OBJECT:2:_ZTSe@@GLIBCPP_3.2 +OBJECT:2:_ZTSf@@GLIBCPP_3.2 +OBJECT:2:_ZTSh@@GLIBCPP_3.2 +OBJECT:2:_ZTSi@@GLIBCPP_3.2 +OBJECT:2:_ZTSj@@GLIBCPP_3.2 +OBJECT:2:_ZTSl@@GLIBCPP_3.2 +OBJECT:2:_ZTSm@@GLIBCPP_3.2 +OBJECT:2:_ZTSs@@GLIBCPP_3.2 +OBJECT:2:_ZTSt@@GLIBCPP_3.2 +OBJECT:2:_ZTSv@@GLIBCPP_3.2 +OBJECT:2:_ZTSw@@GLIBCPP_3.2 +OBJECT:2:_ZTSx@@GLIBCPP_3.2 +OBJECT:2:_ZTSy@@GLIBCPP_3.2 +OBJECT:32:_ZTISi@@GLIBCPP_3.2 +OBJECT:32:_ZTISo@@GLIBCPP_3.2 +OBJECT:32:_ZTISt9basic_iosIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:32:_ZTVN10__cxxabiv116__enum_type_infoE@@GLIBCPP_3.2 +OBJECT:32:_ZTVN10__cxxabiv117__array_type_infoE@@GLIBCPP_3.2 +OBJECT:32:_ZTVN10__cxxabiv120__function_type_infoE@@GLIBCPP_3.2 +OBJECT:32:_ZTVN10__cxxabiv123__fundamental_type_infoE@@GLIBCPP_3.2 +OBJECT:32:_ZTVSt9type_info@@GLIBCPP_3.2 +OBJECT:33:_ZTSN10__cxxabiv116__enum_type_infoE@@GLIBCPP_3.2 +OBJECT:34:_ZTSN10__cxxabiv117__array_type_infoE@@GLIBCPP_3.2 +OBJECT:34:_ZTSN10__cxxabiv117__class_type_infoE@@GLIBCPP_3.2 +OBJECT:34:_ZTSN10__cxxabiv117__pbase_type_infoE@@GLIBCPP_3.2 +OBJECT:34:_ZTSSt9basic_iosIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:36:_ZSt13c_locale_impl@@GLIBCPP_3.2 +OBJECT:36:_ZTSN10__cxxabiv119__pointer_type_infoE@@GLIBCPP_3.2 +OBJECT:36:_ZTSSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:36:_ZTVN10__cxxabiv117__pbase_type_infoE@@GLIBCPP_3.2 +OBJECT:36:_ZTVN10__cxxabiv119__pointer_type_infoE@@GLIBCPP_3.2 +OBJECT:36:_ZTVN10__cxxabiv129__pointer_to_member_type_infoE@@GLIBCPP_3.2 +OBJECT:36:_ZTVSt15numpunct_bynameIcE@@GLIBCPP_3.2 +OBJECT:36:_ZTVSt8numpunctIcE@@GLIBCPP_3.2 +OBJECT:37:_ZTSN10__cxxabiv120__function_type_infoE@@GLIBCPP_3.2 +OBJECT:37:_ZTSN10__cxxabiv120__si_class_type_infoE@@GLIBCPP_3.2 +OBJECT:38:_ZTSN10__cxxabiv121__vmi_class_type_infoE@@GLIBCPP_3.2 +OBJECT:39:_ZTSSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:39:_ZTSSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:3:_ZTSPa@@GLIBCPP_3.2 +OBJECT:3:_ZTSPb@@GLIBCPP_3.2 +OBJECT:3:_ZTSPc@@GLIBCPP_3.2 +OBJECT:3:_ZTSPd@@GLIBCPP_3.2 +OBJECT:3:_ZTSPe@@GLIBCPP_3.2 +OBJECT:3:_ZTSPf@@GLIBCPP_3.2 +OBJECT:3:_ZTSPh@@GLIBCPP_3.2 +OBJECT:3:_ZTSPi@@GLIBCPP_3.2 +OBJECT:3:_ZTSPj@@GLIBCPP_3.2 +OBJECT:3:_ZTSPl@@GLIBCPP_3.2 +OBJECT:3:_ZTSPm@@GLIBCPP_3.2 +OBJECT:3:_ZTSPs@@GLIBCPP_3.2 +OBJECT:3:_ZTSPt@@GLIBCPP_3.2 +OBJECT:3:_ZTSPv@@GLIBCPP_3.2 +OBJECT:3:_ZTSPw@@GLIBCPP_3.2 +OBJECT:3:_ZTSPx@@GLIBCPP_3.2 +OBJECT:3:_ZTSPy@@GLIBCPP_3.2 +OBJECT:3:_ZTSSd@@GLIBCPP_3.2 +OBJECT:3:_ZTSSi@@GLIBCPP_3.2 +OBJECT:3:_ZTSSo@@GLIBCPP_3.2 +OBJECT:40:_ZSt13moneypunct_fc@@GLIBCPP_3.2 +OBJECT:40:_ZSt13moneypunct_tc@@GLIBCPP_3.2 +OBJECT:40:_ZTISd@@GLIBCPP_3.2 +OBJECT:40:_ZTISt10moneypunctIcLb0EE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt10moneypunctIcLb1EE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt21__ctype_abstract_baseIcE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt8messagesIcE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:40:_ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:40:_ZTSN10__cxxabiv123__fundamental_type_infoE@@GLIBCPP_3.2 +OBJECT:40:_ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTTSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTTSt9strstream@@GLIBCPP_3.2 +OBJECT:40:_ZTVSi@@GLIBCPP_3.2 +OBJECT:40:_ZTVSo@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt10istrstream@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt10ostrstream@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:40:_ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:41:_ZTSSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:44:_ZTVN10__cxxabiv117__class_type_infoE@@GLIBCPP_3.2 +OBJECT:44:_ZTVN10__cxxabiv120__si_class_type_infoE@@GLIBCPP_3.2 +OBJECT:44:_ZTVN10__cxxabiv121__vmi_class_type_infoE@@GLIBCPP_3.2 +OBJECT:44:_ZTVSt14codecvt_bynameIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:44:_ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:45:_ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@@GLIBCPP_3.2 +OBJECT:46:_ZTSN10__cxxabiv129__pointer_to_member_type_infoE@@GLIBCPP_3.2 +OBJECT:46:_ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:480:_ZSt7buf_cin@@GLIBCPP_3.2 +OBJECT:480:_ZSt8buf_cerr@@GLIBCPP_3.2 +OBJECT:480:_ZSt8buf_cout@@GLIBCPP_3.2 +OBJECT:48:_ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:49:_ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:49:_ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:4:_ZNSs4_Rep11_S_max_sizeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSs4nposE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5alnumE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5alphaE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5cntrlE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5digitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5graphE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5lowerE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5printE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5punctE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5spaceE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base5upperE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10ctype_base6xdigitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10money_base18_S_default_patternE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10moneypunctIcLb0EE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt10moneypunctIcLb1EE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt11__timepunctIcE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIaE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIbE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIcE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIdE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIeE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIfE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIhE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIiE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIjE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIlE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsImE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIsE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsItE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIxE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt14numeric_limitsIyE8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base10has_denormE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base11round_styleE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base12max_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base12min_exponentE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base14max_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base14min_exponent10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base5radixE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base6digitsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt21__numeric_limits_base8digits10E@@GLIBCPP_3.2 +OBJECT:4:_ZNSt24__default_alloc_templateILb1ELi0EE11_S_end_freeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt24__default_alloc_templateILb1ELi0EE12_S_heap_sizeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt24__default_alloc_templateILb1ELi0EE13_S_start_freeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt24__default_alloc_templateILb1ELi0EE22_S_node_allocator_lockE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt5ctypeIcE10table_sizeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt5ctypeIcE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale10_S_classicE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale17_S_num_categoriesE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale2id12_S_highwaterE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale3allE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale4noneE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale4timeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale5ctypeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale5facet11_S_c_localeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale7collateE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale7numericE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale8messagesE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale8monetaryE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt6locale9_S_globalE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt7collateIcE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base10floatfieldE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base10scientificE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base11adjustfieldE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base18_S_local_word_sizeE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base2inE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3appE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3ateE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3begE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3curE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3decE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3endE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3hexE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3octE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base3outE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base4Init16_S_ios_base_initE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base4leftE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base5fixedE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base5rightE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base5truncE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base6badbitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base6binaryE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base6eofbitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base6skipwsE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base7failbitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base7goodbitE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base7showposE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base7unitbufE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base8internalE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base8showbaseE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base9basefieldE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base9boolalphaE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base9showpointE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8ios_base9uppercaseE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8messagesIcE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8numpunctIcE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:4:_ZSt8c_locale@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKa@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKb@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKc@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKd@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKe@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKf@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKh@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKi@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKj@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKl@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKm@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKs@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKt@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKv@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKw@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKx@@GLIBCPP_3.2 +OBJECT:4:_ZTSPKy@@GLIBCPP_3.2 +OBJECT:50:_ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:50:_ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:52:_ZTVSt10moneypunctIcLb0EE@@GLIBCPP_3.2 +OBJECT:52:_ZTVSt10moneypunctIcLb1EE@@GLIBCPP_3.2 +OBJECT:52:_ZTVSt17moneypunct_bynameIcLb0EE@@GLIBCPP_3.2 +OBJECT:52:_ZTVSt17moneypunct_bynameIcLb1EE@@GLIBCPP_3.2 +OBJECT:56:_ZNSt11__timepunctIcE12_S_timezonesE@@GLIBCPP_3.2 +OBJECT:56:_ZSt9facet_vec@@GLIBCPP_3.2 +OBJECT:58:_ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:58:_ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:59:_ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:59:_ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:60:_ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:60:_ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:60:_ZTVSd@@GLIBCPP_3.2 +OBJECT:60:_ZTVSt13basic_fstreamIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:60:_ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:60:_ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:60:_ZTVSt9strstream@@GLIBCPP_3.2 +OBJECT:64:_ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE@@GLIBCPP_3.2 +OBJECT:64:_ZTVN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt12ctype_bynameIcE@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt12strstreambuf@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt13basic_filebufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt21__ctype_abstract_baseIcE@@GLIBCPP_3.2 +OBJECT:64:_ZTVSt5ctypeIcE@@GLIBCPP_3.2 +OBJECT:67:_ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:67:_ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCPP_3.2 +OBJECT:68:_ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt10moneypunctIcLb0EE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt10moneypunctIcLb1EE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt11__timepunctIcE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt7collateIcE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt8messagesIcE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt8numpunctIcE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCPP_3.2 +OBJECT:8:_ZNSt6locale5_Impl13_S_id_collateE@@GLIBCPP_3.2 +OBJECT:8:_ZNSt6locale5_Impl14_S_id_messagesE@@GLIBCPP_3.2 +OBJECT:8:_ZSt10time_get_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt10time_put_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt11money_get_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt11money_put_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt9codecvt_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt9num_get_c@@GLIBCPP_3.2 +OBJECT:8:_ZSt9num_put_c@@GLIBCPP_3.2 +OBJECT:8:_ZTINSt6locale5facetE@@GLIBCPP_3.2 +OBJECT:8:_ZTISt10__num_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt10ctype_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt10money_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt12codecvt_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt13messages_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt15basic_streambufIcSt11char_traitsIcEE@@GLIBCPP_3.2 +OBJECT:8:_ZTISt8ios_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt9exception@@GLIBCPP_3.2 +OBJECT:8:_ZTISt9time_base@@GLIBCPP_3.2 +OBJECT:8:_ZTISt9type_info@@GLIBCPP_3.2 +OBJECT:8:_ZTIa@@GLIBCPP_3.2 +OBJECT:8:_ZTIb@@GLIBCPP_3.2 +OBJECT:8:_ZTIc@@GLIBCPP_3.2 +OBJECT:8:_ZTId@@GLIBCPP_3.2 +OBJECT:8:_ZTIe@@GLIBCPP_3.2 +OBJECT:8:_ZTIf@@GLIBCPP_3.2 +OBJECT:8:_ZTIh@@GLIBCPP_3.2 +OBJECT:8:_ZTIi@@GLIBCPP_3.2 +OBJECT:8:_ZTIj@@GLIBCPP_3.2 +OBJECT:8:_ZTIl@@GLIBCPP_3.2 +OBJECT:8:_ZTIm@@GLIBCPP_3.2 +OBJECT:8:_ZTIs@@GLIBCPP_3.2 +OBJECT:8:_ZTIt@@GLIBCPP_3.2 +OBJECT:8:_ZTIv@@GLIBCPP_3.2 +OBJECT:8:_ZTIw@@GLIBCPP_3.2 +OBJECT:8:_ZTIx@@GLIBCPP_3.2 +OBJECT:8:_ZTIy@@GLIBCPP_3.2 +OBJECT:8:_ZTTSi@@GLIBCPP_3.2 +OBJECT:8:_ZTTSo@@GLIBCPP_3.2 |