aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/config/rs6000/aix52.h191
-rw-r--r--gcc/config/rs6000/t-aix5252
-rw-r--r--gcc/config/vax/elf.h95
-rw-r--r--gcc/testsuite/README.compat72
-rw-r--r--gcc/testsuite/g++.dg/abi/empty8.C14
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle10.C13
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle11.C10
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle12.C11
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle13.C28
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle14.C12
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle15.C14
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle16.C18
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle17.C11
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle9.C12
-rw-r--r--gcc/testsuite/g++.dg/abi/vbase13.C17
-rw-r--r--gcc/testsuite/g++.dg/abi/vbase14.C6
-rw-r--r--gcc/testsuite/g++.dg/bprob/g++-bprob-1.C234
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield1.h10
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield1_x.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield1_y.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield2.h10
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield2_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield2_x.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/bitfield2_y.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-10.h54
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-10_main.C16
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-10_x.C49
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-10_y.C63
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-21.h54
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-21_main.C16
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-21_x.C49
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-21_y.C63
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-22.h59
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-22_main.C16
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-22_x.C49
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-22_y.C63
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-4.h57
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C16
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C49
-rw-r--r--gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C63
-rw-r--r--gcc/testsuite/g++.dg/compat/break/README11
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield5.h11
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield5_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield5_x.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield5_y.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield7.h3
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield7_main.C16
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield7_x.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/break/bitfield7_y.C11
-rw-r--r--gcc/testsuite/g++.dg/compat/break/empty6.h7
-rw-r--r--gcc/testsuite/g++.dg/compat/break/empty6_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/break/empty6_x.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/break/empty6_y.C9
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase10.h12
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase10_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase10_x.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase10_y.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase11.h12
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase11_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase11_x.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/break/vbase11_y.C11
-rw-r--r--gcc/testsuite/g++.dg/compat/compat.exp137
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor1.h10
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor1_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor1_x.C22
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor1_y.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor2.h22
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor2_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor2_x.C19
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/ctor2_y.C20
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/dtor1.h7
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/dtor1_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/dtor1_x.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/dtor1_y.C18
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter1.h5
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter1_main.C11
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter1_x.C21
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter1_y.C17
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter2_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter2_x.C20
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/filter2_y.C39
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/new1_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/new1_x.C28
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/new1_y.C18
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/nrv1.h5
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/nrv1_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/nrv1_x.C21
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/nrv1_y.C8
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/spec3.h8
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/spec3_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/spec3_x.C9
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/spec3_y.C8
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/template1.h15
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/template1_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/template1_x.C21
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/template1_y.C8
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/unexpected1_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/unexpected1_x.C26
-rw-r--r--gcc/testsuite/g++.dg/compat/eh/unexpected1_y.C21
-rw-r--r--gcc/testsuite/g++.dg/compat/init/array5_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/init/array5_x.C33
-rw-r--r--gcc/testsuite/g++.dg/compat/init/array5_y.C20
-rw-r--r--gcc/testsuite/g++.dg/compat/init/byval1.h6
-rw-r--r--gcc/testsuite/g++.dg/compat/init/byval1_main.C12
-rw-r--r--gcc/testsuite/g++.dg/compat/init/byval1_x.C15
-rw-r--r--gcc/testsuite/g++.dg/compat/init/byval1_y.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/init/dtor1.h30
-rw-r--r--gcc/testsuite/g++.dg/compat/init/dtor1_main.C9
-rw-r--r--gcc/testsuite/g++.dg/compat/init/dtor1_x.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/init/dtor1_y.C18
-rw-r--r--gcc/testsuite/g++.dg/compat/init/elide1.h5
-rw-r--r--gcc/testsuite/g++.dg/compat/init/elide1_main.C25
-rw-r--r--gcc/testsuite/g++.dg/compat/init/elide1_x.C15
-rw-r--r--gcc/testsuite/g++.dg/compat/init/elide1_y.C9
-rw-r--r--gcc/testsuite/g++.dg/compat/init/init-ref2_main.C11
-rw-r--r--gcc/testsuite/g++.dg/compat/init/init-ref2_x.C22
-rw-r--r--gcc/testsuite/g++.dg/compat/init/init-ref2_y.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp/c++98-pedantic.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp/c++98.C10
-rw-r--r--gcc/testsuite/g++.dg/expr/cond1.C28
-rw-r--r--gcc/testsuite/g++.dg/ext/typedef-init.C14
-rw-r--r--gcc/testsuite/g++.dg/ext/vlm1.C13
-rw-r--r--gcc/testsuite/g++.dg/ext/vlm2.C13
-rw-r--r--gcc/testsuite/g++.dg/inherit/override1.C20
-rw-r--r--gcc/testsuite/g++.dg/inherit/thunk1.C41
-rw-r--r--gcc/testsuite/g++.dg/inherit/using3.C19
-rw-r--r--gcc/testsuite/g++.dg/init/array6.C7
-rw-r--r--gcc/testsuite/g++.dg/init/array7.C15
-rw-r--r--gcc/testsuite/g++.dg/init/array8.C12
-rw-r--r--gcc/testsuite/g++.dg/init/brace1.C4
-rw-r--r--gcc/testsuite/g++.dg/init/copy2.C5
-rw-r--r--gcc/testsuite/g++.dg/init/copy3.C16
-rw-r--r--gcc/testsuite/g++.dg/init/ctor1.C57
-rw-r--r--gcc/testsuite/g++.dg/opt/const2.C40
-rw-r--r--gcc/testsuite/g++.dg/other/warning1.C18
-rw-r--r--gcc/testsuite/g++.dg/overload/member2.C41
-rw-r--r--gcc/testsuite/g++.dg/parse/decl-specifier-1.C16
-rw-r--r--gcc/testsuite/g++.dg/parse/friend1.C9
-rw-r--r--gcc/testsuite/g++.dg/parse/stmtexpr3.C8
-rw-r--r--gcc/testsuite/g++.dg/template/cond.C23
-rw-r--r--gcc/testsuite/g++.dg/template/ptrmem3.C22
-rw-r--r--gcc/testsuite/g++.dg/template/ref1.C3
-rw-r--r--gcc/testsuite/g++.dg/template/union1.C29
-rw-r--r--gcc/testsuite/g77.dg/bprob/g77-bprob-1.f330
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020604-1.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20021007-1.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/simd-5.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/simd-5.x6
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021010-1.c21
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021010-2.c37
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021011-1.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20021015-1.c30
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/920710-1.x6
-rw-r--r--gcc/testsuite/gcc.dg/20020523-2.c65
-rw-r--r--gcc/testsuite/gcc.dg/20021006-1.c27
-rw-r--r--gcc/testsuite/gcc.dg/20021014-1.c21
-rw-r--r--gcc/testsuite/gcc.dg/20021018-1.c21
-rw-r--r--gcc/testsuite/gcc.dg/alias-1.c28
-rw-r--r--gcc/testsuite/gcc.dg/cpp/paste13.c9
-rw-r--r--gcc/testsuite/gcc.dg/i386-ssetype-1.c32
-rw-r--r--gcc/testsuite/gcc.dg/i386-ssetype-2.c40
-rw-r--r--gcc/testsuite/gcc.dg/i386-ssetype-3.c32
-rw-r--r--gcc/testsuite/gcc.dg/i386-ssetype-4.c38
-rw-r--r--gcc/testsuite/gcc.dg/i386-ssetype-5.c33
-rw-r--r--gcc/testsuite/gcc.dg/special/mips-abi.exp125
-rw-r--r--gcc/testsuite/gcc.dg/special/mips-abi.s0
-rw-r--r--gcc/testsuite/gcc.dg/tls/nonpic-1.c71
-rw-r--r--gcc/testsuite/gcc.dg/tls/pic-1.c71
-rw-r--r--gcc/testsuite/gcc.dg/typedef-init.c9
-rw-r--r--gcc/testsuite/lib/compat.exp235
-rw-r--r--libjava/gcj/.cvsignore1
-rw-r--r--libjava/include/.cvsignore1
-rw-r--r--libjava/java/awt/dnd/Autoscroll.java67
-rw-r--r--libjava/java/awt/dnd/DragSourceDropEvent.java84
-rw-r--r--libjava/java/awt/dnd/DropTargetAdapter.java100
-rw-r--r--libjava/java/awt/dnd/DropTargetContext.java174
-rw-r--r--libjava/java/awt/dnd/DropTargetDragEvent.java107
-rw-r--r--libjava/java/awt/dnd/DropTargetDropEvent.java132
-rw-r--r--libjava/java/awt/dnd/DropTargetEvent.java56
-rw-r--r--libjava/java/awt/dnd/DropTargetListener.java89
-rw-r--r--libjava/java/awt/dnd/MouseDragGestureRecognizer.java118
-rw-r--r--libjava/java/awt/dnd/peer/DropTargetContextPeer.java45
-rw-r--r--libjava/java/net/Inet4Address.java275
-rw-r--r--libjava/java/net/Inet6Address.java272
-rw-r--r--libjava/java/net/URI.java433
-rw-r--r--libjava/java/nio/Buffer.java42
-rw-r--r--libjava/java/nio/ByteBuffer.java42
-rw-r--r--libjava/java/nio/MappedByteBuffer.java42
-rw-r--r--libjava/java/nio/channels/AlreadyConnectedException.java50
-rw-r--r--libjava/java/nio/channels/ByteChannel.java43
-rw-r--r--libjava/java/nio/channels/Channel.java55
-rw-r--r--libjava/java/nio/channels/ClosedChannelException.java50
-rw-r--r--libjava/java/nio/channels/GatheringByteChannel.java79
-rw-r--r--libjava/java/nio/channels/InterruptibleChannel.java50
-rw-r--r--libjava/java/nio/channels/ReadableByteChannel.java59
-rw-r--r--libjava/java/nio/channels/ScatteringByteChannel.java79
-rw-r--r--libjava/java/nio/channels/WritableByteChannel.java60
-rw-r--r--libjava/java/nio/charset/CharacterCodingException.java50
-rw-r--r--libjava/java/nio/charset/IllegalCharsetNameException.java60
-rw-r--r--libjava/java/nio/charset/MalformedInputException.java69
-rw-r--r--libjava/java/nio/charset/UnmappableCharacterException.java69
-rw-r--r--libjava/java/nio/charset/UnsupportedCharsetException.java60
-rw-r--r--libjava/java/nio/charset/spi/CharsetProvider.java88
-rw-r--r--libjava/sysdep/s390/locks.h77
-rw-r--r--libjava/testsuite/libjava.lang/EvaluationOrder.java22
-rw-r--r--libjava/testsuite/libjava.lang/EvaluationOrder.out3
-rw-r--r--libjava/testsuite/libjava.lang/StaticConstructor.java29
-rw-r--r--libjava/testsuite/libjava.lang/StaticConstructor.out1
-rw-r--r--libstdc++-v3/config/abi/i386-unknown-freebsd4/baseline_symbols.txt2008
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